Skip to main content
Glama
mannutech
by mannutech

o1-mcp

CI License: MIT

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

o1_health

GET /health

Liveness check. No auth.

o1_get_quote

POST /quote

Primary. Quote a swap → compact route summary + raw.

o1_list_supported_dexes

The DEX venues the router can use on Base.

o1_build_swap_transaction

POST /submit

Gated. Turn a quoteId into unsigned calldata.

o1_execute_swap

POST /execute

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: true on the gated tools, or the calldata's value comes back 0. 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 tools registered in Claude Code

o1_health returns ok:true and o1_list_supported_dexes lists 21 venues on Base

o1_health → ✅ /health returned { ok: true } · o1_list_supported_dexes21 DEX venues on Base (chain ID 8453). The gated o1_build_swap_transaction and o1_execute_swap tools appear once O1_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-only

o1_list_supported_dexesUNIV2, 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_URL

Add 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

O1_API_BASE_URL

Aggregator base URL, no trailing slash. Prod: https://quiet-bloodhound-531.convex.site.

O1_API_KEY

for non-health

Sent as x-api-key (issued by o1). Redacted from all output.

O1_DEFAULT_SLIPPAGE_BPS

100

Default slippage (bps) when a quote omits it.

O1_ALLOWED_CHAIN_IDS

8453

Chain allowlist. Base only (phase 1).

O1_ENABLE_BUILD_TX

false

Register the gated /submit + /execute tools.

O1_HTTP_TIMEOUT_MS

8000

Per-request timeout (ms).

O1_MAX_RETRIES

2

Retries for /health & /quote on 429/5xx.

O1_ALLOW_HIGH_SLIPPAGE

false

Allow slippage above the 2000 bps cap.

O1_LOG_LEVEL

info

debug/info/warn/error. Logs go to stderr only.

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 mapped400 invalid input · 401 auth · 429 rate-limited (with backoff) · 5xx upstream. 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 tsx

License

MIT

Available Tools

3 tools
o1_get_quoteo1 Get QuoteA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
feeBpsNoIntegrator fee in bps.
chainIdNoChain id. Base (8453) only; other chains are rejected.
maxHopsNoMax route hops.
tokenInYesInput token: an EVM address or "ETH".
amountInYesAmount of tokenIn in base units (wei), as a decimal string > 0.
tokenOutYesOutput token: an EVM address or "ETH".
slippageBpsNoMax slippage in bps (0..2000). Defaults to 100.
allowedDexesNoRestrict routing to these DEX ids.
splitEnabledNoAllow split routing across venues.
timeBudgetMsNoUpstream routing time budget in ms (50..10000).

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 HealthA
Read-only

Check o1.exchange aggregator liveness (GET /health). No auth, no parameters. Returns { ok, raw }.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 DEXesA
Read-only

List the DEX venues (DexId enum) the o1 aggregator can route through on Base. No parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 3 tool updatesv0.1.0
    • First observedo1_get_quote
    • First observedo1_health
    • First observedo1_list_supported_dexes

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: quotes, health check, and listing supported DEXs. No overlap or ambiguity.

Naming Consistency4/5

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.

Tool Count5/5

Three tools is appropriate for a focused read-only aggregator interface. Each tool serves a necessary function without excess.

Completeness4/5

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

ActivityStale
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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
    -
  • A
    license
    A
    quality
    C
    maintenance
    On-chain price feeds from Base DEX pools. Get spot prices, TWAP, liquidity depth, price impact, and historical OHLCV.
    7
    54
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Free 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.
    22
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Multi-aggregator swap router for AI agents on Base. MCP-native, best-of-N across 0x and Velora, current flat 10 bps fee.
    1
    MIT

Latest Blog Posts

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