Connect your AI agent
Truvo’s MCP server is at:
Add it to your AI app as a remote MCP server. The first time the app connects, it opens Truvo’s sign-in page in your browser. There’s no key to copy. A business that builds Truvo into its own product uses a key instead; see Use an API key instead and Keys and environments.
Add the server
- Claude (claude.ai and the desktop app): go to Customize › Connectors, select + Add, then Add custom connector. Paste the URL, and under Authentication choose Sign in now. Claude’s guide
- ChatGPT (on the web): go to chatgpt.com/plugins, select the plus button, then Add custom MCP server, and paste the URL as the server URL. OpenAI’s guide
- Claude Code: add the server, then run
/mcpand finish sign-in in your browser. Claude Code’s guide
- Cursor: add the server to
~/.cursor/mcp.json. Cursor’s guide
- VS Code: add the server to
.vscode/mcp.json. The first time you use it, VS Code opens your browser to sign in. VS Code’s guide
Sign in
Enter your email, then the code Truvo emails you. To get the code by text instead, select Use your phone instead; text codes go to US mobile numbers only. If you don’t have a Truvo account, this creates one. Then check the app’s name and select Allow access.
Every call to the server needs a signed-in account or a key. A call with neither gets 401.
Tools
start_quote_request records your consent to be contacted by phone, text, and email. Truvo runs no credit check. For auto, carriers can order their own credit-based insurance score.
Quote requests you start while signed in belong to your Truvo account. Your app can list them and read them by ID from any chat.
Disconnect
Remove the Truvo connector in the AI app, or open Connected apps on truvo.com and select Disconnect. The app’s next call gets 401, and the app asks you to connect again.
Use an API key instead
A coding agent can build your Truvo integration, run sandbox quotes while it works, and read the errors that come back. Give it agents.md, one Markdown file that explains the whole API, and access to the API through the Truvo MCP server or over HTTP. Every setup in this section uses a sandbox key, which never reads a live record or causes a live effect.
Keep the key out of the prompt
Create a sandbox key on the Developer sandbox page of the portal. It starts with trv_sandbox_. Keep it in an environment variable or your agent’s private environment file, never in a prompt, a chat, an MCP config, or a file you commit. Every setup below reads it from TRUVO_API_KEY:
Start your agent from the same shell, or set the variable where your editor can read it, and the agent can call the API without the key appearing in the conversation.
Give your agent agents.md
agents.md covers the whole API in one file. Point your agent at its Markdown copy before it writes any code. This prompt works, and it holds no secret:
Every page on this site has a Markdown copy too. Add .md to its URL, or send Accept: text/markdown. /llms.txt lists each page in the sidebar with a one-line summary, and the Copy page button at the top of each page copies it as Markdown for a chat.
Connect over MCP
The Truvo MCP server gives your agent the quote operations as tools. Each tool runs the same operation as its HTTP route, with the same key, rules, and errors.
Claude Code
Add the server to .mcp.json at the root of your project. Claude Code fills in ${TRUVO_API_KEY} from your environment when it connects, so the file holds no secret and you can commit it:
Claude Code asks you to approve a project server the first time it loads one. After that, run /mcp in a session to see the Truvo tools.
Cursor
To add Truvo to Cursor from a link, paste this one into your browser’s address bar. Cursor asks you to confirm, and the server it adds reads your key from TRUVO_API_KEY:
To add the server yourself, put it in .cursor/mcp.json in your project, or in ~/.cursor/mcp.json to use it in every project:
Cursor resolves ${env:TRUVO_API_KEY} from its own environment, so set the variable in your shell profile or your system environment, then restart Cursor.
Codex
Add the server to ~/.codex/config.toml. The Codex CLI and the IDE extension share this file:
Codex sends the value of TRUVO_API_KEY as the bearer token. Run codex mcp list to check that truvo is there.
VS Code
Add the server to .vscode/mcp.json. VS Code asks for the key the first time the server starts and stores it securely, so the key stays out of the file:
OpenClaw
OpenClaw reads MCP servers from ~/.openclaw/openclaw.json on the machine that runs your Gateway. Keep the key out of that file and put it in ~/.openclaw/.env, one of the files OpenClaw reads environment variables from:
Then add Truvo under mcp.servers. OpenClaw fills in ${TRUVO_API_KEY} from its environment:
The Gateway watches the file and applies the change. To check that it can reach Truvo and list the tools, run:
Hermes Agent
Hermes reads MCP servers from ~/.hermes/config.yaml. Put the key in ~/.hermes/.env, so the config file holds only a reference to it:
Then add Truvo under mcp_servers:
Start a new session, or run /reload-mcp in the one you have open. Hermes adds mcp__truvo__ to the front of each tool name, so start_quote_request shows up as mcp__truvo__start_quote_request.
Other MCP clients
Any client that speaks Streamable HTTP can connect to https://api.truvo.com/v1/mcp. A client that can send a header sends your key in the Authorization header as a bearer token. A client that connects only through OAuth signs in with a Truvo account; see Add the server.
To check the connection without a client, list the tools with curl:
The answer is an event stream with one message event, whose data line is the JSON-RPC answer. It lists the tools that your key can call. A GET to the endpoint gets 405, because the server keeps no session.
Differences from HTTP
MCP tools lists each tool. Each tool’s page has its inputs, its result, its HTTP route, and the callers that see it.
A few things work differently from HTTP:
request_keyis the MCP form of theIdempotency-Keyheader. Send a new random UUID for each new quote, and resend the same value only when you retry the same call. With a partner key, it shares the replay scope with HTTP: a key you used over HTTP replays over MCP, and the other way round, for at least 24 hours. A platform key and a call without a key replay a random UUID too, for 24 hours; see Read handles.- The
start_quote_requestinput listsapplicationas an object with no fields, because each line has its own. Build the application from therequired_facts_schemathatget_capabilitiesreturns for the line. Truvo checks it against the same schema asPOST /v1/quote-requests, so a missing fact getsneeds_information, and a wrong value getsinvalid_input. - A refused call comes back as a tool error that carries the same error envelope as HTTP, with its own
request_id. Errors lists the codes. - While Truvo accepts feedback, the server instructions ask the agent to offer the person a feedback report after a quote request finishes, when the person seems frustrated, or when a tool gives it trouble it can’t fix. The agent shows the person the report and calls
send_feedbackonly if they agree, at most once per conversation unless they ask. - The server always answers in the current revision of the contract, and it doesn’t need the
Truvo-Versionheader. Code that needs a stable contract should call the HTTP API and send the header on every request to an API operation. See Versions and changes.
Read handles and the quote disclosure
The setups above use a partner key, which owns every request it makes and reads each one by ID. A platform key and a call without a key work differently on the MCP server.
Read handles
A platform key is a key that Truvo issues to an AI platform. It names the platform, not the person in the chat, and it works only on the MCP server. The HTTP routes answer it with 403 wrong_key_kind. Each request a platform key makes gets its own read handle, and only that handle reads the request.
start_quote_requestreturns the handle inread_handle, with its expiry inread_handle_expires_at. Truvo keeps only a one-way digest of the handle, so save it.get_quote_requestandget_quotetake the handle inread_handle. A request ID without its handle reads nothing.- A handle reads its request and that request’s quotes for 24 hours. After that, request quotes again to get a new handle.
- A retry of
start_quote_requestwithin 24 hours of the first call, with the same randomrequest_keyand the same input, returns the same request and the same handle. It counts as a read and starts no second quote. It gets the same authorization checks as a new request. Truvo doesn’t validate its input again, and capacity limits and outage refusals don’t apply to it. A retry that arrives while the first call is still being handled can get409conflictwith the retry actionretry. Send it again a few seconds later with the samerequest_key. The whole input must match: the facts, the line, and the disclosure fields. The samerequest_keywith different input starts a new request instead of the409that a partner key gets. Only a random version 4 UUID replays, as Retry safely with request keys explains. Any other key, such as1, a readable label, or a sample UUID from documentation, starts a new request on every call. After 24 hours, the same key starts a new request. - A platform key can use
get_capabilities,start_quote_request,get_quote_request, andget_quotewhen quoting is available, andsend_feedbackwhile Truvo accepts feedback. It doesn’t getlist_quote_requests,list_api_requests, or the webhook tools.
Calls without a key
The MCP server has a mode for assistants that call without a key, which Truvo turns on separately. While it’s off, a call without a key gets 401 authentication_failed. In this mode, the caller reads by handle, as a platform key does.
A call without a key that carries an Origin header, or the Sec-Fetch-Site header that browsers add, gets 403 forbidden. Send it from a server or an MCP host, without an Origin header.
The quote disclosure
Every caller states the person’s consent the same way, with an API key or without a key. Truvo’s versioned quote disclosure takes the place of a consent receipt:
get_capabilitiesreturnsquote_disclosure, with the disclosuretext, itsversion, itssha256, and theprivacy_notice_url.- The assistant shows the person the text as written and asks whether they agree.
- Only if they agree,
start_quote_requestsends theversioninquote_disclosure_versionandtrueinquote_disclosure_accepted. A missing or outdated version getsinvalid_input, and so does any value other thantrue. - When Truvo accepts the request, it records the person’s consent itself. The answer names each receipt, with its
receipt_idand thedisclosure_version:quote_consent,contact_consent, and, for auto,credit_consent.
The person’s yes covers the quote, contact by phone, text, and email, and for auto a credit check. So every request needs the person’s email and a US phone number. The quote disclosure in agents.md lists the fields a request can’t send, and each refusal.
Use the API over HTTP
An agent can also call Truvo over HTTP, with the key in TRUVO_API_KEY, by sending the requests the Quickstart shows with curl or your HTTP client. The code your agent writes calls Truvo from your product the same way.
To keep a coding agent on the rules in every session, paste this block into the instructions file it reads, such as AGENTS.md:
Privacy, terms, and support
- Privacy
- Terms
- Support: support@truvo.com