o1-mcp
Click on "Install 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., "@o1-mcpGet a quote to swap 1 ETH for USDC on Base"
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.
o1-mcp
An MCP server that exposes the o1.exchange DEX aggregator — live swap quotes and routing on Base — to any MCP client (Claude Desktop, Claude Code, …). Read-only and safe by default: no private keys, no signing, no broadcasting. It returns routing data and, optionally, unsigned calldata you sign in your own wallet.
Tools
Tool | Endpoint | What it does |
|
| Liveness check. No auth. |
|
| Primary. Quote a swap → compact route summary + |
| — | The DEX venues the router can use on Base. |
|
| Gated. Turn a |
|
| Gated. One-shot quote + unsigned calldata. |
The two gated tools register only when O1_ENABLE_BUILD_TX=true. They never sign or broadcast — you do, in your own wallet.
o1_get_quote takes tokenIn, tokenOut (an EVM address or "ETH"), and amountIn (base units / wei, as a string > 0). Optional: slippageBps (default 100, capped at 2000 unless O1_ALLOW_HIGH_SLIPPAGE=true), chainId, maxHops, splitEnabled, allowedDexes, feeBps, timeBudgetMs. It returns:
{
"quoteId": "…", "expiresAt": 1782700000000,
"expectedAmountOut": "…", "minAmountOut": "…",
"feeBps": 5, "gasUnits": "210000",
"venues": ["AERODROME_V2LIKE", "UNIV3"],
"routesCount": 2,
"note": "quote expires ~10s",
"raw": { /* full /quote response */ }
}Selling ETH? Set
useNativeIn: trueon the gated tools, or the calldata'svaluecomes back0. Quotes expire in ~10s and are never cached.
Related MCP server: base-price-oracle-mcp
Demo
Verified live in Claude Code — the read-only tools load and respond against production:


o1_health→ ✅/healthreturned{ ok: true }·o1_list_supported_dexes→ 21 DEX venues on Base (chain ID 8453). The gatedo1_build_swap_transactionando1_execute_swaptools appear onceO1_ENABLE_BUILD_TX=true.
Tools for o1 — 3 tools
1. o1_health read-only, open-world
2. o1_get_quote read-only, open-world
3. o1_list_supported_dexes read-onlyo1_list_supported_dexes → UNIV2, UNIV3, UNIV4, AERODROME_V2LIKE, AERODROME_CL, PANCAKE_V2, PANCAKE_V3, PANCAKE_INFINITY_CL, HYDREX, QUICKSWAP_V4, ALIEN_BASE_V3, CURVE, PROPSWAP, TESSERA, ELFOMOFI, LUNARBASE, FELTIR, DODO_V2, WOOFI, GYROSCOPE_ECLP, MAVERICK_V2.
Quick start
Requires Node 20+.
npm install
npm run build
cp .env.example .env # set O1_API_KEY and O1_API_BASE_URLAdd it to your MCP client (stdio):
{
"mcpServers": {
"o1": {
"command": "node",
"args": ["/absolute/path/to/o1-mcp/dist/index.js"],
"env": {
"O1_API_BASE_URL": "https://quiet-bloodhound-531.convex.site",
"O1_API_KEY": "your-key-here"
}
}
}
}Claude Code: claude mcp add o1 -- node /absolute/path/to/o1-mcp/dist/index.js.
Environment
Var | Required | Default | Notes |
| ✅ | — | Aggregator base URL, no trailing slash. Prod: |
| for non-health | — | Sent as |
|
| Default slippage (bps) when a quote omits it. | |
|
| Chain allowlist. Base only (phase 1). | |
|
| Register the gated | |
|
| Per-request timeout (ms). | |
|
| Retries for | |
|
| Allow slippage above the 2000 bps cap. | |
|
|
|
Safety
Read-only by default — swap-building tools are opt-in via
O1_ENABLE_BUILD_TX.No private keys, ever — no tool accepts one, and output is always unsigned.
Inputs validated before any network call — address format,
amountIn > 0, slippage cap, chain allowlist.Secrets redacted from every log and error; logs go to stderr only (stdout carries only the MCP stream).
Errors mapped —
400invalid input ·401auth ·429rate-limited (with backoff) ·5xxupstream. Reads (/health,/quote) retry with backoff + jitter; writes (/submit,/execute) never do.
Development
npm run typecheck # strict tsc
npm run lint # eslint
npm test # vitest (mocked fetch — no live network)
npm run dev # run from source via tsxLicense
MIT
Available Tools
3 toolso1_get_quoteo1 Get QuoteARead-only
Get a live DEX-aggregator swap quote on Base (o1.exchange). Read-only — no wallet or signing. Pass token addresses or "ETH". amountIn is in base units (wei). Returns a compact route summary + raw. Quotes expire in ~10s.
| Name | Required | Description | Default |
|---|---|---|---|
| feeBps | No | Integrator fee in bps. | |
| chainId | No | Chain id. Base (8453) only; other chains are rejected. | |
| maxHops | No | Max route hops. | |
| tokenIn | Yes | Input token: an EVM address or "ETH". | |
| amountIn | Yes | Amount of tokenIn in base units (wei), as a decimal string > 0. | |
| tokenOut | Yes | Output token: an EVM address or "ETH". | |
| slippageBps | No | Max slippage in bps (0..2000). Defaults to 100. | |
| allowedDexes | No | Restrict routing to these DEX ids. | |
| splitEnabled | No | Allow split routing across venues. | |
| timeBudgetMs | No | Upstream routing time budget in ms (50..10000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds valuable behavioral details: 'Read-only — no wallet or signing', 'Quotes expire in ~10s', and 'Returns a compact route summary + raw'. 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?
The description is concise: three sentences, front-loaded with the core purpose, no unnecessary words. Every sentence adds value.
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 has no output schema, so the description partially compensates by stating 'Returns a compact route summary + raw'. However, it does not detail the output structure. Given the complexity (10 parameters), slightly more detail would improve completeness.
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 baseline is 3. The description reiterates some parameter info (e.g., amountIn in wei, token addresses or 'ETH') but does not add new meaning beyond the schema.
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 'Get a live DEX-aggregator swap quote on Base (o1.exchange)', specifying the verb, resource, and scope. It effectively distinguishes from sibling tools (o1_health, o1_list_supported_dexes).
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 clear usage context: 'Read-only — no wallet or signing', 'Pass token addresses or "ETH"', and notes quote expiration (~10s). It lacks explicit when-not-to-use guidance, but given the siblings' purposes, usage is well implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
o1_healtho1 HealthARead-only
Check o1.exchange aggregator liveness (GET /health). No auth, no parameters. Returns { ok, raw }.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by specifying the HTTP endpoint, the return format { ok, raw }, and confirming no authentication or parameters. No contradiction with 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?
Single sentence, front-loaded with the main purpose, no 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?
For a simple health check with no parameters and no output schema, the description covers purpose, behavior, auth requirements, and return format completely.
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?
No parameters exist; schema coverage is 100%. The description confirms 'no parameters', reinforcing the empty schema.
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 'Check' and the resource 'o1.exchange aggregator liveness', and explicitly mentions the HTTP method '/health'. It distinguishes from siblings which are quote and DEX listing 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 implicitly indicates usage as a liveness check with 'No auth, no parameters', but does not explicitly state when to use or not use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
o1_list_supported_dexeso1 Supported DEXesARead-only
List the DEX venues (DexId enum) the o1 aggregator can route through on Base. No parameters.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, and the description adds specific behavioral context: it lists on Base and provides DexId enum values, beyond what annotations convey.
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 concise sentence, front-loaded with key information, no extraneous 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?
The simple tool requires only what, where, and parameter absence; description covers all adequately.
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?
With zero parameters and 100% schema coverage, the description's mention of 'No parameters' adds clarity; baseline for 0 params 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 clearly states the verb (list), resource (DEX venues), and context (on Base), and distinguishes itself from sibling tools like o1_get_quote and o1_health.
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 usage (listing supported DEXes) and states no parameters, but lacks explicit guidance on when to use this tool versus alternatives.
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. Dates show when Glama detected each change.
3 tool updates
v0.1.0- First observed
o1_get_quote - First observed
o1_health - First observed
o1_list_supported_dexes
TDQS
Each tool has a clearly distinct purpose: quotes, health check, and listing supported DEXs. No overlap or ambiguity.
All tools follow the 'o1_' prefix with descriptive names. While 'o1_health' is a noun instead of verb_noun, the pattern is still clear and consistent.
Three tools is appropriate for a focused read-only aggregator interface. Each tool serves a necessary function without excess.
Covers core read operations (quote, health, supported DEXs) for the aggregator. Missing swap execution or token details, but the scope is explicitly read-only.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Multi-aggregator swap router for AI agents on Base. 10 bps fee. MCP-native, non-custodial.
Doc search, intent & cross-chain swaps, limit orders, portfolio, spot prices, gas & all APIs.
Read-only on-chain intelligence for AI agents on Base: balances, tokens, gas, tx status.
51Read-only on-chain intelligence for AI agents on Base: balances, tokens, gas, tx status.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables cross-chain cryptocurrency swap quotes and operations using the deBridge DLN protocol. Provides read-only access to swap estimates, supported chains, token information, and order status tracking across multiple blockchain networks.1-
- AlicenseAqualityCmaintenanceOn-chain price feeds from Base DEX pools. Get spot prices, TWAP, liquidity depth, price impact, and historical OHLCV.7541MIT
- AlicenseNot gradedqualityDmaintenanceFree DEX aggregator API that returns executable swap calldata across 46 EVM chains. No API key required. Single GET request returns ready-to-sign transactions for any token pair.22MIT

paladin-swap-mcpofficial
AlicenseNot gradedqualityFmaintenanceMulti-aggregator swap router for AI agents on Base. MCP-native, best-of-N across 0x and Velora, current flat 10 bps fee.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mannutech/o1-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server