AlphaPipeline
AlphaPipeline is a pay-per-call, x402-secured market-data/security API served as a remote MCP server for on-chain trading agents.
Token pre-trade safety checks: honeypot/tax/mint risk (
security.token_risk), LP lock/burn audit (security.contract_health_audit), and a bundled one-call diagnostic (security.token_diagnostic) before buying or swapping.Free onboarding tools: Korea kimchi-premium alerts (
market.kimchi_alert) and token vesting/unlock dump-risk (unlocks.dump_risk) require no payment.DEX liquidity and slippage estimates: pool depth, estimated slippage for a trade size, and fixed $1k/$5k/$10k slippage tiers (
dex.liquidity_slippage).Derivatives analytics: perpetual funding rates, funding-APR carry-trade matrix, and Hyperliquid whale position audits with leverage/liquidation risk flags.
Arbitrage and prediction-market tools: CEX-DEX spread checks (
arb.spread_matrix), Polymarket neg-risk basket arbitrage, and order-book exit-capacity audits.Macro context: countdown to FOMC/CPI/NFP events (
calendar.macro_dday).Webpage-to-markdown conversion: clean, LLM-friendly markdown from any public URL (
tools.ai_markdown).x402/MCP access: no signup or API key; discovery is free, paid tools settle in USDC on Base, and it works as a remote MCP server or plain REST.
AlphaPipeline
A pre-flight safety gate for on-chain trading agents — rug-pull/honeypot checks before you buy, plus market/derivatives data — pay-per-call ($0.005–$0.03 USDC), no signup, no API key, no OAuth. Check a token for honeypot/tax/liquidity risk before a swap, or pull funding rates, DEX slippage, Korea price premiums, and Polymarket arbitrage signals. Authenticate and pay in a single request via the x402 protocol (HTTP 402) on Base, or call it as a remote MCP server from Claude Desktop, Cursor, or any MCP client.
Why AlphaPipeline
AlphaPipeline is a machine-first data API. Every endpoint is metered per call using x402: a request without a payment header gets back a standard HTTP 402 response describing exactly how to pay (asset, amount, network, recipient). No account creation, no dashboard, no API key issuance — sign, retry the request with the payment attached, and you get the data back in the same request/response cycle.
It is also exposed as a remote MCP server (POST /mcp) so agent frameworks (Claude Desktop, Cursor, LangChain, CrewAI, and anything else that speaks MCP) can discover and call it with zero custom integration code.
The security cluster is the most battle-tested part of this API. security.token_risk, security.contract_health_audit, and security.token_diagnostic have been run as a live pre-buy safety gate ahead of real on-chain swaps on Base — not just informational data, but an actual pass/fail input wired into a trading pipeline before it risked funds. None of the three return a qualitative verdict field (no safe_to_execute: true/false) — they return raw GoPlus/Honeypot.is numbers and leave the buy/no-buy decision to your own code.
Discovery is always free.
initializeandtools/listnever require payment — browse the full tool catalog before you decide to pay.Two tools are permanent free onboarding endpoints (
unlocks.dump_riskandmarket.kimchi_alert, see below) so an agent can verify connectivity, latency, and response schema before it starts paying for the security cluster and the rest.Settlement is Coinbase CDP (Developer Platform) Facilitator on Base mainnet (
eip155:8453), asset USDC (0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913).
The endpoints have not been reviewed by Coinbase — please ensure you trust them prior to sending funds.
Related MCP server: kr-crypto-intelligence
Quickstart — Remote MCP
Add this to your MCP client's config (Claude Desktop claude_desktop_config.json, Cursor .cursor/mcp.json, or equivalent):
{
"mcpServers": {
"alphapipeline": {
"url": "https://alphapipeline-eu.onrender.com/mcp"
}
}
}tools/list works immediately with no payment. tools/call on a priced tool requires an x402-aware client that can sign and retry a payment (a wallet-holding bot/agent client — most stock chat UIs cannot pay automatically). See examples/ for a working Python client using the official x402 SDK.
Quickstart — Plain REST / x402
curl -s "https://alphapipeline-eu.onrender.com/v1/security/token-risk?chain_id=8453&contract_address=0x..."
# -> HTTP 402, payment terms in the `payment-required` response header (base64 JSON)
# sign a payment, retry with the PAYMENT-SIGNATURE header attached -> 200 + dataNote for client authors: this server speaks x402 v2 — the 402 response body is an empty
{}; the actual payment terms (accepts array, price, asset, pay-to address) are base64-JSON in thepayment-requiredresponse header, not the body. A client written against the older body-shaped convention will get an empty object with no error, not a loud failure. Decode the header instead.
Note on
unlocks.dump_riskandmarket.kimchi_alert: both are intentionally free (no x402 payment required) as onboarding tools — they're informational market-context signals, not part of the validated pre-trade security cluster (security.token_risk,security.contract_health_audit,security.token_diagnostic), which remains paid. If a third-party discovery catalog (e.g. x402 Bazaar) still shows a stale non-zero price for either from before this change, treat this server's own/response and MCPtools/listoutput as the source of truth — they always reflect the live price.Note on tool names: MCP tool names use a
domain.tool_namedot-notation (e.g.market.kimchi_alert) so the tool list forms a navigable tree by domain. The REST paths under/v1/<domain>/...are unaffected by this and remain stable.
Full protocol reference: /llms.txt · x402 docs
Try it now — no wallet, no signup, no payment
Before wiring up a paying client, run check-my-slippage to see this service return real, live data against a production endpoint:
npx check-my-slippageReal output (captured 2026-09-18, straight from production — not a mocked sample):
Checking live Polymarket exit-liquidity via AlphaPipeline...
Market: will-the-fed-decrease-interest-rates-by-25-bps-after-the-october-2026-meeting-... (sell)
Position size: 500 shares
Executable: true
Best quote: $0.0060
Avg exit price: $0.0060
Price impact: 0%
Data source: polymarket-clob
Latency: 88ms
Want this for any market/size, in your own bot?
-> https://github.com/parkyucheol-del/alphapipelineThis calls the free, rate-limited (10/min per IP) GET /v1/prediction/preview-slippage — no payment header, no query params, always runs against a fixed benchmark market so you can judge data quality before paying for prediction.exit_capacity_audit, which takes any market/size you supply. If npx check-my-slippage doesn't resolve on your machine, call the endpoint directly instead: curl https://alphapipeline-eu.onrender.com/v1/prediction/preview-slippage, or run it from source: node check-my-slippage/bin/index.js from a clone of this repo.
Copy-paste client — pre-flight safety gate before a DEX buy
If you're building a sniping/discovery bot that buys new tokens on Base, this is the pattern our own dogfooding bot (alphapipeline-dogfood-bot) uses as a hard, non-bypassable gate before every on-chain purchase: pay $0.03 for security.token-diagnostic, then apply your own thresholds to the raw fields it returns (this server never returns a safe_to_buy: true/false verdict — see Why AlphaPipeline). Adapted from examples/client_example.py:
# pip install "x402[https]" eth_account httpx
import asyncio, os
from eth_account import Account
from x402 import x402Client
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client
API = "https://alphapipeline-eu.onrender.com"
async def is_safe_to_buy(contract_address: str, chain_id: int = 8453) -> bool:
account = Account.from_key(os.environ["EVM_PRIVATE_KEY"]) # dedicated small wallet only
client = x402Client()
register_exact_evm_client(client, EthAccountSigner(account))
async with x402HttpxClient(client) as http:
r = await http.get(f"{API}/v1/security/token-diagnostic",
params={"contract_address": contract_address, "chain_id": chain_id})
await r.aread()
diag = r.json() # $0.03 USDC charged on Base mainnet — no free tier for this one
return (
diag.get("is_honeypot") is not True
and (diag.get("buy_tax_pct") or 0) <= 10
and (diag.get("sell_tax_pct") or 0) <= 10
and diag.get("liquidity_health") in ("LOCKED", "PARTIALLY_LOCKED")
)
if __name__ == "__main__":
print(asyncio.run(is_safe_to_buy("0xYourTargetTokenContract")))Tune the thresholds (buy/sell tax %, which liquidity_health values you accept, risk_flags_count, etc.) to your own risk tolerance — the full field list is in the security.token-diagnostic schema below. This is exactly the logic our dogfooding bot runs on every candidate before it will spend real USDC.
Tools / Endpoints
Tool (MCP) | REST endpoint | Price | What it does |
|
| $0.02 | Pre-trade check — call before buying or swapping: GoPlus/Honeypot.is-backed contract security audit (honeypot flag, buy/sell tax, mintability, ownership renouncement, plus individual GoPlus signals — cannot_sell_all, hidden_owner, transfer_pausable, selfdestruct, is_blacklisted, slippage_modifiable, owner concentration — folded into risk_flags). |
|
| $0.02 | Pre-trade check — LP (liquidity pool) lock/burn audit reusing the same GoPlus data as token-risk: flags whether liquidity is locked, burned, or freely held by a single wallet before you trust it. |
|
| $0.03 | Pre-trade check — bundles token_risk + contract_health_audit into one call (same GoPlus data, no new upstream calls) for a single go/no-go input before a swap. No composite score or letter grade — just both tools' fields plus a deduped risk_flags union. Cheaper than calling both separately. |
|
| $0.02 | GeckoTerminal-backed DEX pool liquidity and estimated trade slippage, plus fixed $1k/$5k/$10k |
|
| $0.02 | Audits a Hyperliquid wallet address you supply: open positions, leverage, |
|
| $0.01 | Bybit (primary) / Binance (fallback) perpetual futures funding rate, plus |
|
| $0.01 | Annualizes the current funding rate into an APR and computes carry-trade breakeven days against an assumed round-trip trading cost. |
|
| $0.02 | CEX (Coinbase spot) vs DEX (GeckoTerminal) spread calculator with gas-adjusted profitability flag, plus |
|
| $0.03 | Detects basket arbitrage in a Polymarket neg-risk (mutually-exclusive, multi-outcome) event — a full YES basket always settles to $1, so a basket price away from $1 (after costs) is a near risk-free edge. Also returns the actual liquidity-bottleneck size executable right now (VWAP-priced, not just top-of-book), and |
|
| $0.02 | Walks a Polymarket outcome's live order book to check whether a given position size can actually be filled right now, at what average price and price impact, plus |
|
| $0.01 | Countdown to the nearest major US macro event (FOMC, CPI, NFP) from a static, pre-loaded calendar — no external API call, never fails on an upstream outage. |
|
| $0.005 | Converts any webpage URL into clean, ad-free Markdown optimized for LLM context windows. |
|
| Free | Real-time Korea (Upbit) vs global reference price (Coinbase spot, CoinGecko fallback — not a live Binance orderbook) premium — the "kimchi premium" — with reverse-premium and 1h-surge alerts. Kept free by default as an onboarding tool: informational market context, not part of the paid pre-trade security cluster. |
|
| Free | On-chain (Sablier) proxy for token unlock/vesting dump risk, including |
Every response is timestamped in both UTC and KST, and every priced endpoint's payment prompt reads "Paid in USDC on Base." so a human looking at the 402 screen in a browser isn't left guessing which chain's USDC to send.
Data sources
Every number returned is either passed through unchanged from one of these upstreams, or a deterministic calculation on top of them — never a third-party estimate presented as our own:
Domain | Upstream(s) | Notes |
| Upbit (KRW) + Coinbase spot, CoinGecko fallback | Not a live Binance orderbook, despite the legacy |
| GoPlus Security API, Honeypot.is fallback | Same underlying GoPlus data reused across all three; no independent second opinion. |
| Bybit v5 (primary), Binance premiumIndex (fallback) |
|
| Hyperliquid public API ( | No leaderboard/discovery endpoint exists upstream — you must supply the wallet address. |
| GeckoTerminal | Liquidity depth is a constant-product (50:50) approximation, not per-token real reserves — disclosed via the response's own |
| On-chain Sablier vesting streams (default, free) | VC/team classification and exact unlock timing require a paid DropsTab key (disabled by default) and are otherwise always |
| Static, pre-loaded calendar | No external API call — never fails on an upstream outage, but needs manual updates as events roll off the calendar. |
| Polymarket Gamma API (event/market metadata) + Polymarket CLOB API (order book) |
|
| The URL you pass in | No third-party data provider — we fetch and convert the page you give us. |
Disclaimer
AlphaPipeline provides quantitative market data and analytics for informational and research purposes only. It does not execute trades, place orders, hold custody of user funds, or provide brokerage/betting/gambling services of any kind — it is a read-only data layer. Users are solely responsible for ensuring their use of this data complies with the laws and regulations applicable in their own jurisdiction.
Links
Live service: https://alphapipeline-eu.onrender.com
Agent-readable spec: https://alphapipeline-eu.onrender.com/llms.txt
OpenAPI docs: https://alphapipeline-eu.onrender.com/docs
x402 Bazaar listing: https://www.x402bazaar.org/
Glama listing (verified, TDQS A / 4.4): https://glama.ai/mcp/connectors/com.onrender.alphapipeline/alpha-pipeline-agent-mcp
x402 protocol: https://docs.x402.org
License
See LICENSE.
Available Tools
14 toolsarb.spread_matrixAInspect
CEX-DEX arbitrage spread calculator: checks whether a global reference
price (Coinbase spot, CoinGecko fallback - NOT a specific exchange
orderbook, despite internal naming) and a DEX pool price (GeckoTerminal)
diverge enough to be worth trading after an assumed flat gas cost. Returns
gross/net spread, direction, and is_profitable.
Use this before executing a cross-venue arbitrage trade, or for kimchi-style
premium checks on non-Korean venues (use market.kimchi_alert instead for the
Upbit-specific case). net_spread_pct does NOT subtract the DEX pool's own
swap fee (see pool_fee_pct, typically 0.05-1%), CEX trading fees, CEX
deposit/withdrawal availability, or slippage beyond trade_size_usd - a
spread that clears the threshold before those costs may not clear it after,
so always re-verify with live quotes before executing. Requires exactly one
of pool_address or token_address; passing neither raises "invalid_input".
Args:
symbol: Ticker symbol, e.g. "SUI", "BTC", "ETH".
network: GeckoTerminal network id (default "base").
trade_size_usd: Hypothetical trade size in USD (default 1000.0).
min_spread_threshold_pct: Net spread threshold (%) above which
is_profitable is true (default 0.8).
pool_address: A specific DEX pool contract address.
token_address: Token contract address (auto-picks the most liquid pool).
One of pool_address or token_address is required.
Returns:
On success: {"success": true, "gross_spread_pct", "net_spread_pct",
"direction", "is_profitable", ...}
On failure: {"success": false, "error": {"type", "message"}}
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | ||
| network | No | base | |
| pool_address | No | ||
| token_address | No | ||
| trade_size_usd | No | ||
| min_spread_threshold_pct | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently reveals that net_spread_pct does NOT subtract pool swap fees, CEX fees, deposit/withdrawal availability, or slippage beyond trade_size_usd, and warns that a spread clearing the threshold may not be profitable after those costs. It also mentions the invalid_input error for missing addresses and the fallback price source logic. This is exemplary transparency.
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: purpose, usage, caveats, parameter list, and return format are clearly separated. Each sentence adds value—no filler. The caveats about fee exclusions are essential and not redundant. Despite length, it's warranted given the tool's complexity and lack of schema documentation.
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 six parameters, no output schema, and no annotations, the description covers all necessary aspects: what the tool does, when to use it, parameter semantics, return structure (success/failure), and critical limitations. Nothing an agent needs to decide correctness or call the tool properly 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 description coverage is 0%, so the description is the sole source of parameter meaning. It provides examples for symbol, explains network's GeckoTerminal id default, clarifies trade_size_usd as hypothetical USD size, min_spread_threshold_pct as the threshold for is_profitable, and distinguishes pool_address (specific pool) from token_address (auto-picks most liquid pool) with the required-one constraint. Every parameter is fully explained beyond its type/name.
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 ('checks whether... diverge enough to be worth trading') on a clear resource (CEX-DEX arbitrage spread) and differentiates from sibling market.kimchi_alert by explicitly noting when to use that alternative instead. The distinction between Coinbase/CoinGecko reference and GeckoTerminal DEX price is precise, leaving no ambiguity about what the tool computes.
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 says to use this before executing cross-venue arbitrage or for non-Korean kimchi-style checks, and names market.kimchi_alert as the alternative for Upbit-specific cases. It also states the requirement of exactly one of pool_address or token_address, clarifying the input constraint. This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar.macro_ddayAInspect
Countdown to the nearest major US macro event (FOMC/CPI/NFP): event name,
exact date/time (UTC and KST), a D-Day countdown, impact level, and the
next few upcoming events. Static, pre-loaded 2026 calendar sourced from
official Federal Reserve/BLS release schedules - no live external API call,
so this never fails on an upstream outage and takes no parameters.
Use this to plan position sizing or avoid holding risk into a high-impact
macro print. Does NOT cover non-US events (e.g. ECB, BOJ) or company
earnings - only FOMC/CPI/NFP are tracked. Takes no arguments; calling it
with any input is unnecessary.
Returns:
On success: {"success": true, "nearest_event", "days_until", ...}
On failure: {"success": false, "error": {"type", "message"}}
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and succeeds: it reveals the tool is static and pre-loaded for 2026, makes no live API call, cannot fail due to upstream outage, accepts no parameters, and specifies success/error return structures. This gives the agent realistic expectations about freshness and failure modes.
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 well-structured with a summary, usage guidance, exclusions, and return format. It loses a point for minor redundancy between 'takes no parameters' and 'Takes no arguments; calling it with any input is unnecessary,' but every other sentence carries useful 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?
For a zero-parameter, read-only calendar tool, the description is complete: it states the data source, scope, update nature, use case, output fields, and failure format. Even without an output schema, the agent can predict what a successful call returns and how to interpret errors.
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 no parameters, so the baseline is 4. The description reinforces this by stating twice that the tool takes no arguments and that any input is unnecessary, which removes any temptation to pass arguments.
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 opening line precisely describes the tool's output: a countdown to the nearest FOMC/CPI/NFP event with date/time, impact, and upcoming events. It also disambiguates by limiting coverage to US macro events and naming the exact event types tracked, so an agent won't mistake it for an earnings or non-US calendar.
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 tells the agent to use this for position sizing or holding risk planning before high-impact macro prints. It also states exclusions: non-US events and earnings are not covered, and only FOMC/CPI/NFP are tracked, making the appropriate use boundary clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_to_markdownAInspect
Convert a webpage URL into clean, AI-friendly markdown by performing a live
HTTP GET (15s timeout) and stripping ads, navigation, and scripts, keeping
only the main content (capped at 3MB of source HTML).
Use this when you need to read a webpage's actual content but want to avoid
wasting tokens on HTML tags, ads, navigation menus, and scripts - or when raw
HTML parsing is causing hallucinations in downstream reasoning. Call it before
summarizing, extracting facts from, or answering questions about any arbitrary
public URL. Do NOT use it for: URLs requiring authentication/login (no cookies
or headers are sent); non-HTML resources such as PDFs, images, or other binary
files (returns "unsupported_content"); or JavaScript-rendered single-page apps
(this does a static HTML fetch, not a browser render, so client-side-only
content may come back sparse or empty). No other tool here does markdown
conversion - the sibling get_token_dump_risk is unrelated.
Failure modes returned as structured errors (never raised): "timeout" (15s
exceeded), "http_error" (non-2xx from the target site), "network_error"
(DNS/connection failure), "unsupported_content" (not HTML or over 3MB),
"invalid_url" (missing http(s):// scheme).
Args:
url: The full absolute URL of the webpage to convert, including scheme
(e.g. "https://example.com/article"). Relative paths are not accepted.
Returns:
On success: {"success": true, "url", "title", "markdown", "char_count"}
On failure: {"success": false, "error": {"type", "message"}}
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it delivers: it discloses the 15s timeout, 3MB source cap, no cookies/headers sent, static-HTML behavior, and structured error modes with their meanings. It also specifies that failures are returned as structured errors, never raised, which is important invocation 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 dense but well-organized: purpose first, then use cases, exclusions, failure modes, args, and returns. Every sentence adds actionable information, and the structure makes it easy for an agent to find the relevant detail 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 tool has no output schema and minimal parameter schema, so the description must carry the full contract. It does: it documents the success return shape, the failure return shape, the error types, the URL format, the timeout, and the content cap. Nothing essential is missing for an agent to invoke and interpret the result.
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 0%, but the description fully compensates for the single url parameter. It specifies that the value must be a full absolute URL including scheme, gives an example, and explicitly states that relative paths are not accepted.
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: 'Convert a webpage URL into clean, AI-friendly markdown' via a live HTTP GET, then explains the transformation (stripping ads, navigation, scripts). It also explicitly differentiates this tool from its siblings, saying no other tool here does markdown conversion and that get_token_dump_risk is unrelated.
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 when-to-use guidance: read a webpage's content, avoid wasting tokens on HTML/ads/navigation, and call it before summarizing or answering questions about arbitrary public URLs. It also lists explicit exclusions: authenticated URLs, non-HTML resources, and JavaScript-rendered SPAs, and names the sibling tool it is not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
derivatives.funding_apr_matrixAInspect
Annualize a perpetual funding rate into APR + carry-trade breakeven days:
evaluates a spot+perpetual cash-and-carry trade, tells you which side
collects funding, and how many days of income recoups round-trip costs.
Pure calculation layer on top of get_funding_rate - no extra upstream call,
so prefer this over get_funding_rate whenever you need the APR/breakeven
view rather than the raw rate.
Use this to evaluate a spot+perpetual carry trade. Does NOT account for
margin borrow cost, spot-perp basis risk, or perp liquidation risk - treat
breakeven_days as a rough estimate, not a guaranteed profit timeline.
Args:
symbol: e.g. "BTC", "ETH", or "BTCUSDT".
assumed_round_trip_cost_pct: Combined entry+exit trading fee % across
both legs (default 0.2). Pass your own fee tier for accuracy.
Returns:
On success: {"success": true, "apr_pct", "collects_funding_side",
"breakeven_days", ...}
On failure: {"success": false, "error": {"type", "message"}}
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | ||
| assumed_round_trip_cost_pct | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden, and it delivers: it discloses this is a 'pure calculation layer' with 'no extra upstream call' (implying fast, non-mutating), lists excluded cost/risk factors, and warns that breakeven_days is 'a rough estimate, not a guaranteed profit timeline.' The only minor gap is a slight ambiguity in 'on top of get_funding_rate - no extra upstream call' that never fully clarifies whether the rate is fetched internally.
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 structure is well front-loaded: purpose first, routing second, limitations third, then Args/Returns. Nearly every sentence earns its place, but there is minor redundancy — 'evaluates a spot+perpetual cash-and-carry trade' (paragraph 1) and 'Use this to evaluate a spot+perpetual carry trade' (paragraph 3) restate the same idea.
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 there is no output schema and no annotations, the description covers all bases: purpose, sibling routing, limitations, parameter semantics, and an explicit success/failure return contract ('apr_pct', 'collects_funding_side', 'breakeven_days' vs. 'error': {'type', 'message'}). Nothing an agent needs to call this tool correctly 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 description coverage is 0%, so the description fully compensates. symbol gets concrete format examples ('BTC', 'ETH', 'BTCUSDT'), and assumed_round_trip_cost_pct gets a precise definition ('combined entry+exit trading fee % across both legs') plus actionable guidance to 'pass your own fee tier for accuracy.' An agent can determine correct values for both parameters without opening 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 opens with a specific verb+resource: 'Annualize a perpetual funding rate into APR + carry-trade breakeven days,' and concretely states what it computes (which side collects funding, how many days recoup round-trip costs). It also differentiates from the sibling derivatives.funding_rate by positioning itself as the APR/breakeven view rather than the raw-rate view.
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?
Explicit guidance is given: 'prefer this over get_funding_rate whenever you need the APR/breakeven view rather than the raw rate,' and it names the exact use case ('Use this to evaluate a spot+perpetual carry trade'). It also states what the tool does NOT cover (margin borrow cost, basis risk, liquidation risk), giving the agent clear when-not-to-trust conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
derivatives.funding_rateAInspect
Get perpetual futures funding rate (Bybit primary, Binance fallback) to
gauge long/short crowding before entering or hedging a position.
Use this when asked about funding rate levels or funding-rate arbitrage/carry
trade opportunities. If you also need the trade annualized into an APR with
a carry-trade breakeven-days estimate, use get_funding_apr_matrix instead -
it already calls this internally, so calling both is redundant. Check the
data_source field to see whether Bybit or the Binance fallback answered;
predicted_rate equals funding_rate because neither exchange exposes a
separate forecast field (not a bug). Also returns mark_price/index_price
(populated on both the Bybit and Binance paths) and open_interest_usd
(Bybit path only - always null on the Binance fallback, since Binance's
premiumIndex endpoint doesn't report open interest).
Args:
symbol: e.g. "BTC", "ETH", or "BTCUSDT" (non-USDT symbols are
normalized to USDT pairs).
Returns:
On success: {"success": true, "funding_rate_percentage",
"funding_interval_hours", "mark_price", "index_price",
"open_interest_usd", "data_source", ...}
On failure: {"success": false, "error": {"type", "message"}}
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so thoroughly: it discloses the Bybit-first/Binance-fallback data_source behavior, explains that predicted_rate equals funding_rate is not a bug, and documents when open_interest_usd is always null. These are exactly the behavioral quirks an agent needs before trusting the result.
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 purpose and usage guidance are front-loaded, and each subsequent sentence adds a distinct piece of behavior or return-field context. The Args and Returns sections organize technical detail cleanly, 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?
With no output schema, the description enumerates the success fields, the failure structure, per-data-source field availability, and the key fallback caveat. For a one-parameter read tool with complex sourcing behavior, this is a complete invocation contract.
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 0%, but the description fully compensates for the sole symbol parameter by giving concrete examples ('BTC', 'ETH', 'BTCUSDT') and the normalization rule for non-USDT symbols. This leaves no ambiguity about what to pass.
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 opens with a specific verb and resource: 'Get perpetual futures funding rate', names the primary and fallback sources, and gives an intended use case. It also explicitly differentiates this tool from get_funding_apr_matrix, so an agent can distinguish them 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?
The description states exactly when to use this tool ('when asked about funding rate levels or funding-rate arbitrage/carry trade opportunities') and names the alternative with an explicit exclusion: use get_funding_apr_matrix instead when APR/breakeven is needed, since calling both is redundant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
derivatives.whale_position_auditAInspect
Audit a Hyperliquid wallet's open perpetual futures positions: side,
size, leverage, max_leverage, unrealized PnL, return_on_equity_pct,
liquidation price, and distance-to-liquidation percentage for every open
position (max_leverage and return_on_equity_pct are Hyperliquid's own
reported fields, not derived by this tool).
Use this only when you already have a specific Hyperliquid/EVM wallet address
(from an explorer, a screenshot, on-chain sleuthing, etc.) and want to audit
its current exposure. Do NOT use it to discover or rank "smart money" wallets
- Hyperliquid's public API has no leaderboard or large-trader disclosure
endpoint, so this tool cannot identify addresses for you, only audit ones you
provide. risk_flags (HIGH_LEVERAGE, NEAR_LIQUIDATION) are fixed numeric
thresholds, never a qualitative judgment.
Args:
address: Hyperliquid/EVM wallet address to audit (0x...).
Returns:
On success: {"success": true, "positions": [...], "risk_flags", ...}
On failure: {"success": false, "error": {"type", "message"}}
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and it provides meaningful caveats: max_leverage and return_on_equity_pct are Hyperliquid-reported fields, risk_flags are fixed numeric thresholds, and the tool cannot identify addresses. It also documents success/failure return shapes, though it does not explicitly state read-only 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 slightly long but well organized: purpose, usage boundaries, caveats, args, and returns are separated. Every section adds operational value, and the core purpose is front-loaded in the first sentence.
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 tool with no output schema, the description is complete: it lists all position fields, return success/failure shapes, risk-flag semantics, and the address-selection context. Nothing an agent needs to call it correctly 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 0% for the single required parameter, but the description compensates by defining it as a 'Hyperliquid/EVM wallet address to audit (0x...)' and adding source context (explorer, screenshot, on-chain sleuthing). This is sufficient for a single simple parameter, though no address validation rules are given.
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 and resource ('Audit a Hyperliquid wallet's open perpetual futures positions') and enumerates the exact fields returned. It also explicitly distinguishes what the tool is not for ('Do NOT use it to discover or rank smart-money wallets'), preventing confusion with sibling analysis 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?
It gives an explicit precondition ('Use this only when you already have a specific Hyperliquid/EVM wallet address') and an explicit exclusion ('Do NOT use it to discover or rank smart money wallets'). This lets an agent decide between this and address-discovery/screening siblings without inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dex.liquidity_slippageAInspect
Estimate DEX pool liquidity and trade slippage (GeckoTerminal): total USD
liquidity, 24h volume, an estimated slippage percentage for the given
trade size, and slippage_tiers at fixed $1k/$5k/$10k sizes. Approximated
under a documented constant-product (50:50) assumption since GeckoTerminal's
free API exposes only combined USD liquidity, not per-token reserves.
Also returns quote_token_is_stablecoin (false/null means this pool isn't
USD-quoted - an extra hop is needed to reach USD, not accounted for here),
pool_fee_pct (the pool's swap fee tier, disclosed for reference only - not
subtracted from the slippage estimate), and assumed_gas_cost_usd (a flat
per-network estimate, not a live quote).
Use this before sizing a trade or comparing pools for a given token, to
check depth before swapping. Do NOT treat estimated_slippage_pct or
slippage_tiers as an exact on-chain quote, especially for concentrated-
liquidity or stableswap pools - always re-verify with a live quote before
executing. Requires exactly one of pool_address or token_address; passing
neither raises an "invalid_input" error.
Args:
trade_size_usd: Hypothetical trade size in USD.
network: GeckoTerminal network id, e.g. "base", "eth" (default "base").
pool_address: A specific pool contract address.
token_address: Token contract address (auto-picks the most liquid pool).
One of pool_address or token_address is required.
Returns:
On success: {"success": true, "total_liquidity_usd",
"estimated_slippage_pct", "slippage_tiers", ...}
On failure: {"success": false, "error": {"type", "message"}}
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | base | |
| pool_address | No | ||
| token_address | No | ||
| trade_size_usd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so thoroughly. It discloses the constant-product 50:50 assumption, the extra-hop limitation when quote_token_is_stablecoin is false/null, that pool_fee_pct is not subtracted, that gas cost is a flat per-network estimate, and that passing neither address triggers an 'invalid_input' error.
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 long but every section earns its place: the core function, data-source assumptions, caveats, parameter semantics, and return shapes. It is front-loaded and logically organized, 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?
For a tool with no output schema and no annotations, the description is remarkably complete. It documents both success and failure return shapes, all caveats about approximation, the dual addressing modes, and the meaning of each returned field. An agent can invoke this tool correctly and interpret its results without further 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?
Schema description coverage is 0%, so the description must compensate, and it does. The Args section explains trade_size_usd as a hypothetical USD size, network with examples and default, pool_address as a specific contract, and token_address as auto-picking the most liquid pool. It also clarifies the exactly-one-of requirement.
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 opens with a specific verb and resource: 'Estimate DEX pool liquidity and trade slippage (GeckoTerminal)' and enumerates the concrete outputs. It is clearly distinct from all sibling tools, which target different domains like token risk, derivatives, arbitrage, or macro events.
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 guidance: 'Use this before sizing a trade or comparing pools for a given token, to check depth before swapping.' It also states what not to do: 'Do NOT treat estimated_slippage_pct or slippage_tiers as an exact on-chain quote... always re-verify with a live quote before executing.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_dump_riskAInspect
Calculate a token's vesting/unlock D-Day, unlock ratio relative to
circulating supply, and a sell-pressure score against real-time volume,
returned as a concise summary report.
Use this to evaluate token unlock/vesting supply overhang risk before
taking mid-to-long term positions. Default data source (on-chain Sablier
vesting, the current configuration - no DropsTab key set) does NOT classify
VC/team vs. other holders and does NOT provide exact unlock timing
(days_until_unlock stays null) - it only reports the currently-locked
supply ratio; treat a null value as "unknown," never as "no risk." On this
on-chain path it also reports vesting_deposit_amount/vesting_withdrawn_amount
(Sablier's own depositAmount/withdrawnAmount, aggregated across streams) and
vesting_progress_pct (withdrawn/deposit * 100) showing how far along the
vesting schedule already is - null when deposit data wasn't available. Do
NOT use it for intra-day slippage or real-time transaction simulation - use
dex.liquidity_slippage for that instead. This tool is free (no payment) as
an onboarding check; every other tool here is a normal read-only call
against app/logic.py.
Args:
symbol: Token ticker symbol (e.g. "ATH", "AO", "CPOOL"). Case-insensitive.
Returns:
Success & data available: {"success": true, "available": true, "symbol",
"unlock_date_utc", "days_until_unlock", "unlock_supply_pct",
"vesting_progress_pct", "volume_impact_pct", "sell_pressure_risk_level", ...}
Success but not yet available:
{"success": true, "available": false, "reason", "message"}
(e.g. the paid data source isn't connected yet, by business decision)
Failure: {"success": false, "error": {"type", "message"}}
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It comprehensively discloses that the default on-chain Sablier source does not classify holders, does not provide exact unlock timing (days_until_unlock stays null), and explains the interpretation of null as 'unknown' not 'no risk'. It also details additional fields (vesting_deposit_amount, vesting_withdrawn_amount, vesting_progress_pct) and their null behavior, as well as the free/read-only nature. This far exceeds typical behavioral transparency.
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 long but every sentence earns its place. It is front-loaded with the purpose, then logically structured into usage guidance, caveats, args, and returns. Despite its length, there is no redundancy; all details are necessary given the lack of annotations and output schema. The structure aids scanning, and the critical caveats are clearly highlighted.
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 complexity (multiple return shapes, data source limitations, null handling) and the absence of an output schema and annotations, the description is exceptionally complete. It covers success with data, success but unavailable, and failure cases, explains edge cases (null days_until_unlock, vesting_progress_pct null), and provides enough context for an agent to correctly interpret results. Nothing essential 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 description coverage is 0%, so the description must compensate. It does so effectively with a dedicated Args section: 'symbol: Token ticker symbol (e.g. "ATH", "AO", "CPOOL"). Case-insensitive.' This adds meaning beyond the raw schema (type: string) by providing examples and case-insensitivity, fully covering the only parameter.
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 specific function: calculating vesting/unlock D-Day, unlock ratio, and sell-pressure score against volume. It uses precise verbs and resources, and explicitly differentiates from siblings by referencing dex.liquidity_slippage as the alternative for intra-day slippage, making its unique purpose unmistakable.
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 states when to use the tool (evaluating token unlock/vesting supply overhang risk before mid-to-long term positions) and when not to use it (not for intra-day slippage or real-time simulation), pointing to the specific alternative tool. It also clarifies the default data source limitations and the meaning of null values, leaving no ambiguity about appropriate contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market.kimchi_alertAInspect
Detect Korea-vs-global crypto price arbitrage (the "kimchi premium"):
whether a coin trades at a premium or discount on Upbit vs a global
reference price (Coinbase spot, CoinGecko fallback - NOT a live Binance
orderbook, despite the legacy binance_price_usdt field name kept for
backward compatibility), a reverse-premium crash-risk flag (-1.5% or
below), and a premium-surge flag (+3 percentage points within the last
hour).
Use this when asked about cross-exchange arbitrage opportunities in Korean
crypto markets, to detect a reverse-premium crash risk, or a sudden premium
surge. This is a live snapshot only - do NOT use it for historical/backtesting
data, or for non-Korean-exchange comparisons (use arb.spread_matrix for a
general CEX-DEX spread check instead).
Args:
symbol: Ticker symbol, e.g. "BTC", "ETH", "SOL" (default "BTC").
Returns:
On success: {"success": true, "symbol", "upbit_price_krw",
"binance_price_usdt" (legacy name, actually Coinbase/CoinGecko),
"cex_reference_price_usdt" (same value, honest name),
"cex_price_source", "kimchi_premium_pct", "premium_change_1h_pct",
"alerts", "thresholds", "notice", ...}
On failure: {"success": false, "error": {"type", "message"}}
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | BTC |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and handles it thoroughly. It reveals that the tool is a 'live snapshot only', that binance_price_usdt is a legacy name actually backed by Coinbase/CoinGecko and 'NOT a live Binance orderbook', and discloses the exact thresholds for the crash-risk and surge flags. It also documents the success/failure return shapes, including the error structure.
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 organized into clear sections: what it does, when to use/not use, args, and returns. Every sentence carries necessary information, including the critical caveat about the legacy field name and the fallback reference source. There is no fluff or repeated schema content.
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 no output schema, the description fully documents the return payload by listing success fields (including the honest cex_reference_price_usdt alias), the failure error structure, and the alert thresholds. Combined with the single well-explained parameter, nothing an agent needs to invoke it correctly or interpret results 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 description coverage is 0%, so the description must compensate, and it does: 'symbol: Ticker symbol, e.g. BTC, ETH, SOL (default BTC)'. This adds semantic meaning beyond the raw schema field and gives concrete examples. The single parameter is fully explained for an agent.
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 opens with a specific verb and resource: 'Detect Korea-vs-global crypto price arbitrage (the kimchi premium)' and explains the Upbit-vs-global-reference comparison, including the two flags. It explicitly names arb.spread_matrix as the tool for non-Korean comparisons, distinguishing itself from the sibling set. This is purpose clarity at the highest level.
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 states 'Use this when asked about cross-exchange arbitrage opportunities in Korean crypto markets' and gives explicit when-not-to-use cases: 'do NOT use it for historical/backtesting data, or for non-Korean-exchange comparisons'. It names the alternative tool (arb.spread_matrix) for the general CEX-DEX spread check. This is fully explicit when/when-not/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prediction.exit_capacity_auditAInspect
Walk a single Polymarket outcome's live order book to determine how much
of a given position size can actually be filled right now, at what
average price, and with how much price impact versus the best quote - a
live, point-in-time snapshot, not historical/average liquidity. Also
returns book_snapshot_time (the book's own reported snapshot timestamp)
and Polymarket's own tick_size/min_order_size for this market (null if the
book response didn't include them).
Use this to validate one leg of an opportunity found by
prediction.neg_risk_arbitrage before committing capital, or whenever you
need real executable liquidity rather than the headline best bid/ask. Do
NOT use for multi-outcome basket arbitrage detection (use
prediction.neg_risk_arbitrage instead). market_slug only resolves an
EXACT Polymarket market slug - no fuzzy keyword search, since a wrong
silent match would be worse than an error here.
Args:
position_size_shares: Number of outcome shares to sell (or buy). Must
be positive.
token_id: The outcome's CLOB token_id / asset_id, if already known.
Provide either this OR market_slug.
market_slug: Exact Polymarket market slug, used to resolve token_id
automatically when not already known.
outcome: "yes" (default) or "no" - which side to resolve when using
market_slug. Ignored if token_id is given directly.
side: "sell" (default) to audit exiting a position against the bid
side, or "buy" to audit entering against the ask side.
Returns:
On success: {"success": true, "executable", "best_quote",
"avg_exit_price", "price_impact_pct", "max_executable_shares", ...}
On failure: {"success": false, "error": {"type", "message"}}
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | sell | |
| outcome | No | yes | |
| token_id | No | ||
| market_slug | No | ||
| position_size_shares | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and does so thoroughly. It states this is a live point-in-time snapshot, not historical/average liquidity, explains returned metadata like book_snapshot_time and tick_size, and documents the success/failure response envelope. It also notes that missing book fields return null, setting expectations for edge cases.
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 longer than average but stays tightly organized with a purpose summary, usage guidance, parameter list, and return-shape note. Every sentence carries necessary information, and the most decision-relevant constraints (live snapshot, single outcome, exact slug) 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 tool with moderate complexity, no annotations, and no output schema, the description is complete. It covers what the tool does, when to use it, what each argument means, and what success and failure look like, including the key computed fields. An agent has enough information to call it correctly and interpret the result.
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 type/default/required info only, with 0% semantic coverage, so the description must explain each parameter. It does: position_size_shares must be positive, token_id and market_slug are alternatives, outcome defaults to 'yes' and is ignored when token_id is provided, and side maps sell to bid and buy to ask. This fully compensates for the schema gaps.
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 opens with a specific verb ('Walk') and resource ('a single Polymarket outcome's live order book') and clearly states the computed outputs: executable size, average price, price impact. It also distinguishes itself from prediction.neg_risk_arbitrage by explicitly scoping to a single leg rather than multi-outcome basket arbitrage.
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 guidance is explicit: validate one leg of an opportunity from prediction.neg_risk_arbitrage, or whenever real executable liquidity is needed. It also gives a clear exclusion: do NOT use for multi-outcome basket arbitrage, directing the agent to prediction.neg_risk_arbitrage instead. The exact-slug warning further clarifies when it is appropriate to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prediction.neg_risk_arbitrageAInspect
Detect basket arbitrage in a Polymarket neg-risk (mutually-exclusive,
multi-outcome) event: a full YES basket across all outcomes always settles
to exactly $1 via Polymarket's neg-risk adapter, so a basket price away
from $1 (after costs) is a near risk-free edge. Also computes
buy/sell_basket_capacity_shares - the actual liquidity-bottleneck size the
thinnest outcome's order book can support within max_slippage_pct - so
this isn't just a top-of-book mirage. Note *_capacity_notional_usd still
prices that size at top-of-book (optimistic beyond the first price level) -
use *_capacity_vwap_notional_usd for the realistic average fill cost. Also
returns oldest_book_snapshot_time, the staleness bottleneck across all legs
(the oldest of each leg's own order-book snapshot timestamp). Polymarket only.
Use this to scan a specific multi-outcome event you already know the slug
for. Do NOT use for binary Yes/No markets (no basket to arbitrage, this
needs 2+ mutually-exclusive outcomes) or for Kalshi (its Data ToS forbids
this use of their data). Pair with prediction.exit_capacity_audit before
sizing a real position on one leg.
Args:
event_slug: Polymarket event slug, from the event's URL on polymarket.com.
assumed_round_trip_cost_pct: Gas + fees + slippage buffer, as a
percentage of $1 basket notional (default 1.5).
max_slippage_pct: How far past each leg's best price to walk the book
when sizing executable basket capacity (default 1.0).
min_net_edge_pct: Minimum net edge (%) required to flag
arbitrage_viable: true (default 1.0).
Returns:
On success: {"success": true, "basket_ask_sum", "basket_bid_sum",
"buy_basket_net_edge_usd", "buy_basket_capacity_shares",
"opportunity", "arbitrage_viable", ...}
On failure: {"success": false, "error": {"type", "message"}}
| Name | Required | Description | Default |
|---|---|---|---|
| event_slug | Yes | ||
| max_slippage_pct | No | ||
| min_net_edge_pct | No | ||
| assumed_round_trip_cost_pct | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and meets it thoroughly. It explains the core mechanism (basket settles to $1), the capacity computation tied to max_slippage_pct, the caveat that notional capacity is optimistic while VWAP capacity is realistic, and the staleness field. It even documents the success and failure return shapes, so the agent knows what to expect.
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?
Although the description is longer than average, every sentence adds operational value: core concept, capacity caveat, staleness explanation, usage boundaries, parameter semantics, and return format. The structure is front-loaded with the main purpose, followed by caveats and usage, then args and returns. No filler or redundant restatement of the tool name exists.
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 no output schema, no annotations, and 0% schema description coverage, this description is unusually complete. It covers what the tool computes, the key output fields, failure behavior, platform restrictions, and parameter meanings. The only minor omission is potential authentication or rate-limit considerations, but these are not essential for a read-only detection tool and are not expected from sibling 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?
Schema description coverage is 0%, so the description must fully compensate, and it does. Each parameter gets a meaningful explanation: event_slug is sourced from the Polymarket URL, assumed_round_trip_cost_pct is defined as a percentage of $1 basket notional, max_slippage_pct controls how far to walk the book, and min_net_edge_pct gates arbitrage_viable. This goes well beyond the bare schema property names.
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 opens with a specific verb and resource: 'Detect basket arbitrage in a Polymarket neg-risk event.' It clearly distinguishes itself from siblings by naming what it is not for (binary markets, Kalshi) and by referencing the companion tool prediction.exit_capacity_audit. An agent can immediately understand exactly what this tool does and how it differs from related prediction and arbitrage 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?
Explicit when-to-use guidance is present: 'Use this to scan a specific multi-outcome event you already know the slug for.' It also gives concrete exclusions ('Do NOT use for binary Yes/No markets... or for Kalshi') and even provides a workflow recommendation to pair with prediction.exit_capacity_audit before sizing a position. This leaves no ambiguity about when to select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security.contract_health_auditAInspect
Audit LP lock/burn status for a token contract (GoPlus): lp_locked_pct,
lp_burned_pct, top_unlocked_holder_pct, rolled up into a liquidity_health
category (LOCKED / PARTIALLY_LOCKED / UNLOCKED / NO_LP_DATA). A key
rug-pull signal that get_token_risk does not cover.
Use this to check whether a token's liquidity is locked, burned, or freely
held by a single wallet before trusting it - complements, not replaces,
get_token_risk (honeypot/tax/mint checks). Deliberately does NOT include any
qualitative "suspicious transaction" judgment, only GoPlus's own numbers, and
has no fallback if GoPlus fails (Honeypot.is does not expose LP lock data).
Args:
chain_id: EVM chain id, e.g. 8453 for Base.
contract_address: Token contract address (0x...).
Returns:
On success: {"success": true, "lp_locked_pct", "lp_burned_pct",
"liquidity_health", ...}
On failure: {"success": false, "error": {"type", "message"}}
| Name | Required | Description | Default |
|---|---|---|---|
| chain_id | Yes | ||
| contract_address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It openly states the data source (GoPlus), the limitation of no fallback, that only GoPlus's numbers are included, and the exact success/failure return shapes. This provides strong transparency about real-world behavior and failure modes.
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?
Every sentence earns its place. The description front-loads the core purpose, then provides usage guidance, exclusions, and parameter/return details in a logical structure. Despite being longer than average, there is no fluff or repetition that dilutes 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?
Given two required parameters, no output schema, and no annotations, the description covers everything needed to invoke correctly: what the tool does, when to use it, what it cannot do, and the exact request/response contract. Thresholds for the liquidity_health categories are not specified, but they are not necessary for selecting or calling the 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?
Schema coverage is 0%, so the description must fully document parameters, and it does. chain_id is explained as an EVM chain id with a concrete example (8453 for Base), and contract_address is specified as a token contract address with the 0x... format. This adds real meaning well beyond the bare property titles.
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 ('Audit') and resource ('LP lock/burn status for a token contract (GoPlus)'), names the exact outputs (lp_locked_pct, lp_burned_pct, liquidity_health categories), and explicitly differentiates from get_token_risk. This is unambiguous and distinct from 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?
Explicitly tells when to use the tool ('before trusting it'), what it complements ('get_token_risk (honeypot/tax/mint checks)'), and what it deliberately omits (qualitative suspicious-transaction judgment). It also explains the no-fallback behavior and why Honeypot.is cannot substitute, leaving no doubt about when this is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security.token_diagnosticAInspect
Bundles get_token_risk + get_contract_health_audit into one combined
diagnostic report (same GoPlus data, run in parallel, one upstream round
trip), plus a deduped union of risk_flags. Does not compute a composite
score/grade - every field is copied unchanged from the two underlying tools.
Use this right before buying or swapping an unfamiliar token when you want
both honeypot/tax risk AND LP lock/burn status in one call, instead of
calling get_token_risk and get_contract_health_audit separately. Do NOT
use it if you only need one of the two - call that single tool directly
to save a round trip. Does not cover token unlock/vesting risk - use
get_token_dump_risk separately for that.
Args:
chain_id: EVM chain id, e.g. 8453 for Base.
contract_address: Token contract address (0x...).
Returns:
On success: {"success": true, ...combined token_risk + contract_health_audit fields}
On failure: {"success": false, "error": {"type", "message"}}
| Name | Required | Description | Default |
|---|---|---|---|
| chain_id | Yes | ||
| contract_address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the behavioral context: it explains parallel execution, one upstream round trip, deduped union of risk_flags, unchanged field copying, and gives a precise success/failure return structure. This is thorough and leaves no major behavioral surprise undisclosed.
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 well-structured: purpose and usage are front-loaded, followed by args and returns in clear labeled sections. Every sentence contributes meaningful information, and there is no redundancy or 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?
Despite no annotations and no output schema, the description covers the tool's composition, limitations, usage boundaries, parameter semantics, and return format. An agent has enough context to decide whether to use this tool and to understand what will happen.
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 0%, so the description must compensate. It does so by providing a type, example, and format for chain_id ('EVM chain id, e.g. 8453 for Base') and contract_address ('Token contract address (0x...)'). This is sufficient for these two straightforward parameters, though slightly more detail could be added.
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 action ('Bundles get_token_risk + get_contract_health_audit into one combined diagnostic report') and explicitly names the underlying tools, distinguishing this from its siblings. It also clarifies what it does not do (no composite score/grade), making the tool's role 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 description gives explicit when-to-use guidance ('Use this right before buying or swapping an unfamiliar token'), when-not-to-use guidance ('Do NOT use it if you only need one of the two'), and names the exact alternative tools to call instead. It even routes vesting risk to get_token_dump_risk separately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security.token_riskAInspect
Check a token contract for honeypot/scam risk before buying: is_honeypot,
buy/sell tax, mintability, open-source status, ownership renouncement,
holder count, individual GoPlus risk signals (cannot_buy, cannot_sell_all,
hidden_owner, transfer_pausable, selfdestruct, is_blacklisted,
slippage_modifiable, owner_percent - all feed into risk_flags), is_proxy
and trading_cooldown (informational only, not flagged - both are common in
legitimate contracts), and a summarized risk_level (LOW/MEDIUM/HIGH/UNKNOWN).
Data source: GoPlus Security, falling back to Honeypot.is (the GoPlus-only
fields above are always null on the fallback path).
Use this right before entering a position on an unfamiliar or newly-listed
token. Do NOT treat a null field as "safe" - it means that field could not
be determined; check risk_level and risk_flags instead. This tool does not
cover LP lock/burn status - use get_contract_health_audit for that, or
get_token_diagnostic to get both in one call.
Args:
chain_id: EVM chain id, e.g. 8453 for Base.
contract_address: Token contract address (0x...).
Returns:
On success: {"success": true, "is_honeypot", "buy_tax_pct", "sell_tax_pct",
"risk_level", "risk_flags", ...}
On failure: {"success": false, "error": {"type", "message"}}
| Name | Required | Description | Default |
|---|---|---|---|
| chain_id | Yes | ||
| contract_address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so thoroughly: it discloses the GoPlus/Honeypot.is fallback, explains that fallback-only fields are null, warns not to treat null as safe, and identifies which fields are informational vs risk-flagged. It also documents the success/failure return envelope.
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 long because the tool has many output fields, but information is front-loaded and organized into purpose, data source, usage guidance, args, and returns. A few clauses could be tightened, but none are 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 no output schema and no annotations, the description covers everything an agent needs: purpose, when to use, how to interpret nulls, data source fallbacks, limitations/alternatives, argument semantics, and the success/failure return shape. There are no obvious gaps for calling 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 coverage is 0%, so the Args section must explain the parameters. It correctly describes chain_id as an EVM chain id with a concrete Base/8453 example and contract_address as a 0x... token address. This is sufficient for correct invocation, though it does not go into broader constraints such as supported chain lists or address canonicalization.
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 action ('check a token contract for honeypot/scam risk') on a concrete resource and immediately lists what it evaluates. It also distinguishes itself from adjacent siblings like security.contract_health_audit and security.token_diagnostic by naming what they cover instead.
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 says when to use the tool: 'right before entering a position on an unfamiliar or newly-listed token.' It also gives a clear negative condition, noting LP lock/burn status is not covered and directing the agent to get_contract_health_audit or get_token_diagnostic instead.
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
- Added
prediction.exit_capacity_audit - Added
prediction.neg_risk_arbitrage
20 tool updates
v1.0.3- Added
arb.spread_matrix - Added
calendar.macro_dday - Added
derivatives.funding_apr_matrix - Added
derivatives.funding_rate - Added
derivatives.whale_position_audit - Added
dex.liquidity_slippage - Removed
get_arb_spread_matrix - Removed
get_contract_health_audit - Removed
get_dex_liquidity_slippage - Removed
get_funding_apr_matrix - Removed
get_funding_rate - Removed
get_kimchi_alert - Removed
get_macro_dday - Removed
get_token_diagnostic - Removed
get_token_risk - Removed
get_whale_position_audit - Added
market.kimchi_alert - Added
security.contract_health_audit - Added
security.token_diagnostic - Added
security.token_risk
10 tool updates
v1.0.2- Added
get_arb_spread_matrix - Added
get_contract_health_audit - Added
get_dex_liquidity_slippage - Added
get_funding_apr_matrix - Added
get_funding_rate - Added
get_kimchi_alert - Added
get_macro_dday - Added
get_token_diagnostic - Added
get_token_risk - Added
get_whale_position_audit
2 tool updates
v1.0.0- First observed
convert_to_markdown - First observed
get_token_dump_risk
TDQS
Scored across 14 tools
Most tools map to distinct domains and explicitly cross-reference each other (e.g. token_diagnostic vs token_risk, kimchi_alert vs spread_matrix). The main ambiguity comes from composable pairs like funding_rate/funding_apr_matrix and token_risk/token_diagnostic, but the descriptions draw clear boundaries.
Twelve of fourteen tools follow a consistent domain-prefixed snake_case noun pattern (security.*, derivatives.*, prediction.*), which makes the set navigable. The outliers are convert_to_markdown and get_token_dump_risk, which break the prefix/verb pattern, but they are minor deviations rather than chaos.
At 14 tools, the set is at the high end of the ideal range but still manageable, and each tool has a distinct analytical job. A couple are deliberate composites/wrappers (token_diagnostic, funding_apr_matrix), so the surface could be trimmed slightly without losing real functionality.
The server covers token risk, DEX/CEX arb, derivatives, macro events, and prediction-market exits well, but notable gaps remain for a trading/alpha pipeline: there is no direct token price/quote tool and no way to discover Polymarket event slugs or wallet addresses, leaving some workflows dependent on externally supplied identifiers. These holes are workable but will cause dead ends in autonomous use.
Maintenance
Related MCP Connectors
Pay-per-call DeFi and macro intel for AI agents. x402 USDC tools via streamable HTTP /api/mcp.
Pay-per-call x402 gateway: agent tools, OpenAI-compatible LLM, market data, RPC, security audits.
Market data and web intelligence for AI agents, paid per call in USDC on Base via x402.
Pay-per-call data APIs for AI agents. USDC on Base via x402. 33 tools, no signup.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for pay-per-call DeFi and crypto data via x402 micropayments on Base. 8 endpoints: token prices, TVL, funding rates, token security, gas tracker, whale monitoring, wallet profiling, and yield scanning.839 npmMIT
- AlicenseAqualityCmaintenanceKorean crypto market data API for AI agents. Real-time Kimchi Premium (Upbit vs Binance), Korean exchange prices, USD/KRW FX rate. First verified Korean market data MCP server. Pay-per-use via x402 on Base.172MIT
- AlicenseCqualityDmaintenanceMCP server bringing 100+ x402-paid APIs to AI agents (Claude, Cursor, MCP-aware clients). Auto-discovers tools from CDP Bazaar; handles USDC micropayments on Base.10051 npm1MIT

Funding-mcpofficial
AlicenseAqualityCmaintenanceReal-time perp market-data for AI trading agents — funding rates, funding-arb signals, open interest, volume, orderbook depth/slippage and oracle families across 25 venues, plus HIP-3 RWA coverage (tokenized stocks, metals, oil) that mainstream aggregators lack. x402-native pay-per-call (USDC on Base): one free funding screener tool + 11 paid tools with auto-pay.1215 npm2MIT