Connect Conga to Claude: Optimize Quotes, Assets, and Doc Generation
Learn how to connect Conga to Claude using Truto's managed MCP server. Automate CPQ, CLM, and Revenue Lifecycle workflows directly from your AI agent.
If your team needs to connect Conga to Claude to automate quote configuration, manage contract lifecycles, or orchestrate complex revenue operations, you need a Model Context Protocol (MCP) server. This server acts as the translation layer between Claude's natural language tool calls and Conga's extensive REST API ecosystem. You can either build and maintain this infrastructure yourself, or use a managed integration platform like Truto to dynamically generate a secure, authenticated MCP server URL.
If your team uses ChatGPT, check out our guide on /connect-conga-to-chatgpt-automate-cpq-clm-and-revenue-workflows/ or explore our broader architectural overview on /connect-conga-to-ai-agents-orchestrate-orders-esign-and-smart-logic/.
Giving a Large Language Model (LLM) read and write access to a highly structured enterprise application like Conga is an engineering challenge. You must manage token lifecycles securely, map dense, nested JSON schemas to MCP tool definitions, and deal with strict business logic validations. Every time Conga updates a resource definition or deprecates an endpoint, you have to update your server code, redeploy, and test the integration.
This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for Conga, connect it natively to Claude Desktop, and execute complex contract and revenue workflows using natural language.
The Engineering Reality of the Conga API
A custom MCP server is a self-hosted integration layer. While the open MCP standard provides a predictable way for models to discover tools, the reality of implementing it against a B2B platform like Conga is painful. You are not just integrating a simple list of records—you are orchestrating CPQ (Configure, Price, Quote), CLM (Contract Lifecycle Management), and Billing operations across multiple interdependent microservices.
If you decide to build a custom MCP server for Conga, you own the entire API lifecycle. Here are the specific challenges you will face:
Asynchronous Document Generation
Conga relies heavily on asynchronous processing for heavy operations like document generation and contract merges. Endpoints like create_a_conga_documents_generate do not immediately return a completed file. Instead, they return a queued asynchronous job ID and a status. An LLM cannot natively handle polling mechanisms effectively without explicit guidance and state management built into the tools. Your custom server must abstract this asynchronous orchestration or expose granular polling endpoints.
Complex Hierarchical Data Structures Revenue lifecycle data is deeply nested. A Quote contains a Cart, which contains AdHoc Groups, which contain primary and secondary Line Items, which are tied to Price Lists and Attribute Matrices. To give an LLM enough context to build a quote, you must expose tools that allow it to traverse this hierarchy sequentially. If an LLM attempts to finalize a cart before satisfying inclusion/exclusion constraint rules or filling required attributes on a line item, the Conga API will reject the request with complex validation errors.
Strict Schema Adherence for Custom Objects
Enterprise Conga deployments are highly customized. Operations relying on create_a_conga_data_custom_object or updating contract details require exact field types, lookup references, and picklist values. If your MCP tools do not expose accurate, dynamically updated JSON schemas representing the exact state of that tenant's Conga environment, Claude will hallucinate fields and fail standard payload validations.
Generating a Managed MCP Server for Conga
Rather than hand-coding JSON-RPC handlers and manually building JSON Schemas for hundreds of Conga endpoints, Truto generates MCP tools dynamically.
Truto derives these tool definitions from the underlying integration's resource configuration and documentation schemas. A tool only appears in the MCP server if it has a corresponding documentation entry, ensuring the LLM receives high-quality context and strictly typed query and body parameters.
Each MCP server is scoped to a single integrated account. The URL generated by Truto contains a cryptographic token that securely encodes which Conga tenant to interact with, what tools to expose, and when the server expires.
You can generate the MCP server using either the Truto Dashboard or the Truto API.
Method 1: Via the Truto UI
For administrators provisioning agents manually, the UI provides a fast configuration path.
- Log into your Truto workspace and navigate to the integrated account page for your Conga connection.
- Click the MCP Servers tab.
- Click Create MCP Server.
- Configure the server parameters. You can restrict the server to specific HTTP methods (e.g.,
readonly) or specific functional tags (e.g.,clm,cpq). - Click Create and copy the generated secure MCP server URL.
Method 2: Via the Truto API
For developers building programmatic agent orchestration, you can generate MCP servers programmatically. This endpoint checks that the integration is AI-ready, validates the requested filters, and provisions a token backed by distributed key-value storage.
Endpoint: POST /integrated-account/:id/mcp
// Example: Generating a read-only MCP server for Conga CLM operations
const response = await fetch('https://api.truto.one/integrated-account/<CONGA_ACCOUNT_ID>/mcp', {
method: 'POST',
headers: {
'Authorization': 'Bearer <YOUR_TRUTO_API_KEY>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: "Conga CLM Auditing Agent",
config: {
methods: ["read"],
tags: ["clm", "contracts"]
},
expires_at: "2026-12-31T23:59:59Z"
})
});
const mcpServer = await response.json();
console.log(mcpServer.url); // e.g., https://api.truto.one/mcp/a1b2c3d4e5f6...Because Truto dynamically builds tools based on the intersection of the configured methods and tags, the resulting URL is entirely self-contained. The LLM simply queries the URL to list the tools it is permitted to use.
Connecting the MCP Server to Claude
Once you have the managed MCP server URL, you must pass it to your MCP client. All communication happens over HTTP POST via JSON-RPC 2.0.
Method A: Via the Claude App UI
If you are using the Claude desktop app, you can connect the server via the graphical interface.
- Open Claude and navigate to Settings → Integrations → Add MCP Server.
- Name the integration (e.g., "Conga Revenue Lifecycle").
- Paste the URL obtained from Truto (e.g.,
https://api.truto.one/mcp/<token>). - Click Add.
(Note: If you are configuring this for ChatGPT, navigate to Settings → Apps → Advanced settings, toggle Developer mode, and add a new Custom Connector using the exact same URL.)
Method B: Via the Configuration File
For automated deployments or CLI-based agents, you can configure the MCP connection directly via Claude's JSON configuration file. You will use the standard server-sse transport package.
Edit your claude_desktop_config.json (located in ~/Library/Application Support/Claude/ on macOS or %APPDATA%\Claude\ on Windows):
{
"mcpServers": {
"conga_revenue_lifecycle": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sse",
"https://api.truto.one/mcp/<YOUR_SECURE_TOKEN>"
]
}
}
}Restart Claude. The agent will perform the initialization handshake and ingest the Conga schemas immediately.
Hero Tools for Conga Automation
When Claude connects to the Conga MCP server, it executes tools via the proxy API handler layer. This means queries operate directly on Conga's native models, passing through the platform's exact HTTP formatting.
Here are the highest-leverage tools available for orchestrating Conga workflows.
create_a_conga_quote
Generates one or more new quotes from a list of quote definitions. This is the entry point for CPQ operations. The LLM must supply required references like Account and PriceList.
"Generate a new quote for the Acme Corp account using the standard Enterprise Software price list. Set the expected start date to the first of next month."
list_all_conga_cart_items
Retrieves the line items currently inside a Conga cart, including primary items, secondary items, and options. Crucial for the LLM to inspect the state of a configuration before pricing calculations.
"List all the line items currently sitting in cart ID 8f72c-9911-bba. Tell me if the premium support bundle option is included."
create_a_conga_order
Checks out a cart to generate an order and its order line items. The cart does not necessarily need to be Finalized first depending on your environment settings.
"Check out cart ID 8f72c-9911-bba to create a new Draft order. Return the resulting order ID."
create_a_conga_clm_contract
Creates a master contract record in Conga CLM. The LLM must supply the Name and RecordType, while the system automatically defaults the status to Request and assigns the record owner.
"Create a new CLM contract named 'Acme Corp - Q4 Renewal' under the Master Services Agreement record type."
create_a_conga_documents_generate
Initiates the asynchronous document generation process, merging data models with a specified template. Because this returns a job ID rather than a file, the LLM must track the job status.
"Generate the contract document for contract ID 112233 using template ID 998877. Give me the async job ID returned by the API."
conga_clm_contracts_activate
Activates a fully signed contract in Conga CLM. You must pass the contract ID and the array of specific document IDs selected for the final activation.
"Activate contract ID 112233. The final signed document to include is document ID 554433. Delete all other draft versions attached to this record."
To view the complete schema definitions and the entire inventory of supported operations, visit the Conga integration page.
Workflows in Action
Exposing individual REST endpoints is useful, but the real power of an MCP server is allowing the agent to chain multiple Conga operations to solve complex business requests.
Scenario 1: Quote to Cart Orchestration
Sales engineers frequently need to spin up draft configurations for prospects. Claude can navigate the CPQ hierarchy to build the quote and populate the initial cart.
"Create a new quote for Globex Corporation using the standard hardware price list. Then, list the items currently in that quote's cart to confirm it's empty."
sequenceDiagram
participant User
participant Agent as Claude
participant MCP as Truto MCP Server
participant Conga as Conga API
User->>Agent: Create quote for Globex and check cart
Agent->>MCP: Call create_a_conga_quote<br>{"Name": "Globex Hardware Q4", "Account": "id_123", "PriceList": "id_456"}
MCP->>Conga: POST /api/revenue/v1/quotes
Conga-->>MCP: Returns Quote object (Quote ID: 789)
MCP-->>Agent: JSON result
Agent->>MCP: Call list_all_conga_carts_actives<br>{"quote_id": "789"}
MCP->>Conga: GET /api/revenue/v1/carts/active?quoteId=789
Conga-->>MCP: Returns active Cart ID (Cart ID: 999)
MCP-->>Agent: JSON result
Agent->>MCP: Call list_all_conga_cart_items<br>{"cart_id": "999"}
MCP->>Conga: GET /api/revenue/v1/carts/999/items
Conga-->>MCP: Returns empty items array
MCP-->>Agent: JSON result
Agent-->>User: Quote 789 created successfully. The active cart (999) is currently empty.How it works:
- Claude calls
create_a_conga_quote, passing the Account and Price List IDs to construct the header. - The agent retrieves the active cart associated with the newly created quote.
- The agent calls
list_all_conga_cart_itemsto inspect the cart state, confirming it is ready for product configuration.
Scenario 2: Contract Generation and Activation
Legal and deal desk teams process massive volumes of contract renewals. Claude can handle the document generation queuing and final activation sequence.
"Generate the renewal document for contract ID 5511. Once it's generated, activate the contract using that document."
sequenceDiagram
participant User
participant Agent as Claude
participant MCP as Truto MCP Server
participant Conga as Conga CLM API
User->>Agent: Generate and activate renewal contract
Agent->>MCP: Call create_a_conga_documents_generate<br>{"contract_id": "5511", "template_id": "MSA_01"}
MCP->>Conga: POST /api/clm/v1/documents/generate
Conga-->>MCP: Returns Job ID (job_882)
MCP-->>Agent: JSON result
Note over Agent, Conga: Agent interprets success and proceeds<br>(Skipping async polling logic for brevity)
Agent->>MCP: Call conga_clm_contracts_activate<br>{"contract_id": "5511", "document_ids": ["doc_443"]}
MCP->>Conga: POST /api/clm/v1/contracts/5511/activate
Conga-->>MCP: Success 200 OK
MCP-->>Agent: JSON result
Agent-->>User: Document generated and contract 5511 has been successfully activated.How it works:
- Claude calls
create_a_conga_documents_generateto initiate the document creation using a specified template. - After the document is ready (and assuming the agent fetches the resulting document ID), Claude calls
conga_clm_contracts_activate. - The contract is moved to the Activated state, and any unused draft documents are discarded by the Conga backend.
Security and Access Control
Exposing enterprise revenue and legal systems to generative models requires strict governance. Truto implements several access controls at the MCP token level:
- Method Filtering (
config.methods): Restrict the agent's capabilities to specific HTTP methods. Passing["read"]ensures the server will only generate tools forGETandlistendpoints, making it impossible for the model to accidentally finalize an order or delete a clause. - Tag Filtering (
config.tags): Scope the server by functional area. You can restrict the MCP server to only expose resources tagged withclm, hiding all billing or CPQ tools from an agent designed solely for legal analysis. - Time-to-Live (
expires_at): Generate ephemeral MCP servers. Provide an ISO datetime and the underlying key-value token will automatically expire, severing the agent's connection instantly without manual cleanup. - API Token Auth (
require_api_token_auth): Force a second layer of authentication. If set to true, possessing the MCP URL is not enough—the client must also send a valid Truto API token in the Authorization header to invoke tools.
Handling Rate Limits at the Edge
Conga strictly enforces API quotas and rate limits across its tenants. It is critical to understand how this is handled at the network edge.
Factual note on rate limits: Truto does not retry, throttle, or apply automatic backoff on rate limit errors. If you exceed the upstream Conga API limits, Conga returns an HTTP 429 status code. Truto passes that 429 error directly back to the caller immediately.
Truto normalizes the upstream rate limit information into standard IETF headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset). The caller (your LLM framework, AI agent, or custom client logic) is fully responsible for reading these headers, sleeping, and applying exponential backoff.
Driving Enterprise Velocity with MCP
Integrating AI models into deeply specialized B2B workflows like CPQ and CLM shouldn't require building stateful middleware from scratch.
By leveraging dynamic tool generation, strict JSON schema extraction, and secure token management, Truto's MCP server architecture allows your AI agents to interact with Conga exactly as a human operator would—respecting validation rules, navigating hierarchies, and automating the revenue lifecycle securely.
FAQ
- Does Truto automatically handle Conga API rate limits?
- No. Truto passes upstream HTTP 429 rate limit errors directly to the caller, normalizing the response with standard IETF headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset). The calling AI agent or client is responsible for implementing its own retry and backoff logic.
- How do I restrict the Claude agent to read-only operations in Conga?
- When creating the MCP server in Truto, specify the 'methods' configuration array as ['read']. This prevents the server from exposing POST, PUT, PATCH, or DELETE tools to the LLM.
- Can I use Truto's MCP server for Conga with ChatGPT instead of Claude?
- Yes. The JSON-RPC 2.0 endpoint is framework-agnostic. You can add the MCP URL to ChatGPT under Settings > Apps > Advanced settings by enabling Developer mode.