xRoot token operations
Server Details
Solana token operations for self-funded agents: quote the exact fee, get an unsigned transaction for a token deploy, authority revoke, airdrop or metadata update, sign it with your own wallet, and submit it back. Non-custodial: the platform never holds keys or funds.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 3 tools
Each tool occupies a distinct stage of the same workflow: estimating cost, building an unsigned transaction, and submitting the signed transaction. No two tools could be confused.
All tool names use a consistent snake_case verb_noun pattern: build_request, get_fee_estimate, submit_transaction. The verbs clearly indicate the action taken.
Three tools form a minimal but complete pipeline; every tool is necessary and none is redundant. The count is well-scoped for the stated purpose.
The estimate-build-submit lifecycle covers the core path end-to-end. However, there is no explicit status query or cancellation tool, and 'token operations' could imply more operation types, so a small gap remains.
Available Tools
3 toolsbuild_requestAInspect
Build the unsigned Solana transaction for an operation. Returns a base64-encoded transaction whose fee payer is the given wallet address, plus the requestId to pass to submit_transaction after signing locally. The prepared transaction expires with its blockhash.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | The agent's own Solana wallet address (base58) — becomes the fee payer and token owner. Must sign the returned transaction. | |
| request | Yes | The operation intent — same shape the browser flow sends (chain, then service, then the service's fields). | |
| requestId | No | Optional idempotency key (req_…). Generated when omitted; reuse it to re-prepare without creating duplicates. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral burden. It discloses that the transaction is unsigned, who the fee payer is, the output format, and the expiry consequence of blockhash reuse. It does not explicitly say 'this tool does not submit the transaction', but 'unsigned' and 'after signing locally' make that clear. It also omits server-side persistence/idempotency details, which are only in the schema.
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 sentences, each purposeful and front-loaded: first states the action, second states the outputs and workflow, third states expiry. No filler, no duplication of schema content. It is optimally sized for an agent to absorb quickly.
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?
The request object is complex with multiple services and options, but the schema thoroughly documents every field. The description supplies the missing workflow glue: output shape, local signing requirement, requestId handoff, and time sensitivity. Minor gap: it doesn't note that this tool itself has no on-chain side effects, but 'unsigned' and 'build' imply that. Overall adequate for a tool of this complexity.
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. The tool description adds little beyond the schema: it merely reinforces that the address becomes fee payer and requestId feeds into submit_transaction. All required field meanings are already in the schema; description doesn't need to compensate.
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 ('build'), a clear resource ('unsigned Solana transaction'), and the primary output (base64-encoded transaction). It explicitly names submit_transaction as the next step, distinguishing this preparation tool from its sibling without ambiguity. No tautology and no confusion about what the tool does.
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 explains the intended workflow: call this tool to prepare, sign locally, then pass requestId to submit_transaction. It also warns the transaction expires with its blockhash, implying it should be used promptly. It does not explicitly contrast against get_fee_estimate or list when not to use, but the flow is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fee_estimateAInspect
Estimate the exact cost of a token operation before anything is built. Returns the platform fee (quoted per service-chain pair) plus the estimated network fee (rent + base + priority), as decimal strings in the chain's currency.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | The operation intent — same shape the browser flow sends (chain, then service, then the service's fields). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the output (platform and network fees as decimal strings) and implies a non-mutating operation via 'before anything is built', but it does not explicitly state read-only semantics, authentication requirements, or other side effects. This is a moderate gap given the lack of annotation support.
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 sentences with no redundant wording. The output format and timing are stated upfront, making it easy to parse quickly.
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 complex nested request schema, the description is minimal but the schema covers all parameter details. The description does explain the return format, which is necessary since there is no output schema. It is adequate for an agent to understand the tool's purpose and output, though it could offer a brief hint about the request structure.
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 description adds no parameter-specific guidance; it relies entirely on the input schema, which has 100% coverage. Since the schema fully documents the request structure, the baseline of 3 applies. The description's mention of 'per service-chain pair' refers to output, not input parameters.
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 uses the specific verb 'estimate' and identifies the resource as 'cost of a token operation'. It clearly distinguishes itself from siblings (build_request, submit_transaction) by focusing on cost estimation before any building occurs.
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 phrase 'before anything is built' clearly indicates when to use this tool, implying it should precede build_request and submit_transaction. However, it does not explicitly name alternatives or exclusion conditions, so it falls short of the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_transactionAInspect
Submit a locally-signed transaction for execution. The transaction must be the exact bytes returned by build_request, signed by the payer address, and submitted with the same requestId. Idempotent: resubmitting returns the current deployment state.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | Yes | The requestId returned by build_request — binds this submit to its prepared transaction. | |
| transaction | Yes | Base64-encoded fully-signed Solana transaction (the build_request output signed locally). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses idempotency ('resubmitting returns the current deployment state') and enforces exact-byte/payer-signature constraints. It does not describe failure modes or the initial success response, but the core execution behavior is transparent.
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 sentences, each earning its place: the action, the mandatory constraints, and the idempotency behavior. No redundancy or filler, and the most important operational details are front-loaded.
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 two-parameter tool with no output schema, the description covers the essential prerequisites, binding to build_request, and repeated-submission behavior. It is slightly incomplete in not stating what the initial successful submission returns or how errors are surfaced, but it is sufficient for correct invocation in most cases.
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. The description adds meaningful constraint detail beyond the schema: the transaction must be 'the exact bytes returned by build_request' and 'signed by the payer address,' which clarifies what counts as a valid transaction value.
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 starts with a specific verb and resource: 'Submit a locally-signed transaction for execution.' It clearly differentiates this from sibling tools by requiring 'the exact bytes returned by build_request' and 'the same requestId,' so an agent can tell it apart from build_request and get_fee_estimate.
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 on how to use the tool: it must be called after build_request, with the exact returned bytes, signed by the payer, and keyed to the same requestId. It does not explicitly state when not to use it or name alternatives, but the prerequisites effectively convey the intended usage sequence.
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.
2 tool updates
- Changed
build_request2 fields changed- changed
Input schema / properties / request / properties / options / descriptionPrevious value: -"Service options, keyed by service. spl-token and token-2022 (optional, may be omitted): transferTaxBps, transferTaxMaxFee, permanentDelegate, freezeAuthority. authority-tools (REQUIRED): revokeMint, revokeFreeze, revokeUpdate as booleans — all three must be present, at least one true; optional revokePermanentDelegate, revokeTransferFee, revokeWithheldWithdraw, revokeTransferHook, revokePause. airdrop (REQUIRED): recipients, a list of {address, amount} with amount as a decimal string in whole tokens, the same unit as supply — the mint's decimals are applied at prepare time. update-metadata (REQUIRED, at least one): name, symbol, metadataUri."New value: +"Service options, keyed by service. spl-token and token-2022 (optional, may be omitted): transferTaxBps, transferTaxMaxFee, permanentDelegate, freezeAuthority. authority-tools (REQUIRED): revokeMint, revokeFreeze, revokeUpdate as booleans — all three must be present, at least one true; optional revokePermanentDelegate, revokeTransferFee, revokeWithheldWithdraw, revokeTransferHook, revokePause. airdrop (REQUIRED): recipients, a list of {address, amount} — at most 20 recipients per transaction — with amount as a decimal string in whole tokens, the same unit as supply; the mint's decimals are applied at prepare time. update-metadata (REQUIRED, at least one): name, symbol, metadataUri." - changed
Input schema / properties / request / properties / token / properties / supply / descriptionPrevious value: -"Total supply as a decimal string in base units, e.g. \"1000000000\" for 1B tokens."New value: +"Total supply in whole tokens as a decimal string, e.g. \"1000000000\" for 1B tokens — the mint's decimals are applied at prepare time."
- Changed
get_fee_estimate2 fields changed- changed
Input schema / properties / request / properties / options / descriptionPrevious value: -"Service options, keyed by service. spl-token and token-2022 (optional, may be omitted): transferTaxBps, transferTaxMaxFee, permanentDelegate, freezeAuthority. authority-tools (REQUIRED): revokeMint, revokeFreeze, revokeUpdate as booleans — all three must be present, at least one true; optional revokePermanentDelegate, revokeTransferFee, revokeWithheldWithdraw, revokeTransferHook, revokePause. airdrop (REQUIRED): recipients, a list of {address, amount} with amount as a decimal string in whole tokens, the same unit as supply — the mint's decimals are applied at prepare time. update-metadata (REQUIRED, at least one): name, symbol, metadataUri."New value: +"Service options, keyed by service. spl-token and token-2022 (optional, may be omitted): transferTaxBps, transferTaxMaxFee, permanentDelegate, freezeAuthority. authority-tools (REQUIRED): revokeMint, revokeFreeze, revokeUpdate as booleans — all three must be present, at least one true; optional revokePermanentDelegate, revokeTransferFee, revokeWithheldWithdraw, revokeTransferHook, revokePause. airdrop (REQUIRED): recipients, a list of {address, amount} — at most 20 recipients per transaction — with amount as a decimal string in whole tokens, the same unit as supply; the mint's decimals are applied at prepare time. update-metadata (REQUIRED, at least one): name, symbol, metadataUri." - changed
Input schema / properties / request / properties / token / properties / supply / descriptionPrevious value: -"Total supply as a decimal string in base units, e.g. \"1000000000\" for 1B tokens."New value: +"Total supply in whole tokens as a decimal string, e.g. \"1000000000\" for 1B tokens — the mint's decimals are applied at prepare time."
3 tool updates
- First observed
build_request - First observed
get_fee_estimate - First observed
submit_transaction
Publisher details
- Operator
- xRoot · Publisher source
- Operator website
- https://app.xroot.dev
- Vendor relationship
- First-party
- Documentation
- https://app.xroot.dev/.well-known/llms.txt
- Trust center
- Not available
- Restrictions
- None. No account, no API key, no paid plan. You bring your own funded Solana wallet and sign locally; the platform never holds keys or funds.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.169 npm1MIT
- AlicenseCqualityAmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs119 npm107 PyPIMIT
- AlicenseNot gradedqualityBmaintenanceEnables tracking competitor websites, changelogs, blog feeds, and pricing pages with meaningful diffs, classification, and Markdown digests via MCP tools for listing, adding, removing competitors, running checks, and retrieving digests or changes.MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.