Ternary MCP for other agents
Claude, ChatGPT and VS Code have their own setup guides: Connect Claude, Connect ChatGPT/Codex, Connect Visual Studio Code.
Every other agent follows the same pattern. Your agent asks for a remote MCP server; you give it the Ternary URL; it opens a Ternary sign-in page. Each agent words its own setup differently and changes it often, so follow your agent's own MCP documentation for where to paste the URL, and use the details below for what to paste.
What to give your agent
| Setting | Value |
|---|---|
| Transport | Streamable HTTP (not SSE) |
Server URL, US (my.ternary.app) | https://core-api.ternary.app/mcp |
Server URL, EU (my.eu.ternary.app) | https://core-api.eu.ternary.app/mcp |
| Authentication | OAuth. Leave any client ID or secret field empty, unless your agent requires a client ID. See Agents that ask for a client ID. |
Use the URL for the region where your Ternary tenant lives. US and EU are separate: a US account cannot sign in against the EU URL.
Type the URL exactly, with no trailing slashSome agents treat
.../mcp/as a different server from.../mcpand sign-in then fails with "Unknown client".
Your agent then opens a Ternary sign-in page. Log in with your normal Ternary credentials and approve the access request. Every tool runs as you, with exactly your permissions. All of them read your data except Create report, which saves a report when you ask.
Supported agents
For security, Ternary only accepts sign-in from AI tools it recognises. An agent that is not approved is refused even with the correct URL and a valid account.
| Agent | Status |
|---|---|
| Claude (web, desktop) | Supported — guide |
| Claude Code | Supported — guide |
| ChatGPT | Supported — guide |
| OpenAI Codex | Supported — guide |
| Visual Studio Code (GitHub Copilot) | Supported — guide |
| Zed | Supported |
| Goose | Supported |
| Cursor | Supported, see Agents that ask for a client ID |
| Cline | Supported, see Agents that ask for a client ID |
| Gemini CLI | Supported, see Agents that ask for a client ID |
| Kiro | Supported, see Agents that ask for a client ID |
| OpenCode | Supported, see Agents that ask for a client ID |
| Windsurf / Devin | Under review |
| Google Antigravity | Under review |
| Visual Studio | Under review |
Under-review agents are being assessed for compatibility. Some tools cannot connect because they lack browser sign-in support, requiring only API keys or bearer tokens instead.
Some tools cannot connect at all today, because they do not support the sign-in method Ternary requires. That is a limitation of the tool, not of your account. If your agent offers only an API key or bearer-token field and no browser sign-in, it falls into this group.
If your agent is not listed
Contact Ternary support and tell us which agent you want to use. Adding one is usually a small change on our side, and knowing which tools customers actually use is how we prioritize. Include the agent's name and version, and a link to its MCP documentation if you have it.
Agents That Ask for a Client ID
Some agents cannot identify themselves to Ternary's sign-in and ask you for an OAuth
client ID. For all of them the client ID is this URL, exactly as written, with no secret:
https://core-api.ternary.app/oauth/client-metadata.json
EU accounts use this same URL. Only the server URL changes by region, never the
client ID. It reads like a US address because a client ID in this scheme is a name, not
an endpoint your agent connects to, and both regions sign in through the same Ternary
identity service. Pairing the EU server URL with this client ID is correct and expected.
Sign-in then proceeds as for any other agent. Because these agents cannot identify
themselves, the approval page names the requester Your IDE coding agent and shows the
local address the agent listens on. Approve it only if you started the connection
yourself.
Cursor
Desktop Cursor 3.12.10 or newer. Cursor web and Cursor cloud agents are not supported.
Add to ~/.cursor/mcp.json, or to .cursor/mcp.json in a project:
{
"mcpServers": {
"ternary": {
"url": "https://core-api.ternary.app/mcp",
"auth": {
"CLIENT_ID": "https://core-api.ternary.app/oauth/client-metadata.json"
}
}
}
}Cline
Cline 4.1.7 or newer. Open MCP Servers, then Configure MCP Servers, and add:
{
"mcpServers": {
"ternary": {
"type": "streamableHttp",
"url": "https://core-api.ternary.app/mcp",
"oauthClient": {
"clientId": "https://core-api.ternary.app/oauth/client-metadata.json"
}
}
}
}Gemini CLI
Add to ~/.gemini/settings.json. The key is httpUrl, not url:
{
"mcpServers": {
"ternary": {
"httpUrl": "https://core-api.ternary.app/mcp",
"oauth": {
"enabled": true,
"clientId": "https://core-api.ternary.app/oauth/client-metadata.json"
}
}
}
}If Gemini CLI does not open the sign-in page by itself, run /mcp auth ternary.
Kiro
Kiro reads the same file for the IDE and the CLI: .kiro/settings/mcp.json in a
workspace, or ~/.kiro/settings/mcp.json for your user. Kiro takes the client ID in its
own clientMetadataUrl field:
{
"mcpServers": {
"ternary": {
"url": "https://core-api.ternary.app/mcp",
"oauth": {
"clientMetadataUrl": "https://core-api.ternary.app/oauth/client-metadata.json"
}
}
}
}Do not set clientId as well. If your organisation restricts Kiro to an MCP registry,
ask your Kiro admin to add this entry to it:
{
"servers": [
{
"server": {
"name": "ternary",
"title": "Ternary",
"description": "Ternary cloud cost data.",
"version": "1.0.0",
"remotes": [{ "type": "streamable-http", "url": "https://core-api.ternary.app/mcp" }]
}
}
]
}OpenCode
Add to opencode.json, then run opencode mcp auth ternary:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ternary": {
"type": "remote",
"url": "https://core-api.ternary.app/mcp",
"oauth": {
"clientId": "https://core-api.ternary.app/oauth/client-metadata.json"
}
}
}
}For an EU tenant, replace core-api.ternary.app/mcp with core-api.eu.ternary.app/mcp
in every snippet above. The client ID URL stays as it is.
Troubleshooting
- "Unknown client", or sign-in is refused — the agent is not on the supported list above, or the URL has a typo or a trailing slash.
- Sign-in fails or loops — your email must already be a Ternary user in that region. The connection does not create accounts.
- "No tenants found" — your Ternary user has no explicit role on any tenant. Ask your Ternary admin to grant you one.
- The agent connects but never uses Ternary — check its Ternary tools are enabled for the current conversation, and name Ternary in your question.
Updated 4 days ago
