tollboothswap-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tollboothswap-mcpCheck if the token DOGE on BSC is a honeypot"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
tollboothswap-mcp — Token Swaps & Honeypot Checks for AI Agents (MCP Server)
MCP server for Tollbooth: non-custodial token swap execution and token safety screening on 8 chains — Solana, Base, Ethereum, Arbitrum, Polygon, Optimism, BSC, Avalanche. Quotes and symbol resolution are free; swap builds (~$0.005) and safety checks ($0.01) are paid per-call in USDC via the x402 protocol — no API keys, no accounts, no subscriptions.
Quick start
npx tollboothswap-mcpClaude Desktop / Cursor / any MCP client
{
"mcpServers": {
"tollbooth": {
"command": "npx",
"args": ["-y", "tollboothswap-mcp"],
"env": {
"TOLLBOOTH_PAYER_KEY": "0x<EVM private key holding USDC on Base>"
}
}
}
}TOLLBOOTH_PAYER_KEY is optional: without it the free tools
(resolve_token, get_quote, get_service_info, get_receipt) work fully,
and paid tools return x402 payment instructions instead of results. With it,
tolls are paid automatically and gaslessly (EIP-3009 — the key never spends
gas, only USDC).
Related MCP server: HoodScope MCP
Tools
Tool | Cost | What it does |
| free | Ticker symbol → contract addresses, ranked by DEX liquidity |
| free | Fee-inclusive indicative swap quote |
| $0.01 | Honeypot / rug-pull / freeze-authority / sell-tax screening with verdict + findings |
| ~$0.005 | Unsigned, ready-to-sign swap transaction + HMAC-signed receipt ( |
| free | Verify a past build receipt by id |
| free | Service manifest: chains, fees, pricing |
Trust model
Tollbooth is non-custodial: it builds transactions but never holds keys or funds. Your agent signs and submits everything with its own wallet. Every paid build returns a signed receipt for audit trails.
Links
Full tutorial: https://api.tollboothswap.xyz/guides/agent-swaps.md
Agent usage guide: https://api.tollboothswap.xyz/skill.md
Runnable HTTP examples: https://github.com/soundsparkaudiolab/tollbooth-examples
License
MIT
Available Tools
6 toolsbuild_swapBuild swap transactionAInspect
Build an unsigned swap transaction for the taker wallet to sign and submit. Costs an x402 toll (paid automatically when TOLLBOOTH_PAYER_KEY is set). Returns the transaction, the quote, and a signed receipt.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain to swap on | |
| taker | Yes | Wallet address that will sign and send the swap | |
| amount | Yes | Sell amount as an integer string in the input token's base units | |
| safeMode | No | Screen both tokens first; refuses the build if either is critical-risk (honeypot etc.) | |
| inputToken | Yes | Token being sold: mint address (solana) or ERC-20 address (EVM chains) | |
| outputToken | Yes | Token being bought: mint address (solana) or ERC-20 address (EVM chains) | |
| slippageBps | No | Max slippage in bps (default 100) |
Output Schema
| Name | Required | Description |
|---|---|---|
| next | No | Suggested follow-up calls |
| chain | No | |
| error | No | Present when the request failed or payment is required |
| quote | No | Quote the transaction was built from |
| safety | No | Safety reports when safeMode was requested |
| accepts | No | x402 payment options when unpaid |
| receipt | No | Signed receipt for this build |
| transaction | No | Unsigned transaction for the taker to sign |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations: it costs an x402 toll (auto-paid via TOLLBOOTH_PAYER_KEY) and returns a signed receipt. Annotations already flag the tool as non-read-only and non-idempotent, so the description enriches rather than contradicts. It does not fully explore side effects or edge cases, but it covers the most important cost behavior.
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 three sentences, each earning its place: purpose, cost, and return values. It is front-loaded with the core action and avoids fluff or repetition of schema fields.
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 moderately complex tool with 7 parameters and an output schema, the description covers the essential context: what it builds, for whom, the associated cost, and what is returned. It does not fully explain edge cases like when TOLLBOOTH_PAYER_KEY is absent, but the output schema and rich parameter descriptions fill most gaps. Slightly more detail on the toll behavior would make it a 5.
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 100% coverage with detailed descriptions for every parameter (chain, taker, amount, safeMode, etc.). The tool description does not add any parameter-specific meaning beyond what the schema already provides, so it meets the baseline for high schema coverage without adding extra 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 uses a specific verb ('build') and resource ('unsigned swap transaction for the taker wallet'), clearly distinguishing it from sibling tools like get_quote (which only fetches a quote) and get_receipt. It also specifies the purpose (to sign and submit) and the output (transaction, quote, receipt).
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 clearly implies when to use this tool: when you need an unsigned swap transaction for a taker wallet to sign. It does not explicitly mention alternatives or when not to use it, but the context and sibling list make the differentiation clear. This is close to a 5 but lacks a direct exclusion statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_tokenCheck token safetyAIdempotentInspect
Token safety screen before trading: honeypot, rug-pull, freeze/mint authority, transfer hooks, sell tax, blacklists. Returns verdict (ok/warn/critical/unknown), a 0-100 risk score, and itemized findings. Costs an x402 toll.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain to swap on | |
| token | Yes | Token to screen: mint address (solana) or ERC-20 address (EVM chains) |
Output Schema
| Name | Required | Description |
|---|---|---|
| next | No | Suggested follow-up calls |
| chain | No | |
| error | No | Present when the request failed or payment is required |
| token | No | |
| source | No | Data source used for the screen |
| accepts | No | x402 payment options when unpaid |
| verdict | No | ok, warn, critical, or unknown |
| findings | No | Individual risk findings |
| riskScore | No | 0 (safe) to 100 (critical) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds the key behavioral fact that the tool 'costs an x402 toll' and specifies return values (verdict, risk score, findings). This goes beyond annotations, which already mark it as idempotent and non-destructive. No contradiction with readOnlyHint=false is present.
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 focused sentences: first states purpose and checks, second states outputs and cost. Every sentence earns its place with no redundant phrasing.
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 output schema exists and annotations are present, the description sufficiently covers purpose, key behaviors, returns, and cost. The tool is moderately complex but the description is complete enough for selection and invocation.
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?
Input schema provides 100% coverage with descriptions for both chain and token, including enum values and address format. The description does not add new parameter semantics, so 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?
Description states a specific verb-resource pair: 'Token safety screen before trading,' and enumerates concrete checks (honeypot, rug-pull, freeze/mint authority, transfer hooks, sell tax, blacklists). This clearly distinguishes it from sibling tools like build_swap or get_quote.
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 trading' gives clear context and implies it should be used as a pre-trade safety step. It does not explicitly name alternatives or state when not to use it, but the intended usage is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quoteGet swap quoteARead-onlyIdempotentInspect
Get a free indicative swap quote (output amount includes Tollbooth's fee). Use before build_swap to decide whether to trade.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain to swap on | |
| amount | Yes | Sell amount as an integer string in the input token's base units | |
| inputToken | Yes | Token being sold: mint address (solana) or ERC-20 address (EVM chains) | |
| outputToken | Yes | Token being bought: mint address (solana) or ERC-20 address (EVM chains) | |
| slippageBps | No | Max slippage in bps (default 100) |
Output Schema
| Name | Required | Description |
|---|---|---|
| next | No | How to build the swap transaction |
| chain | No | |
| feeBps | No | Tollbooth fee in basis points |
| inputToken | No | |
| inputAmount | No | Sell amount in base units |
| outputToken | No | |
| slippageBps | No | |
| outputAmount | No | Estimated buy amount in base units, after fees |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, openWorldHint, idempotentHint) already convey safety and side-effect behavior. The description adds 'free indicative quote' and 'output amount includes Tollbooth's fee', which are meaningful behavioral details beyond the annotations. No contradiction.
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 concise sentences, front-loaded with the primary action and key context (free, indicative, fee included). Every part is useful, with no filler.
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 output schema exists and annotations cover safety, the description provides sufficient context for a quote tool: usage timing, fee inclusion, and decision support. It doesn't mention potential prerequisites like token resolution, but that is indirectly covered by schema and sibling tools.
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 provides descriptions for all 5 parameters (100% coverage), including chain enum, amount format, and slippage default. The description does not add parameter-specific guidance, so the baseline score of 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?
The description clearly states the tool gets a free indicative swap quote and explicitly distinguishes it from build_swap (execution). It also adds the specific detail that output includes Tollbooth's fee, making the purpose precise and unique among 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?
The description explicitly directs the agent to 'Use before build_swap to decide whether to trade', providing clear when-to-use guidance and implicitly naming the alternative. This is helpful for tool selection and sequencing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_receiptGet signed receiptARead-onlyIdempotentInspect
Fetch a signed Tollbooth receipt by id and verify its signature.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Receipt id returned by build_swap |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Receipt id |
| error | No | Present when the receipt was not found |
| valid | No | Whether the signature verified |
| receipt | No | Receipt payload |
| signature | No | Server signature over the receipt |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and idempotent hints. The description adds the behavior of signature verification, which is relevant context beyond what annotations provide. No contradictions.
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?
Single sentence with no filler. Clearly front-loaded with the primary action and resource.
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 one-parameter read-only tool with output schema, the description is sufficient. It covers the main purpose and verification aspect, though it doesn't mention failure modes, which the output schema could cover.
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 param description already explains that id is a receipt id from build_swap. The tool description adds no additional meaning beyond what the schema provides, 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 clearly states the action (Fetch), resource (signed Tollbooth receipt), and distinguishes it from siblings by focusing on receipts and signature verification. This is specific and 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?
The context of usage is clear: the id comes from build_swap, implying this is used after creating a swap. While it doesn't explicitly say when not to use it, the workflow hint provides sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_infoGet service infoARead-onlyIdempotentInspect
Get Tollbooth service metadata: supported chains, swap fee, x402 toll pricing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | Service name |
| payment | No | x402 payment networks and pricing |
| endpoints | No | HTTP endpoints exposed by the service |
| description | No | What the service does |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering safety and idempotency. The description adds value by disclosing exactly what metadata is returned (supported chains, swap fee, x402 toll pricing), which is beyond the structured annotations. No contradiction exists.
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, well-structured sentence that front-loads the action and resource, then lists key content. Every element adds information, with no fluff or 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 metadata retrieval tool with an output schema and strong annotations, the description fully covers the necessary context. It specifies the tool's scope and content without needing to describe return formats, which the output schema handles.
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 per the rubric. The description is not required to explain parameter semantics since there are none, and the schema trivially covers 100%.
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 verb 'Get' and the resource 'Tollbooth service metadata', then lists specific content: supported chains, swap fee, x402 toll pricing. This is specific enough to distinguish from sibling tools like get_quote or get_receipt, which focus on trade operations.
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 implies when to use the tool—whenever service-level metadata is needed—but it does not explicitly mention alternatives or exclusions. Given the zero-parameter, self-contained nature of the tool, the implied usage is acceptable, but explicit guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_tokenResolve token symbolARead-onlyIdempotentInspect
Resolve a token ticker symbol (e.g. PEPE, WIF, USDC) to contract addresses on a chain, free. Curated majors return one verified match; others return live DEX matches ranked by liquidity so you can pick the real token over imitations. Use before get_quote when you only know the symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain to swap on | |
| symbol | Yes | Ticker symbol to resolve, e.g. USDC, PEPE, WIF |
Output Schema
| Name | Required | Description |
|---|---|---|
| next | No | Suggested follow-up calls |
| chain | No | Chain searched |
| symbol | No | Symbol searched |
| matches | No | Matching tokens, best first |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint, openWorldHint, and idempotentHint annotations, the description explains that curated majors return one verified match, while other symbols return live DEX matches ranked by liquidity, which informs the agent about result variability and how to handle imitations. This adds behavioral context not captured in 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 core purpose and examples, and each sentence provides distinct value. 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?
The tool is simple with two well-documented parameters, an output schema exists, and annotations cover safety and idempotence. The description explains the nuanced return behavior (verified vs. ranked matches) and its place in the swap workflow, making it 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?
The schema already provides full descriptions for both parameters, including the chain enum and symbol examples. The description reinforces the symbol examples but does not add meaningful new parameter semantics, 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 clearly states a specific action (resolve a token ticker symbol to contract addresses) with concrete examples (PEPE, WIF, USDC) and explicitly positions the tool in the workflow ('Use before get_quote when you only know the symbol'), which distinguishes it from the sibling tools.
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 explicit usage guidance: 'Use before get_quote when you only know the symbol.' It also details the two modes (curated majors vs. live DEX matches), helping the agent decide when the tool is appropriate. However, it does not explicitly state when not to use it, such as when the address is already known.
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.
6 tool updates
v1.0.2- First observed
build_swap - First observed
check_token - First observed
get_quote - First observed
get_receipt - First observed
get_service_info - First observed
resolve_token
TDQS
Scored across 6 tools
Each tool targets a distinct stage of the swap workflow: metadata, token resolution, safety check, pricing, transaction building, and receipt verification. The only near-overlap (get_quote vs build_swap) is clearly separated by free indicative vs paid transaction-building.
All tools follow a consistent verb_noun snake_case pattern, with get_ prefixed for fetch operations and build_, resolve_, check_ for actions. This makes the tool set predictable and easy to navigate.
Six tools is well-scoped for a token swap service, covering every essential step from token discovery to receipt verification without excess. Each tool has a clear purpose and no redundant entries.
The tool surface fully covers the swap lifecycle: resolve_token → check_token → get_quote → build_swap → get_receipt, with get_service_info providing necessary context. There are no obvious missing operations for the stated purpose.
Related MCP Connectors
Crypto market intelligence, token rug-checks, and wallet verification in one MCP server.
Multi-chain wallet MCP. 18 tools: balance, swap, bridge, stake, claim. Pay-per-call USDC (x402 v2).
Multichain DEX router: free MCP tools for swap-quote prices, chains, catalog; paid via x402.
Non-custodial cross-chain crypto swap MCP — 1288+ assets, no KYC. Solana/EVM/Monero, RPC, oracle.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that detects potential honeypot tokens on Ethereum, BNB Smart Chain (BSC), and Base.13MIT
- FlicenseNot gradedqualityCmaintenanceMCP server that gives deployer reputation, insider detection, and token buy-risk verdicts for Robinhood Chain memecoins, with paid tools settling via x402.-
- AlicenseNot gradedqualityCmaintenanceMCP server for autonomous agents to rug-check tokens, monitor liquidity drains, and get market briefs, with pay-per-call via x402.3MIT
- AlicenseBqualityCmaintenanceMCP server for Autonomous Intelligence, enabling AI agents to perform non-custodial, rug-gated multi-chain token swaps including safety checks, quotes, and execution.723 npmMIT