Find services, request single purchases and read budgets. Testnet only.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Lists the services a budget can pay: each one's name, URL, price, chain and whether its output is sample data. With once, lists what Single purchase on superstables.com can buy instead. chain narrows the list to one chain, such as base-sepolia. A price is what the seller asked for last and may have changed. Reads a list and moves no funds.
True for the services Single purchase on superstables.com can buy, without a budget
A chain key, such as "base-sepolia", "moderato" or "devnet"
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http superstables https://mcp.superstables.com
Lists the services a budget can pay: each one's name, URL, price, chain and whether its output is sample data. With once, lists what Single purchase on superstables.com can buy instead. chain narrows the list to one chain, such as base-sepolia. A price is what the seller asked for last and may have changed. Reads a list and moves no funds.
| Argument | Type | Description |
|---|---|---|
| once | boolean | True for the services Single purchase on superstables.com can buy, without a budget |
| chain | string | A chain key, such as "base-sepolia", "moderato" or "devnet" |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"once": {
"type": "boolean",
"description": "True for the services Single purchase on superstables.com can buy, without a budget"
},
"chain": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "A chain key, such as \"base-sepolia\", \"moderato\" or \"devnet\""
}
}
}Search the services this chat can buy through Superstables: each one's id, what it returns, its price in a test token, the chain it is paid on and its inputs. q matches words in the id, name and description; chain matches a chain's id or name. Reads a public catalogue and moves no funds.
| Argument | Type | Description |
|---|---|---|
| q | string | Words to look for, such as "market data" |
| chain | string | A chain id or name, such as "Base Sepolia" or "solana" |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"maxLength": 200,
"description": "Words to look for, such as \"market data\""
},
"chain": {
"type": "string",
"maxLength": 100,
"description": "A chain id or name, such as \"Base Sepolia\" or \"solana\""
}
}
}Reads one budget approval from the approval link the Superstables CLI printed: its kind, state, whether it is final, its steps and their transaction hashes. Pass the whole link. It doesn't return the link's token and moves no funds.
| Argument | Type | Description |
|---|---|---|
| approval_link* | string | The approval link the CLI printed, as printed |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"approval_link"
],
"properties": {
"approval_link": {
"type": "string",
"maxLength": 600,
"minLength": 1,
"description": "The approval link the CLI printed, as printed"
}
}
}One agent's budget as list_my_budgets shows it, read from the chain now, with the owner's last action for it (setup, grant, revoke or fund) and whether that is final. revoke says whether the latest revoke on record is final, in a block but not final yet, or unknown. Treat a revoke as done, and a new grant as usable, only once it is final. Moves no funds.
| Argument | Type | Description |
|---|---|---|
| agent* | string | The id of an agent from list_my_budgets |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"agent"
],
"properties": {
"agent": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The id of an agent from list_my_budgets"
}
}
}The Superstables account connected to this chat: id, nullable name, active wallets (oldest first), client_name, registration and scopes. address and namespace identify the first wallet, or are both null if none. Namespace is eip155 for Ethereum or solana for Solana. Moves no funds.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Reads a purchase this chat asked for: whether the owner approved it, whether it was paid, the service's answer and the receipt. Show the owner the approval link and match code before calling this tool. Then keep calling it with wait_seconds 25 in the same turn while the result says to keep waiting. It also works when called later. A payment whose outcome is not known yet is reported as unknown, never as unpaid.
| Argument | Type | Description |
|---|---|---|
| purchase_id* | string | The purchase_id request_purchase returned |
| wait_seconds | integer | Hold the answer up to this many seconds until the purchase is final. Use 25 while the owner has not approved yet. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"purchase_id"
],
"properties": {
"purchase_id": {
"type": "string",
"maxLength": 100,
"description": "The purchase_id request_purchase returned"
},
"wait_seconds": {
"type": "integer",
"maximum": 25,
"minimum": 0,
"description": "Hold the answer up to this many seconds until the purchase is final. Use 25 while the owner has not approved yet."
}
}
}The agents linked to this Superstables account and their budgets: each agent's id, label, chain, budget, what is left to spend, what it has used (null when not counted), its gas balance and the state of its budget. Reads the chain now and moves no funds.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Gives the price, recipient and chain find_budget_services lists for one of its services, and when that price was last checked. With agent, also says whether what is left of that agent's budget covers it. This is the listed price, not a live one: the Superstables CLI's budget buy reads the seller's live price and recipient, and checks them, before it pays. Any other URL is refused. Doesn't contact the seller, sign transactions or move funds.
| Argument | Type | Description |
|---|---|---|
| url* | string | A service URL exactly as find_budget_services lists it |
| agent | string | The id of an agent from list_my_budgets; its chain is the one checked |
| chain | string | A chain key, when the URL is listed on more than one chain |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "A service URL exactly as find_budget_services lists it"
},
"agent": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The id of an agent from list_my_budgets; its chain is the one checked"
},
"chain": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "A chain key, when the URL is listed on more than one chain"
}
}
}Removes an agent from this account, off chain, once Superstables confirms it has no spending permission. A live Tempo key must be revoked even if its current budget is spent. Moves no funds.
| Argument | Type | Description |
|---|---|---|
| agent* | string | The id of an agent from list_my_budgets |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"agent"
],
"properties": {
"agent": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The id of an agent from list_my_budgets"
}
}
}Gives the owner the link to revoke an agent's budget, for an agent from list_my_budgets. The owner signs the revoke with their wallet on superstables.com. This tool signs and sends nothing and does not revoke the budget.
| Argument | Type | Description |
|---|---|---|
| agent* | string | The id of an agent from list_my_budgets |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"agent"
],
"properties": {
"agent": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The id of an agent from list_my_budgets"
}
}
}Requests approval to buy one service from find_services. Returns an approval link and match code. Any account member may review and sign the payment in a wallet on superstables.com; nothing is paid until then. Use a new operation_id for each purchase. Within this connection, retrying that ID returns the request while it is kept, without creating another. Revoking and reconnecting starts a new connection.
| Argument | Type | Description |
|---|---|---|
| params | object | The service's inputs by name, as find_services lists them |
| recovery | object | Optional. Can only narrow what the account allows for Auto Recovery: rail false means never offer another chain for this request; max_attempts 1 to 3; allowed_networks lists chain ids. It cannot turn anything on. |
| max_amount | string | The most to pay, in the service's token, such as "0.01"; refused above it |
| service_id* | string | The id of a service from find_services |
| operation_id* | string | New for each purchase, the same for a retry of it |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"service_id",
"operation_id"
],
"properties": {
"params": {
"type": "object",
"description": "The service's inputs by name, as find_services lists them",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
},
"recovery": {
"type": "object",
"properties": {
"rail": {
"type": "boolean",
"const": false
},
"services": {
"type": "boolean",
"const": false
},
"preventive": {
"type": "boolean",
"const": false
},
"max_attempts": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 2
},
{
"type": "number",
"const": 3
}
]
},
"allowed_sellers": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 20
},
"allowed_networks": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 20
}
},
"description": "Optional. Can only narrow what the account allows for Auto Recovery: rail false means never offer another chain for this request; max_attempts 1 to 3; allowed_networks lists chain ids. It cannot turn anything on.",
"additionalProperties": false
},
"max_amount": {
"type": "string",
"maxLength": 40,
"description": "The most to pay, in the service's token, such as \"0.01\"; refused above it"
},
"service_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The id of a service from find_services"
},
"operation_id": {
"type": "string",
"pattern": "^[\\x21-\\x7e]{16,255}$",
"description": "New for each purchase, the same for a retry of it"
}
}
}Only for a coding agent on the owner's machine, such as Claude Code or Codex, sending a block that its own Superstables CLI signed and whose agent key and records stay on that machine. A chat app is refused: never ask the owner to paste a signed block into a chat. Without such a block, don't call this tool or build the block yourself. Sends a budget request that the CLI signed with --sign-only to superstables.com for the owner's approval. Pass the CLI's JSON block unchanged: method, path, headers and body. Superstables checks the agent's signature over that exact request, so it can't be changed here, and refuses a request sent twice or after its time window. A request to add an agent must use owner proof version 2. Returns the request id, the owner's approval link, the match code, when the link expires and the wallets of the account the request is on. Nothing changes until the owner approves with their wallet on superstables.com.
| Argument | Type | Description |
|---|---|---|
| body* | string | The request body exactly as the CLI printed it; any change fails the signature |
| path* | string | |
| method* | string | |
| headers* | object | The four agent proof headers, as the CLI printed them |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"method",
"path",
"headers",
"body"
],
"properties": {
"body": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "The request body exactly as the CLI printed it; any change fails the signature"
},
"path": {
"enum": [
"/api/v1/budget/links",
"/api/v1/budget/approvals"
],
"type": "string"
},
"method": {
"type": "string",
"const": "POST"
},
"headers": {
"type": "object",
"required": [
"superstables-agent",
"superstables-agent-timestamp",
"superstables-agent-nonce",
"superstables-agent-signature"
],
"properties": {
"superstables-agent": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"superstables-agent-nonce": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"superstables-agent-signature": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"superstables-agent-timestamp": {
"type": "string",
"maxLength": 20,
"minLength": 1
}
},
"description": "The four agent proof headers, as the CLI printed them",
"additionalProperties": false
}
}
}Follows one budget approval until it is final or wait_seconds pass (at most 25). Pass the approval link the Superstables CLI printed, or the request_id submit_budget_request returned for this account. Returns what get_budget_request returns. A request awaiting the owner doesn't establish whether the owner has approved it, a transaction in a block is not final until the chain says so, and an unknown outcome is not a failure. Moves no funds.
| Argument | Type | Description |
|---|---|---|
| request_id | string | The request_id submit_budget_request returned |
| wait_seconds | integer | Hold the answer up to this many seconds until the request is final. Use 25 while it is not. |
| approval_link | string | The approval link the CLI printed, as printed |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"request_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The request_id submit_budget_request returned"
},
"wait_seconds": {
"type": "integer",
"maximum": 25,
"minimum": 0,
"description": "Hold the answer up to this many seconds until the request is final. Use 25 while it is not."
},
"approval_link": {
"type": "string",
"maxLength": 600,
"minLength": 1,
"description": "The approval link the CLI printed, as printed"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 7, 2026.