Server definition
- Hash
- sha256:1fff62ddd4001f4324d1201e3d43917d54f2531ac3f6ffa0013c715f2314ef82
- What it is
- What a remote MCP server returned when asked what it offers: 18 tools
The blob, as servednamed by its sha256
{
"instructions": "Chainstack MCP server — deploy and manage blockchain nodes, search protocol docs and RPC references, check platform status, get pricing, request testnet funds, and contact the Chainstack team.\n\nKey behaviors:\n- If the user needs a node, DEPLOY IT with create_node. Never send them to the console — they're using MCP to stay in their IDE.\n- When the user asks about a protocol's features or RPC methods, SEARCH DOCS first — Chainstack has per-protocol guides covering configuration, supported methods, and node setup.\n- Some Chainstack features are not available through the API but are self-serve in the console: warp transactions, Solana Geyser, MEV protection, and the unlimited node add-on (flat-fee RPS tiers). If the user asks about these, point them to https://console.chainstack.com.\n- If the user needs testnet funds for development, use request_testnet_funds. The faucet tops the address up to the per-network cap (it doesn't send a fixed amount).\n- If the user wants custom node configuration, offer to submit a request via contact_chainstack. Examples include custom gas caps, transaction pool settings, custom tracers, and private networking — but Chainstack is open to any customization request.\n- For pricing questions — plan fit, overage math, dedicated-node quotes, add-on costs — call get_chainstack_pricing first. It returns live plan tiers, a feature matrix, add-on tables, and a per-chain dedicated-node catalog. Do the arithmetic yourself from that snapshot; don't recite prices from memory.\n- To migrate a project from another RPC provider — QuickNode, Alchemy, or any other — fetch the migration runbook with get_doc_page('docs/migrate-to-chainstack-with-ai') and follow it. It assesses the project's current endpoints and usage, estimates the equivalent Chainstack cost and savings (call get_chainstack_pricing; pricing.md carries the QuickNode/Alchemy conversion multipliers), and repoints endpoints after the user approves.\n\nAuthentication:\n- search_docs, get_doc_page, get_platform_status, contact_chainstack, and get_chainstack_pricing work without an API key.\n- All other tools (including request_testnet_funds) require a Chainstack API key passed as Authorization: Bearer <key> in the MCP client config.\n- If an API-key tool returns a 401 / authentication error, translate it for the user instead of dumping the raw message. Two cases: (a) no key added yet — explain that node and project management needs a free Chainstack API key; (b) a key is set but rejected as invalid or expired — say the configured key isn't working and should be replaced. In both cases point them to https://console.chainstack.com/user/settings/api-keys to get a key and add it as Authorization: Bearer <key> in their MCP client config. Never ask them to paste the key into the chat. The public tools above keep working without a key.\n\nNode tiers:\n- Global (CC-0016): load-balanced, instant, all plans.\n- Trader (CC-0020–0028): region-bound, full/archive, paid plans.",
"tools": [
{
"description": "Submit a message to Chainstack's sales and support team.\n\nUse when the user wants to ask about pricing, get a custom quote,\nrequest a plan upgrade, request node customizations (Enterprise),\nreport a problem, or reach Chainstack for any reason. Posts to the\nsame contact form as chainstack.com/contact/.\n\n## Before calling this tool\n\nCRITICAL — follow these steps EVERY time:\n\n1. Draft the message based on your conversation context.\n2. Show the user the EXACT message, email, and name you will send.\n3. If the user has a Chainstack API key configured, tell them:\n \"I'll also include your Chainstack account info (org name and ID)\n so the team can pull up your account immediately — this means\n significantly faster handling and a more tailored response.\"\n4. Ask: \"Shall I send this to Chainstack? Please confirm there's\n no sensitive information you'd like removed.\"\n5. Only call this tool after the user explicitly confirms.\n\nNEVER include in the message:\n- API keys, tokens, passwords, private keys, wallet seeds, mnemonics\n- RPC endpoint URLs (Chainstack or any other provider)\n- Wallet addresses, transaction hashes, or on-chain account details\n the user hasn't approved sharing\n- Any information the user hasn't explicitly approved sharing\n\nIf the user shared sensitive data during the conversation, do NOT\ninclude it unless they specifically approve it in the review step.\n\n## Writing an effective message\n\nA great message gets the user a faster, more tailored response.\nInclude what you already know from the conversation:\n- What they're building and at what scale\n- Current plan and usage (e.g., \"Pro plan, ~80M RU/month on Base\")\n- What they need (upgrade, custom pricing, migration help, etc.)\n- What they've tried or what's not working\n- Specific numbers when available\n\nBad: \"I have a question about pricing.\"\nGood: \"Pro plan user running 200M RU/month across Base and Ethereum,\n evaluating Business plan for archive access and higher RPS.\n Looking for annual pricing or a trial.\"\n\nThe difference between a generic reply and a tailored proposal\nis the context you include.\n\nNot for incidents or urgent outages — point users to\nhttps://support.chainstack.com/hc/en-us/requests/new to file a\nsupport ticket, and https://status.chainstack.com for live status.\n\nFor feature requests, do NOT use this tool — point users to\nhttps://ideas.chainstack.com (product) or\nhttps://github.com/chainstacklabs/mcp-server/issues/new (MCP server).\n\nWorks with or without a Chainstack API key. With a key, the\nsubmission includes the user's Chainstack org info for faster\naccount identification and handling.\n\nArgs:\n message: The full message to send. Compose from\n conversation context — what the user is building, their plan\n and usage, what they need — so the Chainstack team can respond\n with a tailored answer instead of a generic one.\n category: Routing hint. One of:\n - sales — pricing, quotes, plan upgrades, custom terms.\n - support — errors, bugs, how-to, \"something isn't working\".\n - general — everything else.\n Case-insensitive. Unknown values fall back to \"general\".\n Default: \"general\".\n email: User's contact email. Required. Ask the user if you don't\n already have it.\n name: User's name (full name is fine, will be split on first space).\n Required. Ask the user if you don't have it on hand.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"category": {
"default": "general",
"type": "string"
},
"email": {
"type": "string"
},
"message": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"message",
"email",
"name"
],
"type": "object"
},
"name": "contact_chainstack",
"outputSchema": {
"properties": {
"alternative_channels": {
"items": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"type": "array"
},
"estimated_response_time": {
"type": "string"
},
"lead_source": {
"type": "string"
},
"submitted": {
"type": "boolean"
}
},
"required": [
"submitted",
"lead_source",
"estimated_response_time",
"alternative_channels"
],
"type": "object"
}
},
{
"description": "Deploy a new blockchain node. Call get_deployment_options first for valid IDs.\n\nTrader nodes are region-bound (e.g., London, Ashburn, Singapore). Always confirm\nthe region with the user before deploying — region cannot be changed after deployment.\n\nArgs:\n name: Node name.\n project: Project ID from list_projects (e.g., PR-123-456-789).\n blockchain: Blockchain ID from get_deployment_options (e.g., BC-000-000-008).\n cloud: Cloud ID from get_deployment_options (e.g., CC-0016 for Global, CC-0020 for London).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"blockchain": {
"type": "string"
},
"cloud": {
"type": "string"
},
"name": {
"type": "string"
},
"project": {
"type": "string"
}
},
"required": [
"name",
"project",
"blockchain",
"cloud"
],
"type": "object"
},
"name": "create_node",
"outputSchema": {
"properties": {
"api_namespaces": {
"items": {
"type": "string"
},
"type": "array"
},
"beacon_endpoint": {
"type": "string"
},
"blockchain": {
"type": "string"
},
"cloud": {
"type": "string"
},
"https_endpoint": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"network": {
"type": "string"
},
"node_tier": {
"type": "string"
},
"project": {
"type": "string"
},
"protocol": {
"type": "string"
},
"region": {
"type": "string"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"wss_endpoint": {
"type": "string"
}
},
"required": [
"id",
"name",
"protocol",
"network",
"status",
"node_tier",
"project",
"region"
],
"type": "object"
}
},
{
"description": "Create a new project.\n\nArgs:\n name: Project name.\n description: Optional description.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"description": {
"default": "",
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "create_project",
"outputSchema": {
"properties": {
"created_at": {
"type": "string"
},
"creator": {
"additionalProperties": true,
"type": "object"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"networks": {
"type": "integer"
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name"
],
"type": "object"
}
},
{
"description": "Delete a node (irreversible).\n\nArgs:\n node_id: Node ID (e.g., ND-123-456-789).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"node_id": {
"type": "string"
}
},
"required": [
"node_id"
],
"type": "object"
},
"name": "delete_node",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Delete a project (irreversible).\n\nArgs:\n project_id: Project ID (e.g., PR-123-456-789).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"project_id": {
"type": "string"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "delete_project",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Fetch Chainstack's public pricing and return a normalized snapshot.\n\nUse this to answer pricing questions before quoting the user: plan fit,\noverage math, per-chain dedicated-node costs, and add-on pricing\n(Unlimited Node flat-fee tiers, Yellowstone gRPC streams, Warp\ntransactions, dedicated-node base rates).\n\nThis tool returns the menu, not the bill — the calling agent does the\narithmetic. All prices are list prices in USD; disclaimers are surfaced\nin the `disclaimers` field.\n\nDesign: we pass pricing.md through as raw markdown. Marketing owns that\nfile and its structure changes freely; parsing it server-side would\ncouple us to heading text and table column names we don't control. The\nLLM reads markdown natively, so handing the raw text to the agent keeps\nus correct regardless of how the page is restructured.\n\npricing_current.json is parsed into `dedicated_catalog` because it has\na stable engineering-owned schema, and the catalog benefits from\nfiltering (to user-orderable SKUs only), unit conversion (cents → USD,\nmilli-cores → cores), and region humanization (via `region_legend`).\n\nPer-method RU billing rules are NOT in these sources. Plan-level rates\n(Full Node = 1 RU, Archive Node = 2 RU) are in the markdown, but some\nEVM archive-state methods (eth_getBalance, eth_call, eth_getProof,\neth_getStorageAt, eth_getCode, eth_getTransactionCount, eth_callMany,\neth_createAccessList) and all debug_* / trace_* methods are billed at\n2 RU on a full node when called against old blocks. For method-level\ndetail, call `search_docs` with \"request units\" or\n`get_doc_page(\"docs/request-units\")`.\n\nNo API key required — sources are fully public. Each call fetches both\nsources fresh (no caching), so a stale result isn't possible.\n\nReturns:\n A dict with fields:\n - `pricing_markdown`: raw markdown from chainstack.com/pricing.md.\n Read this for plan tiers, feature matrix, add-on pricing, support\n levels, PAYG details, and provider comparisons.\n - `dedicated_catalog`: user-orderable per-chain dedicated-node SKUs\n with flavor, regions (as infra slugs like \"sgp1\"), hourly and\n monthly prices in USD. Already filtered to the ~87 orderable SKUs\n and unit-converted.\n - `region_legend`: slug → human city name map covering every region\n slug that appears in `dedicated_catalog`. Use `region_legend[slug]`\n to translate for display; `regions` keeps the slug as the canonical\n identifier.\n - `disclaimers`: list-price caveats (Enterprise \"from\" pricing, etc.).\n - `sources`: URL + ok/error per source; the JSON source carries its\n own `updated_at`.\n - `warnings`: populated when a source is unreachable or the JSON\n parser failed. The tool still returns best-effort results.\n - `fetched_at`: UTC timestamp of this call.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_chainstack_pricing",
"outputSchema": {
"properties": {
"dedicated_catalog": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
]
},
"disclaimers": {
"items": {
"type": "string"
},
"type": "array"
},
"fetched_at": {
"type": "string"
},
"pricing_markdown": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"region_legend": {
"anyOf": [
{
"additionalProperties": {
"type": "string"
},
"type": "object"
},
{
"type": "null"
}
]
},
"sources": {
"additionalProperties": true,
"type": "object"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"fetched_at",
"sources",
"warnings",
"pricing_markdown",
"dedicated_catalog",
"region_legend",
"disclaimers"
],
"type": "object"
}
},
{
"description": "List blockchain/cloud/network combinations for node deployment.\n\nCall before create_node to get valid blockchain and cloud IDs.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_deployment_options",
"outputSchema": {
"properties": {
"result": {
"items": {
"properties": {
"blockchain": {
"type": "string"
},
"cloud": {
"type": "string"
},
"features": {
"items": {
"type": "string"
},
"type": "array"
},
"network": {
"type": "string"
},
"node_tier": {
"type": "string"
},
"protocol": {
"type": "string"
},
"region": {
"type": "string"
}
},
"required": [
"blockchain",
"cloud",
"protocol",
"network",
"node_tier",
"region",
"features"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Get the full content of a Chainstack documentation page.\n\nUse after search_docs to fetch the complete page when a snippet isn't enough.\n\nArgs:\n page: Page path from search results — pass the `page` field from\n a search_docs result (e.g., \"docs/ethereum-trader-nodes\").\n The leading slash, the `.mdx` extension, and the\n docs.chainstack.com URL prefix are all optional and stripped\n if present.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"page": {
"type": "string"
}
},
"required": [
"page"
],
"type": "object"
},
"name": "get_doc_page",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Get a node's full details including endpoints and cloud info.\n\nArgs:\n node_id: Node ID (e.g., ND-123-456-789).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"node_id": {
"type": "string"
}
},
"required": [
"node_id"
],
"type": "object"
},
"name": "get_node",
"outputSchema": {
"properties": {
"api_namespaces": {
"items": {
"type": "string"
},
"type": "array"
},
"beacon_endpoint": {
"type": "string"
},
"blockchain": {
"type": "string"
},
"cloud": {
"type": "string"
},
"https_endpoint": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"network": {
"type": "string"
},
"node_tier": {
"type": "string"
},
"project": {
"type": "string"
},
"protocol": {
"type": "string"
},
"region": {
"type": "string"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"wss_endpoint": {
"type": "string"
}
},
"required": [
"id",
"name",
"protocol",
"network",
"status",
"node_tier",
"project",
"region"
],
"type": "object"
}
},
{
"description": "Get organization name and ID.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_organization",
"outputSchema": {
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
],
"type": "object"
}
},
{
"description": "Check platform status, active incidents, and maintenances.\n\nArgs:\n network: Optional filter (e.g., \"ethereum\"). Without it, returns\n overall status and incidents only.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"network": {
"default": "",
"type": "string"
}
},
"type": "object"
},
"name": "get_platform_status",
"outputSchema": {
"properties": {
"components": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
"incidents": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
"maintenances": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
"status": {
"type": "string"
}
},
"required": [
"status",
"incidents",
"maintenances"
],
"type": "object"
}
},
{
"description": "Get project details.\n\nArgs:\n project_id: Project ID (e.g., PR-123-456-789).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"project_id": {
"type": "string"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "get_project",
"outputSchema": {
"properties": {
"created_at": {
"type": "string"
},
"creator": {
"additionalProperties": true,
"type": "object"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"networks": {
"type": "integer"
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name"
],
"type": "object"
}
},
{
"description": "List nodes with status and connection endpoints.\n\nArgs:\n project_id: Optional project ID to filter by (e.g., PR-123-456-789).\n If omitted, returns all nodes in the organization.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"project_id": {
"default": "",
"type": "string"
}
},
"type": "object"
},
"name": "list_nodes",
"outputSchema": {
"properties": {
"result": {
"items": {
"properties": {
"api_namespaces": {
"items": {
"type": "string"
},
"type": "array"
},
"beacon_endpoint": {
"type": "string"
},
"blockchain": {
"type": "string"
},
"cloud": {
"type": "string"
},
"https_endpoint": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"network": {
"type": "string"
},
"node_tier": {
"type": "string"
},
"project": {
"type": "string"
},
"protocol": {
"type": "string"
},
"region": {
"type": "string"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"wss_endpoint": {
"type": "string"
}
},
"required": [
"id",
"name",
"protocol",
"network",
"status",
"node_tier",
"project",
"region"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "List all projects. Projects are containers for nodes.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_projects",
"outputSchema": {
"properties": {
"result": {
"items": {
"properties": {
"created_at": {
"type": "string"
},
"creator": {
"additionalProperties": true,
"type": "object"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"networks": {
"type": "integer"
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Top up a testnet address from Chainstack's faucet.\n\nThe faucet does not send a fixed amount — it tops the address up to the\nper-network maximum (e.g. 0.5 ETH for sepolia). If the address already\nsits above the cap, the call fails with an insufficient-balance error.\nDescribe the behavior to the user as \"top up\" not \"give\", and surface\nthe returned `amountSent` so they see the actual delta.\n\nSupported networks and their native assets:\n - sepolia, hoodi — Ethereum testnets (ETH)\n - base — Base Sepolia (ETH)\n - amoy — Polygon Amoy (POL)\n - bnb-testnet — BNB Smart Chain testnet (BNB)\n - zksync-testnet — zkSync Sepolia (ETH)\n - robinhood — Robinhood Chain testnet (ETH)\n - hyperevm — HyperEVM testnet (HYPE)\n - plasma — Plasma testnet (XPL)\n - monad — Monad testnet (MON)\n - ton — TON testnet (TON)\n - solana — Solana devnet (SOL)\n\nPer-address cooldown applies after each successful drip. On cooldown\nthe faucet returns a `nextFaucetAvailable` timestamp (ISO 8601) that\nthis tool surfaces in the error message.\n\nRequires a Chainstack API key. The key is also the rate-limiting\nidentity — the faucet tracks usage per organization. Get a key at\nhttps://console.chainstack.com/user/settings/api-keys and add it as\n`Authorization: Bearer <key>` in the MCP client config. Never ask the\nuser to paste their API key in chat.\n\nArgs:\n network: Canonical testnet id (the schema `enum` advertises the set).\n Case-insensitive; common aliases are normalized to the canonical id.\n address: Destination address. EVM hex address for EVM networks,\n a TON address for `ton`, or a base58 Solana public key for\n `solana`. Validated server-side — format errors surface as 400.\n\nReturns:\n On success: `{network, amountSent, transaction}`. `amountSent`\n is a string in the network's native unit (not wei/lamports).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"address": {
"type": "string"
},
"network": {
"description": "Testnet to fund. Must be one of the canonical ids in `enum`. Common aliases (ethereum-sepolia, base-sepolia, solana-devnet, ...) are accepted and normalized to the canonical id.",
"enum": [
"sepolia",
"hoodi",
"base",
"amoy",
"bnb-testnet",
"zksync-testnet",
"robinhood",
"hyperevm",
"plasma",
"monad",
"ton",
"solana"
],
"examples": [
"sepolia",
"base",
"solana"
],
"type": "string"
}
},
"required": [
"network",
"address"
],
"type": "object"
},
"name": "request_testnet_funds",
"outputSchema": {
"properties": {
"amountSent": {
"type": "string"
},
"network": {
"type": "string"
},
"transaction": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "string"
}
]
}
},
"required": [
"network"
],
"type": "object"
}
},
{
"description": "Search Chainstack docs — blockchain RPC methods, node infrastructure, Web3 APIs, deployment guides, and code examples.\n\nArgs:\n query: Search query (e.g., \"deploy ethereum node\", \"eth_call\").",
"inputSchema": {
"additionalProperties": false,
"properties": {
"query": {
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_docs",
"outputSchema": {
"properties": {
"result": {
"items": {
"properties": {
"link": {
"type": "string"
},
"page": {
"type": "string"
},
"snippet": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"title",
"link",
"snippet"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Rename a node.\n\nArgs:\n node_id: Node ID (e.g., ND-123-456-789).\n name: New name.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"node_id": {
"type": "string"
}
},
"required": [
"node_id",
"name"
],
"type": "object"
},
"name": "update_node",
"outputSchema": {
"properties": {
"api_namespaces": {
"items": {
"type": "string"
},
"type": "array"
},
"beacon_endpoint": {
"type": "string"
},
"blockchain": {
"type": "string"
},
"cloud": {
"type": "string"
},
"https_endpoint": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"network": {
"type": "string"
},
"node_tier": {
"type": "string"
},
"project": {
"type": "string"
},
"protocol": {
"type": "string"
},
"region": {
"type": "string"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"wss_endpoint": {
"type": "string"
}
},
"required": [
"id",
"name",
"protocol",
"network",
"status",
"node_tier",
"project",
"region"
],
"type": "object"
}
},
{
"description": "Update a project's name or description.\n\nArgs:\n project_id: Project ID (e.g., PR-123-456-789).\n name: New name.\n description: New description.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"project_id": {
"type": "string"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "update_project",
"outputSchema": {
"properties": {
"created_at": {
"type": "string"
},
"creator": {
"additionalProperties": true,
"type": "object"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"networks": {
"type": "integer"
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:1fff62ddd4001f4324d1201e3d43917d54f2531ac3f6ffa0013c715f2314ef82 | sha256sum