Connect Claude and other MCP clients
Tarka's MCP server gives an AI assistant the Control API as tools. You sign in with your Tarka account and approve the connection, with no key or token to paste.
One URL, signed in through your browser
Add the server to your client by its URL. The client registers itself and opens Tarka in your browser, where you sign in with your console account and approve the connection.
https://tarka.rest/mcpA remote Streamable HTTP server. There is nothing to install.
OAuthYour Tarka console account. A new account can connect once Tarka has approved it.
provisioning:readYou choose read only, or read and write, when you approve the connection. Your roles, product approvals, and quotas still apply.
Add Tarka as a custom connector
Custom connectors work on every Claude plan; the Free plan allows one.
- 01Add the connector
In Claude, open Customize › Connectors and select Add custom connector. Enter
https://tarka.rest/mcpand select Add. Leave the OAuth client ID and secret empty. If Claude asks how to sign in, choose Sign in now, and for the OAuth client choose Register automatically. - 02Sign in to Tarka
Select Connect if Claude hasn't started the sign-in. Tarka opens in your browser: sign in with your console account, check the client and its callback address, choose Read only or Read and write, and allow the connection. Choose read and write if you want Claude to create and manage resources.
- 03Use it in a chat
In a chat, open + › Connectors and turn on Tarka. Then ask, for example: “Which Tarka workspaces am I in, and which products are approved?”
An Owner adds the connector for the organization under Organization settings › Connectors: select Add, then Custom. Each member then finds it under Customize › Connectors and selects Connect to sign in with their own Tarka account.
Add the server from your terminal
Run this in your terminal, not inside a Claude Code session. --scope user makes Tarka available in all your projects.
claude mcp addclaude mcp add --transport http --scope user tarka https://tarka.rest/mcpThen start claude, run /mcp, select tarka, and choose Authenticate. Your browser opens the same Tarka consent screen. A connector you added in Claude also loads in Claude Code when you sign in with the same Claude account.
Any client with OAuth and dynamic registration
A client needs remote Streamable HTTP and OAuth with dynamic client registration. It needs no client secret.
| Requirement | Tarka's server |
|---|---|
| Discovery | https://tarka.rest/.well-known/oauth-protected-resource/mcp |
| Registration | Dynamic, with no client secret |
| Proof key | PKCE with S256, required |
| Resource | resource=https://tarka.rest/mcp when authorizing and when exchanging the code |
| Callback | HTTPS, or HTTP on a loopback address for local clients. It must match the registered address exactly and have no fragment. |
| Where requests come from | Desktop, command-line, and server-side clients. Requests from web pages on other sites are refused. |
Read access, or read and write
A connection reaches every workspace you can reach, with your current roles, product approvals, and quotas.
| Access | Scope | What the client can do |
|---|---|---|
| Read | provisioning:read | Call every tool whose name starts with tarka_get_, tarka_list_, or tarka_read_: your account, workspaces, models, resources, usage, and the configuration and credentials you can view. |
| Read and write | provisioning:read provisioning:write | Also create, update, and delete resources, run code in sandboxes, create and revoke keys and credentials, and change organizations and quota policy. Changes can incur charges. |
The consent screen starts with the access your client asks for, and you can change it to read only, or to read and write. If your client asks only to read, choose Read and write when you connect it to let it create and manage resources. A read-only connection that tries a change gets HTTP 403 with insufficient_scope; to change a connection's access, disconnect it on the MCP connections page and connect again.
Control API tools
ProvisioningService and SandboxService methods are exposed as tools named tarka_ plus the method name in snake case: ListModels becomes tarka_list_models. Tools run the same handlers and checks as REST and gRPC. UpdateSpendLimits and UploadAgentHostSecrets are excluded: change spending limits and upload secret values yourself in the console or through the direct Control API.
For host secrets, the assistant prepares a handoff with tarka_prepare_agent_host_secrets. Open its authenticated console link and upload your file there. The assistant checks metadata with tarka_get_agent_host_secrets, then passes secrets_bundle_id when creating the host. It receives key names and status, never the uploaded values. Do not put plaintext secrets or registry PATs into MCP arguments.
tarka_get_current_userReturns your organization IDs and product approvals. Most other tools take an org_id.
protobuf JSONSnake-case fields, and unknown fields are rejected. Money (cost_microcents, $0.00000001 each) and other 64-bit integers are decimal strings.
isErrorA failed call returns isError with the gRPC status code. Check it before reading structuredContent.
tools/call{
"name": "tarka_get_current_user",
"arguments": {}
}| Ask your assistant | Tool it uses |
|---|---|
| Which workspaces am I in, and which products are approved? | tarka_get_current_user |
| Which models can I call, and at what price? | tarka_list_models |
| How much have we used this month? | tarka_get_usage_summary |
| What is running in my workspace, and is it ready? | tarka_list_provisioned_resources |
| Which API keys are active? | tarka_list_api_keys |
With write access, tarka_bootstrap_current_user creates a first workspace for an account that has none. Tools that take an idempotency key behave as they do in the API: reuse a key only to retry the same request.
See and end your connections
MCP connections, also in the console menu, lists each connected client with its access (Read only, or Read and write) and the date it expires. Disconnect ends a connection at once: its access and refresh tokens stop working.
| Limit | Value |
|---|---|
| Consent screen | 10 minutes to approve the request |
| Authorization code | 60 seconds, and it works once |
| Access token | 15 minutes; your client refreshes it |
| Connection | 30 days, then connect again |
| Client registration | 90 days, then your client registers again |
| Active connections | 32 per account |
What a connection can reach
MCP tokens work only at https://tarka.rest/mcp. They cannot call the REST or gRPC Control API or the Inference API, and your console session never reaches the client.
Each call checks again that your account is approved and in good standing, along with your organization roles and product approvals.
Reusing an old authorization code or refresh token revokes the whole connection.
The client's developer supplies the name on the consent screen, so check its callback address. Some reads return sensitive values, such as an Agent Host's gateway pairing details. With write access, an assistant can do what you can: start billable resources, create keys, and change quota policy.