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

SettingValue
TransportStreamable 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
AuthenticationOAuth. 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 slash

Some agents treat .../mcp/ as a different server from .../mcp and 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.

AgentStatus
Claude (web, desktop)Supported — guide
Claude CodeSupported — guide
ChatGPTSupported — guide
OpenAI CodexSupported — guide
Visual Studio Code (GitHub Copilot)Supported — guide
ZedSupported
GooseSupported
CursorSupported, see Agents that ask for a client ID
ClineSupported, see Agents that ask for a client ID
Gemini CLISupported, see Agents that ask for a client ID
KiroSupported, see Agents that ask for a client ID
OpenCodeSupported, see Agents that ask for a client ID
Windsurf / DevinUnder review
Google AntigravityUnder review
Visual StudioUnder 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.

Did this page help you?