Chainstack
Server Details
Deploy and manage blockchain nodes across 70+ protocols, search docs, request testnet funds.
- Status
- Healthy
- Uptime
- 99.6% over 54 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- chainstacklabs/mcp-server
- GitHub Stars
- 4
- Server Listing
- Chainstack MCP Server
TDQS
Scored across 18 tools
Each tool targets a distinct resource or action: node CRUD (create/get/list/update/delete), project CRUD, docs (search/get_doc_page), pricing, status, support, and faucet. The only mild overlap is between contact_chainstack, get_chainstack_pricing, and get_platform_status, but their descriptions clearly delineate sales/support vs. price fetching vs. incident status. No two tools appear interchangeable.
Nearly all tools follow a clean verb_noun snake_case pattern (create_node, get_node, list_nodes, update_node, delete_node, create_project, get_doc_page, search_docs). The few outliers (contact_chainstack, get_chainstack_pricing, request_testnet_funds) still conform to the same style. No convention mixing.
18 tools sit near the upper end of the ideal band but each maps to a real capability (node/project lifecycle, docs, pricing, status, support, faucet). Nothing feels redundant, though a couple of doc- and pricing-related tools could conceivably be consolidated. Reasonable for a multi-domain platform server.
Node and project resources both have near-full CRUD coverage (create/get/list/update/delete), plus docs, pricing, status, support, and faucet operations. Some lifecycle gaps exist (e.g., no node restart/resize or project deletion confirmation flow), but core workflows are covered with no obvious dead ends.
Available Tools
18 toolscontact_chainstackADestructiveInspect
Submit a message to Chainstack's sales and support team.
Use when the user wants to ask about pricing, get a custom quote, request a plan upgrade, request node customizations (Enterprise), report a problem, or reach Chainstack for any reason. Posts to the same contact form as chainstack.com/contact/.
Before calling this tool
CRITICAL — follow these steps EVERY time:
Draft the message based on your conversation context.
Show the user the EXACT message, email, and name you will send.
If the user has a Chainstack API key configured, tell them: "I'll also include your Chainstack account info (org name and ID) so the team can pull up your account immediately — this means significantly faster handling and a more tailored response."
Ask: "Shall I send this to Chainstack? Please confirm there's no sensitive information you'd like removed."
Only call this tool after the user explicitly confirms.
NEVER include in the message:
API keys, tokens, passwords, private keys, wallet seeds, mnemonics
RPC endpoint URLs (Chainstack or any other provider)
Wallet addresses, transaction hashes, or on-chain account details the user hasn't approved sharing
Any information the user hasn't explicitly approved sharing
If the user shared sensitive data during the conversation, do NOT include it unless they specifically approve it in the review step.
Writing an effective message
A great message gets the user a faster, more tailored response. Include what you already know from the conversation:
What they're building and at what scale
Current plan and usage (e.g., "Pro plan, ~80M RU/month on Base")
What they need (upgrade, custom pricing, migration help, etc.)
What they've tried or what's not working
Specific numbers when available
Bad: "I have a question about pricing." Good: "Pro plan user running 200M RU/month across Base and Ethereum, evaluating Business plan for archive access and higher RPS. Looking for annual pricing or a trial."
The difference between a generic reply and a tailored proposal is the context you include.
Not for incidents or urgent outages — point users to https://support.chainstack.com/hc/en-us/requests/new to file a support ticket, and https://status.chainstack.com for live status.
For feature requests, do NOT use this tool — point users to https://ideas.chainstack.com (product) or https://github.com/chainstacklabs/mcp-server/issues/new (MCP server).
Works with or without a Chainstack API key. With a key, the submission includes the user's Chainstack org info for faster account identification and handling.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | User's name (full name is fine, will be split on first space). Required. Ask the user if you don't have it on hand. | |
| Yes | User's contact email. Required. Ask the user if you don't already have it. | ||
| message | Yes | The full message to send. Compose from conversation context — what the user is building, their plan and usage, what they need — so the Chainstack team can respond with a tailored answer instead of a generic one. | |
| category | No | Routing hint. One of: - sales — pricing, quotes, plan upgrades, custom terms. - support — errors, bugs, how-to, "something isn't working". - general — everything else. Case-insensitive. Unknown values fall back to "general". Default: "general". | general |
Output Schema
| Name | Required | Description |
|---|---|---|
| submitted | Yes | |
| lead_source | Yes | |
| alternative_channels | Yes | |
| estimated_response_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (openWorldHint, destructiveHint) are supplemented with rich behavioral context the structured fields cannot carry: a mandatory confirm-with-user workflow, an explicit prohibition list on sensitive data, the API-key behavior affecting org info inclusion, and the fact that submissions hit the same backend as chainstack.com/contact/. Nothing here contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long but front-loaded and sectioned with headers so an agent can parse it quickly. Every section (prerequisites, sensitive data, message quality, routing exclusions) carries operational weight, though the confirmation steps and the 'writing an effective message' rationale repeat the privacy rationale slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. For a 4-param, open-world mutation tool with privacy implications, the description covers safety, prerequisites, alternatives, and message composition thoroughly — nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond it: guidance on composing the message for a tailored response, the fact that name is split on first space, and routing semantics for category (sales vs support vs general). This is genuinely additive rather than restated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Submit a message to Chainstack's sales and support team') and enumerates the trigger scenarios (pricing, quotes, upgrades, customizations, problem reports). No sibling tool does anything comparable, so an agent can distinguish it immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names alternatives and exclusions: incidents/outages route to the support ticket URL and status page, feature requests route to ideas.chainstack.com or GitHub. The 'when to use' list is concrete and the negative cases are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_nodeAInspect
Deploy a new blockchain node. Call get_deployment_options first for valid IDs.
Trader nodes are region-bound (e.g., London, Ashburn, Singapore). Always confirm the region with the user before deploying — region cannot be changed after deployment.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Node name. | |
| cloud | Yes | Cloud ID from get_deployment_options (e.g., CC-0016 for Global, CC-0020 for London). | |
| project | Yes | Project ID from list_projects (e.g., PR-123-456-789). | |
| blockchain | Yes | Blockchain ID from get_deployment_options (e.g., BC-000-000-008). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| cloud | No | |
| region | Yes | |
| status | Yes | |
| network | Yes | |
| project | Yes | |
| protocol | Yes | |
| node_tier | Yes | |
| blockchain | No | |
| wss_endpoint | No | |
| api_namespaces | No | |
| https_endpoint | No | |
| beacon_endpoint | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so safety is covered. The description adds genuinely new behavior: trader nodes are region-bound and region is immutable after deployment, which the agent cannot learn from the schema or annotations. It stops short of stating permissions or quota limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences: action, prerequisite, then the region constraint. Every sentence carries unique information and the most consequential warning (immutable region) lands last for emphasis without padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and all four required params are documented. The description covers the prerequisite tool chain and the irreversible region choice; only finer caveats (permissions, deploy duration or async behavior) are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each of the four parameters already documenting its source (cloud/blockchain from get_deployment_options, project from list_projects). The description only reinforces ordering ('first') for those sources, adding marginal meaning beyond the schema — the 3 baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource: 'Deploy a new blockchain node.' Clear mutation intent that separates it from sibling lifecycle tools like update_node, delete_node, and list_nodes, so an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete prerequisite ('Call get_deployment_options first for valid IDs') and a workflow rule ('Always confirm the region with the user before deploying'). It does not state when to prefer update_node over create_node, but the required-input routing is explicit and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectCInspect
Create a new project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Project name. | |
| description | No | Optional description. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| type | No | |
| creator | No | |
| networks | No | |
| created_at | No | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the write behavior is covered structurally. The description adds nothing beyond that, omitting whether the project name must be unique, what is created by default, or what side effects occur on the platform.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence is appropriately sized and front-loaded, but it is under-specified rather than genuinely concise: no sentence conveys any information the tool name did not already convey.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and parameters are fully documented in the schema. However, for a mutating creation tool with an open-world hint, the absence of any context about prerequisites, duplicates, or resulting state leaves the definition thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (name, description) are documented in the schema, so the baseline of 3 applies. The description adds no extra meaning such as naming rules, length limits, or the effect of the optional description field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb and resource ('Create a new project'), so the basic intent is clear, but it is essentially a restatement of the tool name with no additional specificity and no differentiation from siblings such as create_node.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus create_node or other creation tools, no mention of prerequisites (e.g., an existing organization, naming constraints), and no exclusions. The agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_nodeBDestructiveInspect
Delete a node (irreversible).
| Name | Required | Description | Default |
|---|---|---|---|
| node_id | Yes | Node ID (e.g., ND-123-456-789). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the safety profile is covered by structured data. The description's '(irreversible)' corroborates but adds only marginal context beyond destructiveHint, and it says nothing about cascade effects on dependent resources, auth requirements, or whether the node must be stopped first.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with zero filler — the verb, resource, and key risk are all in the first four words. It is efficiently structured, though arguably undersized for a destructive operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations carry the safety profile. However, for a destructive node deletion an agent would benefit from knowing about side effects on linked projects/endpoints or idempotency, none of which the description provides.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single node_id parameter is already documented in the schema with an example ID format (ND-123-456-789). The description adds no additional parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb ('Delete') with a specific resource ('a node'), making the operation unambiguous and easily separable from create_node, get_node, and update_node. It stops short of explicitly naming any sibling or scoping condition, so it lands at a clear-but-undifferentiated 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no warnings about confirming intent before a destructive call. The '(irreversible)' parenthetical hints at caution but is a property of the operation, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_projectBDestructiveInspect
Delete a project (irreversible).
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID (e.g., PR-123-456-789). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint=true annotation already declares the write/destroy profile, so the bar is lower. 'Irreversible' reinforces rather than adds new information, and there is no mention of cascade effects (e.g., whether child nodes are also removed) or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five words, front-loaded with the verb and resource, and the parenthetical caveat is placed where it will be read. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover the safety profile, so the description need not explain return values. However, for a destructive multi-entity operation it omits cascade scope and permission requirements, leaving meaningful gaps for a high-impact tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, with the format example (PR-123-456-789) documented in the schema itself. The description adds nothing beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a project'), which is unambiguous against siblings like delete_node or update_project. It does not, however, differentiate scope or side effects versus those siblings, so it lands just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisite or permission hints, and no routing to alternatives such as update_project or archival flows. The agent must infer everything about when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_chainstack_pricingARead-onlyInspect
Fetch Chainstack's public pricing and return a normalized snapshot.
Use this to answer pricing questions before quoting the user: plan fit, overage math, per-chain dedicated-node costs, and add-on pricing (Unlimited Node flat-fee tiers, Yellowstone gRPC streams, Warp transactions, dedicated-node base rates).
This tool returns the menu, not the bill — the calling agent does the
arithmetic. All prices are list prices in USD; disclaimers are surfaced
in the disclaimers field.
Design: we pass pricing.md through as raw markdown. Marketing owns that file and its structure changes freely; parsing it server-side would couple us to heading text and table column names we don't control. The LLM reads markdown natively, so handing the raw text to the agent keeps us correct regardless of how the page is restructured.
pricing_current.json is parsed into dedicated_catalog because it has
a stable engineering-owned schema, and the catalog benefits from
filtering (to user-orderable SKUs only), unit conversion (cents → USD,
milli-cores → cores), and region humanization (via region_legend).
Per-method RU billing rules are NOT in these sources. Plan-level rates
(Full Node = 1 RU, Archive Node = 2 RU) are in the markdown, but some
EVM archive-state methods (eth_getBalance, eth_call, eth_getProof,
eth_getStorageAt, eth_getCode, eth_getTransactionCount, eth_callMany,
eth_createAccessList) and all debug_* / trace_* methods are billed at
2 RU on a full node when called against old blocks. For method-level
detail, call search_docs with "request units" or
get_doc_page("docs/request-units").
No API key required — sources are fully public. Each call fetches both sources fresh (no caching), so a stale result isn't possible.
Returns:
A dict with fields:
- pricing_markdown: raw markdown from chainstack.com/pricing.md.
Read this for plan tiers, feature matrix, add-on pricing, support
levels, PAYG details, and provider comparisons.
- dedicated_catalog: user-orderable per-chain dedicated-node SKUs
with flavor, regions (as infra slugs like "sgp1"), hourly and
monthly prices in USD. Already filtered to the ~87 orderable SKUs
and unit-converted.
- region_legend: slug → human city name map covering every region
slug that appears in dedicated_catalog. Use region_legend[slug]
to translate for display; regions keeps the slug as the canonical
identifier.
- disclaimers: list-price caveats (Enterprise "from" pricing, etc.).
- sources: URL + ok/error per source; the JSON source carries its
own updated_at.
- warnings: populated when a source is unreachable or the JSON
parser failed. The tool still returns best-effort results.
- fetched_at: UTC timestamp of this call.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| sources | Yes | |
| warnings | Yes | |
| fetched_at | Yes | |
| disclaimers | Yes | |
| region_legend | Yes | |
| pricing_markdown | Yes | |
| dedicated_catalog | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, openWorldHint, destructiveHint), the description discloses the tool's freshness (fetches both sources fresh, no caching), lack of auth requirements, and best-effort behavior with warnings on source failures. This exceeds what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured, front-loaded with purpose and usage, then design rationale and return field semantics. Every sentence adds value, but the length is substantial; no fluff, but could be more compressed for a zero-param tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and a rich output, the description is complete. It covers what the tool returns, how to interpret the fields (e.g., region_legend[slug]), error handling, and points to alternatives for RU rates. Even with an output schema, the semantic detail here is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the description doesn't need to add parameter meaning. The baseline for 0 params is 4. The description includes relevant context (no API key required, fresh fetch) but nothing parameter-specific.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Fetch Chainstack's public pricing and return a normalized snapshot.' It distinguishes from siblings by naming specific pricing use cases (plan fit, overage math, per-chain dedicated-node costs) and explicitly contrasts with search_docs for method-level billing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use this to answer pricing questions before quoting the user' and provides exclusions: 'Per-method RU billing rules are NOT in these sources' with direct alternatives (search_docs, get_doc_page). Also clarifies the division of labor ('this tool returns the menu, not the bill').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deployment_optionsARead-onlyInspect
List blockchain/cloud/network combinations for node deployment.
Call before create_node to get valid blockchain and cloud IDs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the context that the tool returns valid IDs for create_node, which is useful but minimal additional behavioral insight beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and the second sentence delivers essential usage context. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool with a defined output schema and clear annotations, the description adequately covers purpose and usage. The 'call before create_node' guidance completes the picture, making the tool self-explanatory within its context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so schema coverage is trivially 100%. Per the baseline for 0 params, the description need not add parameter details. Its mention of 'valid blockchain and cloud IDs' provides relevant context for the tool's output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('List') and a precise resource ('blockchain/cloud/network combinations for node deployment'). It distinguishes itself from sibling tools like list_nodes and get_chainstack_pricing by focusing on deployment options rather than existing nodes or pricing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly directs users to 'Call before create_node to get valid blockchain and cloud IDs', providing a clear when-to-use instruction. It lacks explicit when-not or alternative tool guidance, but the prerequisite relationship is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_doc_pageARead-onlyInspect
Get the full content of a Chainstack documentation page.
Use after search_docs to fetch the complete page when a snippet isn't enough.
| Name | Required | Description | Default |
|---|---|---|---|
| page | Yes | Page path from search results — pass the `page` field from a search_docs result (e.g., "docs/ethereum-trader-nodes"). The leading slash, the `.mdx` extension, and the docs.chainstack.com URL prefix are all optional and stripped if present. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the useful contrast that it returns complete content rather than a snippet, but says nothing about behavior on a missing or malformed page path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the core action front-loaded and the usage condition immediately after. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value explanation is unnecessary, and the read-only annotations cover safety. The description is complete for a simple fetch tool, though it omits what happens when a page path fails to resolve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'page' parameter is thoroughly documented in the schema, including path formats and optional prefixes. The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the full content of a Chainstack documentation page') and implicitly distinguishes itself from search_docs by contrast between full page and snippet. An agent can tell exactly what it retrieves without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives a clear sequencing rule ('Use after search_docs') and a selection condition ('when a snippet isn't enough'), which implicitly excludes cases where the snippet suffices. It stops short of an explicit when-not statement or error-handling guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_nodeARead-onlyInspect
Get a node's full details including endpoints and cloud info.
| Name | Required | Description | Default |
|---|---|---|---|
| node_id | Yes | Node ID (e.g., ND-123-456-789). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| cloud | No | |
| region | Yes | |
| status | Yes | |
| network | Yes | |
| project | Yes | |
| protocol | Yes | |
| node_tier | Yes | |
| blockchain | No | |
| wss_endpoint | No | |
| api_namespaces | No | |
| https_endpoint | No | |
| beacon_endpoint | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds only a high-level note that endpoints and cloud info are returned, without permissions, rate limits, or error behavior – adequate but thin on top of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the key verb front-loaded and no filler. Slightly generic phrasing ('full details') rather than enumerating specifics, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and annotations cover the safety posture. The description is complete enough to call the tool correctly, though it could say a bit more about scope versus the list/update siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the node_id description already includes the expected ID format, so the schema carries the burden. The description adds nothing about parameter meaning, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a node's full details') and names what the response contains (endpoints, cloud info). It is clearly distinguishable from list_nodes and update_node, though it never explicitly contrasts itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the presence of a required node_id signals 'fetch one specific node'. It does not say when to prefer this over list_nodes when browsing, nor mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_organizationARead-onlyInspect
Get organization name and ID.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds the specific return fields (name and ID), which is mildly useful, but it does not disclose any additional behavioral traits like rate limits, authentication requirements, or the fact that this returns the currently authenticated organization. It neither contradicts nor significantly enriches the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence: 'Get organization name and ID.' It is front-loaded with the verb and resource, and contains no extraneous or redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, read-only, output schema present), the description is adequately complete. It clearly names the return values, and the presence of an output schema means it need not explain the full structure. However, it could have mentioned what 'organization' refers to (e.g., current authenticated organization) to fully round out the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description does not need to explain parameters, and the schema already shows an empty object. There is no gap in parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get organization name and ID' clearly states the action (get) and the resource (organization), and specifies the two pieces of data returned. It is distinct from sibling tools like get_project or get_node, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any exclusions, prerequisites, or context such as 'use this for the current organization' or 'see get_project for workspace details.' The tool's purpose is obvious, but explicit usage guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_platform_statusARead-onlyInspect
Check platform status, active incidents, and maintenances.
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | Optional filter (e.g., "ethereum"). Without it, returns overall status and incidents only. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| incidents | Yes | |
| components | No | |
| maintenances | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety and external-data profile is covered. The description adds no further behavioral detail such as authentication needs, rate limits, or refresh/caching semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the resource and enumerates what is returned; zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since an output schema exists, return values need not be explained, and the sole parameter is fully covered by the schema. Only the missing usage/context guidance keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single optional 'network' filter and its fallback behavior ('without it, returns overall status and incidents only') are already fully documented in the schema. The description adds nothing about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource set ('Check platform status, active incidents, and maintenances'), which is clearly distinct from the CRUD-oriented siblings like create_node or delete_project. It does not explicitly name an alternative, but none is plausibly confusable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is for status/liveness checks, but the description gives no explicit when-to-use, prerequisites, or when another tool (e.g., get_organization, list_nodes) would be preferred for health questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectCRead-onlyInspect
Get project details.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | Project ID (e.g., PR-123-456-789). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| type | No | |
| creator | No | |
| networks | No | |
| created_at | No | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering the safety profile. The description adds no behavioral context of its own — nothing about error behavior for a missing/invalid project_id or whether the lookup is scoped to the caller's organization.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the operation front-loaded. It is efficient, though the brevity comes at the cost of substance rather than being tight writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations plus the schema cover safety and the one parameter. For a simple read tool this is minimally adequate, but the description conveys nothing an agent could not read off the schema and annotations alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented in the schema, including an example ID format. The description adds no meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb and resource ('Get project details'), so the basic operation is identifiable. However, 'details' is vague about what is returned, and there is no differentiation from siblings like list_projects, get_node, or get_organization, which an agent must choose between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus list_projects (for multiple projects) or get_organization. The agent must infer the single-project lookup use case purely from the required project_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_nodesBRead-onlyInspect
List nodes with status and connection endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Optional project ID to filter by (e.g., PR-123-456-789). If omitted, returns all nodes in the organization. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only that nodes include status and connection endpoints; it does not disclose pagination, rate limits, or scoping beyond the project_id parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no waste; the core action is front-loaded and the informational content is clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a read-only tool with one optional parameter, full schema coverage, and an output schema, the description is minimally adequate but lacks pagination behavior and sibling differentiation. It leaves no critical gaps but is not fully complete for confident tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the single parameter, including its optional nature and the effect of omission. The description adds no parameter semantics beyond the schema, establishing the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List nodes') and adds what is returned ('status and connection endpoints'). It is distinguishable from get_node (singular) but does not explicitly differentiate from other list_* siblings like list_projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus get_node or other listing tools. The parameter description mentions filtering by project but offers no explicit when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsARead-onlyInspect
List all projects. Projects are containers for nodes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds only the conceptual note 'Projects are containers for nodes' and essentially restates the tool's name, providing no extra behavioral information such as pagination, ordering, or filtering limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the purpose ('List all projects') and the second sentence adds relevant domain context, making it appropriately sized and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters), existing annotations, and the presence of an output schema, the description is complete. It clearly states the action and resource, and the sibling tool context makes its role unambiguous without needing further elaboration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters (empty input schema), so there are no parameter semantics to describe. The description appropriately omits parameter details, and the baseline for 0 parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'List all projects' with a specific verb and resource, clearly distinguishing it from sibling tools like get_project (which retrieves a single project) and list_nodes (which lists a different resource). The added context 'Projects are containers for nodes' helps clarify the domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: this tool lists all projects. However, it does not explicitly mention when not to use it or reference alternatives such as get_project or list_nodes. For a simple list tool, the usage is implied effectively.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_testnet_fundsADestructiveInspect
Top up a testnet address from Chainstack's faucet.
The faucet does not send a fixed amount — it tops the address up to the
per-network maximum (e.g. 0.5 ETH for sepolia). If the address already
sits above the cap, the call fails with an insufficient-balance error.
Describe the behavior to the user as "top up" not "give", and surface
the returned amountSent so they see the actual delta.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Destination address. EVM hex address for EVM networks, a TON address for `ton`, or a base58 Solana public key for `solana`. Validated server-side — format errors surface as 400. | |
| network | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| network | Yes | |
| amountSent | No | |
| transaction | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the mutation/external-effect profile is partly covered. The description adds genuinely useful behavior beyond that: the top-up-to-cap semantics, the insufficient-balance failure mode, and the returned `amountSent` delta.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, followed by the behavioral nuance and the user-facing communication guidance. Slightly verbose in the 'Describe the behavior to the user as...' instruction, but every sentence carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, yet the description still points at `amountSent` as the meaningful field. Combined with the failure-mode and per-network-cap details, an agent has everything needed to call and report this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the network enum is fully documented in the schema, including alias normalization. The description adds no additional parameter syntax or format detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource combination ('Top up a testnet address from Chainstack's faucet') that no sibling tool replicates. An agent can immediately distinguish this from the node/project CRUD siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the operational context clearly: it tops up to a per-network maximum rather than sending a fixed amount, and it fails when the address is already above the cap. It does not name alternatives or exclusions, but no sibling tool overlaps with faucet funding, so there is little to route away from.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsBRead-onlyInspect
Search Chainstack docs — blockchain RPC methods, node infrastructure, Web3 APIs, deployment guides, and code examples.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (e.g., "deploy ethereum node", "eth_call"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and non-destructive behavior, so the safety profile is covered. The description adds useful domain scoping but says nothing about result ranking, pagination, or hit limits, which matter for an open-world search tool. Adds some value beyond annotations but leaves behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the verb and resource first and the content scope as an illustrative list. Nothing is wasted and no preamble delays the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations cover the safety profile. The description is nearly sufficient for a one-parameter search tool; only the relationship to get_doc_page is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, including examples ('deploy ethereum node', 'eth_call'), so the schema carries the burden. The description adds no query-syntax or formatting guidance beyond that, making 3 the correct baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Search') and resource ('Chainstack docs') and enumerates the content domains covered (RPC methods, node infrastructure, Web3 APIs, guides, code examples). It does not distinguish itself from the nearby sibling get_doc_page, which is the most likely source of confusion for an agent choosing between a search and a fetch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this tool versus get_doc_page, nor any note on query formulation, result limits, or what to do when nothing is found. The agent must infer that search precedes page retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_nodeCDestructiveInspect
Rename a node.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | New name. | |
| node_id | Yes | Node ID (e.g., ND-123-456-789). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| cloud | No | |
| region | Yes | |
| status | Yes | |
| network | Yes | |
| project | Yes | |
| protocol | Yes | |
| node_tier | Yes | |
| blockchain | No | |
| wss_endpoint | No | |
| api_namespaces | No | |
| https_endpoint | No | |
| beacon_endpoint | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that: it does not say whether the rename is reversible, whether it requires ownership/admin rights, or what happens to any existing references to the node. Two words of description leave the entire behavioral burden on the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with zero filler, which is defensible for a trivial two-parameter operation. It is arguably under-specified rather than verbose, so it scores well on conciseness but not perfectly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations carry the mutation/destructive profile. What remains missing is any statement of permissions or side effects for a destructive-flagged write on shared nodes, leaving the definition only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with two well-documented parameters (node_id with an example format, name described as "New name."). The description only implies the name parameter via the verb "rename" and adds no format, constraint, or uniqueness semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Rename a node" gives a specific verb and resource, so an agent immediately knows this mutates a node's name rather than its other attributes. It does not explicitly differentiate from siblings like update_project or delete_node, and the generic tool name update_node is narrower than its title suggests, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of the sibling tools (get_node, create_node, delete_node, update_project) that an agent might confuse it with. The agent must infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_projectCDestructiveInspect
Update a project's name or description.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name. | |
| project_id | Yes | Project ID (e.g., PR-123-456-789). | |
| description | No | New description. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| type | No | |
| creator | No | |
| networks | No | |
| created_at | No | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered structurally. The description adds no behavioral context beyond that: it never says whether omitted fields are left untouched or cleared, whether the update is reversible, or what permissions are needed — notable because destructiveHint=true conflicts with the mundane 'rename' framing. It does not outright contradict the annotations, so no contradiction is flagged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the affected fields front-loaded and zero filler. It is arguably too terse for the information burden, but there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. Still missing for a mutation tool is what happens when optional fields are omitted (default null vs leave unchanged), which is the main ambiguity an agent would hit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both optional fields are documented by the schema itself. The description simply restates 'name or description' without adding meaning about defaults, null handling, or the required project_id, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Update) and resource (project) plus the exact fields affected (name, description), so an agent can tell it apart from create_project, delete_project, and get_project. It stops short of naming a sibling explicitly, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of the obvious alternative update paths or when a rename is preferable to a delete/recreate. The agent must infer everything about invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
14 tool updates
- Changed
contact_chainstack4 fields changed- added
Input schema / properties / category / descriptionAdded value: +"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.\nCase-insensitive. Unknown values fall back to \"general\".\nDefault: \"general\"." - added
Input schema / properties / email / descriptionAdded value: +"User's contact email. Required. Ask the user if you don't\nalready have it." - added
Input schema / properties / message / descriptionAdded value: +"The full message to send. Compose from\nconversation context — what the user is building, their plan\nand usage, what they need — so the Chainstack team can respond\nwith a tailored answer instead of a generic one." - added
Input schema / properties / name / descriptionAdded value: +"User's name (full name is fine, will be split on first space).\nRequired. Ask the user if you don't have it on hand."
- Changed
create_node4 fields changed- added
Input schema / properties / blockchain / descriptionAdded value: +"Blockchain ID from get_deployment_options (e.g., BC-000-000-008)." - added
Input schema / properties / cloud / descriptionAdded value: +"Cloud ID from get_deployment_options (e.g., CC-0016 for Global, CC-0020 for London)." - added
Input schema / properties / name / descriptionAdded value: +"Node name." - added
Input schema / properties / project / descriptionAdded value: +"Project ID from list_projects (e.g., PR-123-456-789)."
- Changed
create_project2 fields changed- added
Input schema / properties / description / descriptionAdded value: +"Optional description." - added
Input schema / properties / name / descriptionAdded value: +"Project name."
- Changed
delete_node1 field changed- added
Input schema / properties / node_id / descriptionAdded value: +"Node ID (e.g., ND-123-456-789)."
- Changed
delete_project1 field changed- added
Input schema / properties / project_id / descriptionAdded value: +"Project ID (e.g., PR-123-456-789)."
- Changed
get_doc_page1 field changed- added
Input schema / properties / page / descriptionAdded value: +"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."
- Changed
get_node1 field changed- added
Input schema / properties / node_id / descriptionAdded value: +"Node ID (e.g., ND-123-456-789)."
- Changed
get_platform_status1 field changed- added
Input schema / properties / network / descriptionAdded value: +"Optional filter (e.g., \"ethereum\"). Without it, returns\n overall status and incidents only."
- Changed
get_project1 field changed- added
Input schema / properties / project_id / descriptionAdded value: +"Project ID (e.g., PR-123-456-789)."
- Changed
list_nodes1 field changed- added
Input schema / properties / project_id / descriptionAdded value: +"Optional project ID to filter by (e.g., PR-123-456-789).\n If omitted, returns all nodes in the organization."
- Changed
request_testnet_funds1 field changed- added
Input schema / properties / address / descriptionAdded value: +"Destination address. EVM hex address for EVM networks,\na TON address for `ton`, or a base58 Solana public key for\n`solana`. Validated server-side — format errors surface as 400."
- Changed
search_docs1 field changed- added
Input schema / properties / query / descriptionAdded value: +"Search query (e.g., \"deploy ethereum node\", \"eth_call\")."
- Changed
update_node2 fields changed- added
Input schema / properties / name / descriptionAdded value: +"New name." - added
Input schema / properties / node_id / descriptionAdded value: +"Node ID (e.g., ND-123-456-789)."
- Changed
update_project3 fields changed- added
Input schema / properties / description / descriptionAdded value: +"New description." - added
Input schema / properties / name / descriptionAdded value: +"New name." - added
Input schema / properties / project_id / descriptionAdded value: +"Project ID (e.g., PR-123-456-789)."
18 tool updates
- First observed
contact_chainstack - First observed
create_node - First observed
create_project - First observed
delete_node - First observed
delete_project - First observed
get_chainstack_pricing - First observed
get_deployment_options - First observed
get_doc_page - First observed
get_node - First observed
get_organization - First observed
get_platform_status - First observed
get_project - First observed
list_nodes - First observed
list_projects - First observed
request_testnet_funds - First observed
search_docs - First observed
update_node - First observed
update_project
Related MCP Connectors
Manage your blockchain infrastructure across 80+ chains with your agents.
Keyless multi-chain EVM JSON-RPC, indexed Data API, docs, CU pricing and status. API key optional.
Read chain data on 200+ networks and Sui: transactions, logs, balances, objects, ABI-decoded.
251Doc search, intent & cross-chain swaps, limit orders, portfolio, spot prices, gas & all APIs.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables querying blockchains across EVM, Solana, Bitcoin/UTXO, and Cosmos through a unified interface, with tools for resolving addresses, checking balances, fetching transactions and blocks, reading contracts, decoding calldata, and building unsigned transfers.16 npm3MIT
- AlicenseAqualityDmaintenanceRead-only access to the live NOVAI blockchain (an AI-native L1) over public JSON-RPC. Query blocks, transactions, AI entities, on-chain signals, oracle anchors, and memory objects. No keys, no write paths.1249 npm1MIT

RouteMesh MCP Serverofficial
AlicenseAqualityDmaintenanceEnables querying blockchain data across multiple EVM chains via RouteMesh, offering built-in RPC tools for blocks, transactions, logs, balances, and gas estimation, plus customer management tools for API keys and usage.116 npm1ISC- AlicenseAqualityAmaintenanceBlockchain JSON-RPC on 23 EVM chains for AI agents — Ethereum, Base, Arbitrum, plus young chains like Robinhood Chain, Plasma and Ink. Free reads with no key; heavy methods (eth_getLogs, trace, debug) via a free API key or x402 USDC pay-per-call.1272 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.