MCP server
Give Claude, Cursor, VS Code or any MCP client the Platform as tools: call the models, find a model or GPU, check the balance, create keys, and prepare orders for you to pay.
| URL | https://platform.tenzro.xyz/api/mcp |
| Transport | Streamable HTTP (stateless) |
| Auth | Optional Authorization: Bearer tzl_… — without it only catalogue tools work |
| Tools | 36 |
Create a key on the API keys page. Tick inference for an assistant that calls the models, read for one that can look at your account, and manage if it should also create orders and keys. Model calls through MCP are paid like API calls: from your credits, or covered by the rental or subscription the key belongs to.
Connect a client
Claude Code
claude mcp add --transport http tenzro-labs https://platform.tenzro.xyz/api/mcp \
--header "Authorization: Bearer tzl_..."Cursor
~/.cursor/mcp.json or .cursor/mcp.json in a project:
{
"mcpServers": {
"tenzro-labs": {
"url": "https://platform.tenzro.xyz/api/mcp",
"headers": {
"Authorization": "Bearer tzl_..."
}
}
}
}VS Code
.vscode/mcp.json — prompts for the key instead of storing it in the file:
{
"inputs": [
{
"type": "promptString",
"id": "tenzro-key",
"description": "Tenzro Labs API key",
"password": true
}
],
"servers": {
"tenzro-labs": {
"type": "http",
"url": "https://platform.tenzro.xyz/api/mcp",
"headers": {
"Authorization": "Bearer ${input:tenzro-key}"
}
}
}
}Claude Desktop and other stdio-only clients
Bridge to the HTTP server with mcp-remote in claude_desktop_config.json:
{
"mcpServers": {
"tenzro-labs": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://platform.tenzro.xyz/api/mcp",
"--header",
"Authorization:${TENZRO_AUTH}"
],
"env": {
"TENZRO_AUTH": "Bearer tzl_..."
}
}
}
}Test it
npx @modelcontextprotocol/inspector # then connect to https://platform.tenzro.xyz/api/mcp with the header aboveTry the models
The chat, embed and forecast tools call the same models as the API. Try them here as your account.
No model is serving right now, so there is nothing to try yet.
Tools
Models
inferenceCall the models. Need a key with inference.
Send messages to a Tenzro Labs language model and get its reply. Use list_models for model ids (modality text or text+image).
- model: string — Language model id, e.g. qwen3.5-4b
- messages: object[] — The conversation, oldest first
- max_tokens?: number — Longest reply, up to the model's limit
- machine?: string — Where to run the model; defaults to tenzro-partner-cluster
Turn texts into unit-length vectors with a Tenzro Labs embedding model, for search and similarity.
- model: string — Embedding model id, e.g. qwen3-embedding-0.6b
- input: string[] — Texts to embed
- dimensions?: number — A shorter vector, where the model supports it
- input_type?: document | query — query for search queries; document otherwise
- machine?: string — Where to run the model; defaults to tenzro-partner-cluster
Forecast the next values of a series with a Tenzro Labs time-series model, with quantile bands.
- model: string — Forecasting model id, e.g. timesfm-2.5-200m
- history: number[] — The series, oldest first
- horizon: number — Steps ahead
- quantiles?: number[] — Levels, e.g. [0.1, 0.5, 0.9]
- machine?: string — Where to run the model; defaults to tenzro-partner-cluster
Catalogue
no keyWork without a key.
All models in the Tenzro Labs catalogue with pricing in Tenzro Labs credits, context length, availability and hosting machines. Pricing is free on testnet.
One model's details plus its current route order (which machines requests go to, best first).
- model_id: string — Model id
The machines Tenzro Labs runs, with hardware, live health, serverless models, and rent terms and monthly plans where a machine offers them. Filter to narrow the list.
- service?: serverless | rent | subscribe — Only machines offering this
- region?: string — Region, e.g. Europe
- gpu?: boolean — true: GPU machines only; false: CPU-only
- operator?: string — Operator id
- model?: string — Only machines serving this model id
One machine's hardware, health, rent rates and availability, and plans.
- machine_id: string — Machine id
Who runs the machines, and which machines they run: operators on the Tenzro Network that partner with Tenzro Labs.
One operator's profile and machines.
- operator_id: string — Operator id
Which machines a request for a model would be routed to right now, in priority order.
- model_id: string — Model id
- region?: string — Preferred region
Credit packages and offers, if any: price paid and credit received. Empty when none are offered.
Whether card (Stripe) and stablecoin (Bridge) payments are available, and accepted chains and tokens.
Price credits, a package, a rental or a plan without creating an order. Use before create_order to confirm cost with the user.
- type: credits | package | rental | subscription — What to buy
- amount_usd?: number — credits: the fiat amount to pay, in whole US dollars. Refused while Tenzro Labs has not set the credit price
- machine_id?: string — credits: pin to a machine. rental/subscription: the machine
- gift?: boolean — credits/package: issue a redeemable ticket code instead of crediting the account
- package_id?: string — package: package id from list_packages
- gpu?: number — rental: GPUs
- cpu_cores?: number — rental: vCPUs
- memory_gb?: number — rental: memory in GB
- storage_gb?: number — rental: storage in GB
- hours?: number — rental: term in hours
- plan_id?: string — subscription: plan id from the machine's plans
- renew_subscription_id?: string — subscription: renew this stablecoin plan for 30 more days
Account
readNeed a key with read.
The account this key belongs to, and the key's permissions and scope.
Total credits, split into credit usable anywhere and credit pinned to specific machines.
Recent credit additions, plan credit and usage charges, newest first.
- limit?: number
Credit and gift tickets this account bought, with codes and redemption status.
Orders with status and payment method, newest first.
- limit?: number
An order's current status, checking with the payment processor if it is still settling.
- order_id: string — Order id
API keys on the account with permissions, scope and last use. Secrets are never returned.
Monthly plans on the account with status, renewal and period end.
Rentals on the account with resources and term.
The account's did:tenzro:human identity and wallet (rooted in the user's passkeys): state, DID, address, devices, and whether sending is enabled.
Agents the user delegated with their passkey: status, DID, wallet, the limits the owner approved, and any approval still waiting. Collects outstanding approvals first.
One agent, including what it has spent today and in total. Collects an outstanding approval first, so call it after the user says they approved.
- agent_id: string — Agent id
Actions
manageNeed a key with manage.
Propose an agent under the user's identity. Returns { approve_url, agent }. The USER must open approve_url and approve with their passkey on the account site, where they may also adjust the settings; you cannot approve for them, so relay the link. Once they have, get_agent shows it active with the settings they approved. Refused with no_serving_nodes while the network has none.
- name: string — 1 to 64 lowercase letters, digits, dots, dashes or underscores
- capabilities?: inference | payments[] — Default: [inference]
- max_transaction_tnzo?: string — Network cap on any one payment, TNZO, e.g. "1.5"
- max_daily_tnzo?: string — Network cap per day, TNZO
- daily_limit_credits?: number — Tenzro Labs credits this agent may spend per UTC day
- total_limit_credits?: number — Tenzro Labs credits this agent may spend in total
- expires_in_days?: number — The delegation ends after this many days
Propose new limits or settings for an active agent; fields left out keep the values the owner approved last. Returns { approve_url, agent }. Nothing changes until the USER approves at approve_url with their passkey; relay the link.
- agent_id: string — Agent id
- capabilities?: inference | payments[] — Default: [inference]
- max_transaction_tnzo?: string — Network cap on any one payment, TNZO, e.g. "1.5"
- max_daily_tnzo?: string — Network cap per day, TNZO
- daily_limit_credits?: number — Tenzro Labs credits this agent may spend per UTC day
- total_limit_credits?: number — Tenzro Labs credits this agent may spend in total
- expires_in_days?: number — The delegation ends after this many days
An inference API key that identifies an active agent; usage counts against the limits its owner approved. The secret is shown once.
- agent_id: string — Agent id
- name?: string
- machine_id?: string — Pin to one machine
Propose revoking an agent. Returns { approve_url, agent }. Once the USER approves at approve_url with their passkey, its identity is revoked on the network and its API keys stop working; relay the link.
- agent_id: string — Agent id
Create an unpaid order for credits, a package, a rental or a plan. Returns the order and a pay_url a person can open. Confirm the amount with the user first (see quote).
- type: credits | package | rental | subscription — What to buy
- amount_usd?: number — credits: the fiat amount to pay, in whole US dollars. Refused while Tenzro Labs has not set the credit price
- machine_id?: string — credits: pin to a machine. rental/subscription: the machine
- gift?: boolean — credits/package: issue a redeemable ticket code instead of crediting the account
- package_id?: string — package: package id from list_packages
- gpu?: number — rental: GPUs
- cpu_cores?: number — rental: vCPUs
- memory_gb?: number — rental: memory in GB
- storage_gb?: number — rental: storage in GB
- hours?: number — rental: term in hours
- plan_id?: string — subscription: plan id from the machine's plans
- renew_subscription_id?: string — subscription: renew this stablecoin plan for 30 more days
Start payment. card: returns a Stripe Checkout URL for the user to open. stablecoin: returns the chain, token, exact amount and deposit address for the user to send from their wallet. Never pays by itself.
- order_id: string — Order id
- method: card | stablecoin
- chain?: string — stablecoin: e.g. base, ethereum, solana
- token?: string — stablecoin: usdc or usdt
Redeem a ticket code (TZ-XXXX-XXXX-XXXX-XXXX) into this account's balance.
- code: string
Create an API key. The secret is shown once in the result — tell the user to store it. A key can only grant permissions the calling key holds.
- name?: string
- permissions?: inference | read | manage[] — Default: [inference]
- machine_id?: string — Restrict the key to one machine
- subscription_id?: string — Tie the key to a plan
- rental_id?: string — Tie the key to a rental
Revoke an API key immediately. Requests using it start failing.
- key_id: string — Key id
Stop a card plan from renewing. It stays active until the end of the current period.
- subscription_id: string — Subscription id
Undo a pending cancellation on a card plan.
- subscription_id: string — Subscription id
Try asking
- “Which machines are online right now, and which models is each one serving?”
- “Which models take image input, and how long is their context?”
- “How much credit do I have left, and what did I spend it on this week?”
- “Embed these three passages with Qwen3-Embedding and tell me which two are closest.”
- “Create an inference key pinned to the Tenzro Partner Cluster.”
Safety
pay_order returns a Stripe Checkout link or a deposit address; you finish the payment. Tools that change things are marked as non-read-only so clients ask before running them, and revoke_api_key is marked destructive. Give an assistant a read-only key if it only needs to look.