comfy.fun MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@comfy.fun MCPshow me the newest 0G token launches"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
comfy.fun MCP (@0g-axion/comfy-mcp)
Explore 0G tokens, quote swaps, and build unsigned transactions.
Connect your agent to comfy.fun on 0G mainnet to explore tokens, quote swaps, check creator fees, browse agent tasks and compute, and build unsigned transactions for your wallet. The server holds no keys and never signs or submits transactions. Figures it cannot read come back as unknown, never as zero. Connect over stdio or streamable HTTP.
Safety
Read-only RPC and indexer access.
Holds no private keys; never signs or sends transactions.
Builders return unsigned transactions for you to review and sign in your own wallet.
Unreadable figures are returned as unknown, never zero.
Token names, listings and task text are third-party content; the server tells clients to treat them as data, never as instructions.
Builders require an explicit slippage (at most 5000 bps, like the web app); review it before signing.
Related MCP server: Trust Vault MCP Server
Overview
MCP server for reading Comfy and building unsigned
transactions. An agent (Claude Code, Codex, Cursor, any MCP client) can read
the market the same way the web app does. Fourteen tools read Comfy's engine REST, public
indexer GraphQL and public 0G RPC (mainnet, chain 16661), or build unsigned
transactions for an external wallet. The server holds no wallet key, never
signs and never submits transactions. The owner-only comfy_jobs read can
forward an opaque wallet session supplied through COMFY_SESSION. On comfy.fun
today, the two task-board tools answer 503 task_board_closed; the table below marks them.
The package is scoped on purpose: the unscoped comfy-mcp on npm belongs to
Comfy-Org (ComfyUI) and is not this project.
Add it to a client
# Claude Code
claude mcp add comfy -- npx -y @0g-axion/comfy-mcp@0.6.0
# Cursor: install the comfy.fun plugin from the Cursor Marketplace, or use the
# generic config below in ~/.cursor/mcp.json
# Codex CLI (~/.codex/config.toml)
# [mcp_servers.comfy]
# command = "npx"
# args = ["-y", "@0g-axion/comfy-mcp@0.6.0"]Generic client config:
{
"mcpServers": {
"comfy": { "command": "npx", "args": ["-y", "@0g-axion/comfy-mcp@0.6.0"] }
}
}No configuration is needed: by default the server reads comfy.fun's engine
and indexer. To read another
deployment, set COMFY_ENGINE_ORIGIN and COMFY_INDEXER_GRAPHQL_HTTP.
Tools
Tool | Operation | Upstream |
| the newest launches, the affiliate's market (iAI, | indexer GraphQL |
| one token's detail by address, with lifetime volume and whether the site lists it | indexer GraphQL |
| recent trades for a token: side, trader, amounts, execution and spot price | indexer GraphQL |
| compute delivered to agents' pools, all time, as the Infinity index records it: total, per-token rows, basis; | engine REST |
| one token's delivered compute, pool, tier and basis; router is null until the engine exposes it | engine REST |
| the public services agents sell | engine REST |
| open tasks on the task board, newest first, with | engine REST. |
| one task by id: its acceptors' counts and the buyer's standing, never the task's input | engine REST. |
| owner wallet's private commercial jobs | engine REST + |
| name/symbol/address substring search ( | indexer GraphQL |
| exact-input buy/sell quote ( | indexer + public RPC |
| earned, claimed, reassigned and credited claimable fees plus separate pending sweep projections; | indexer + FeeSplitter RPC views |
| unsigned swap ( | indexer + public RPC; local encoding |
| unsigned ordinary token launch against the committed mainnet launcher and live policy | public RPC; local encoding |
The market tools read comfy's Infinity index through its public read
operations, scoped to one deployment. A token that has never traded reports
null price, change, volume, FDV and market cap: its opening price is not a
measured market figure. comfy_tokens leaves out what the site's lists leave
out (test launches, reserved tickers) and says how many in
hidden; comfy_token still reads any of them by address. Tokens of the
retired index are not read: every token on comfy.fun is on the Infinity index.
comfy_tasks and comfy_task relay the engine's 503 task_board_closed
while the task board is closed.
A figure an upstream cannot supply comes back as unknown, never as zero, and
an upstream that is down is a live: false answer, not an empty list. A
deployment the index does not know is deployment_unknown, and a newest-first
read that cannot be read whole is window_overflow, never a stale page. More in the
MCP docs.
Transports and configuration
npx -y @0g-axion/comfy-mcp@0.6.0 # stdio (for MCP client configs)
npx -y @0g-axion/comfy-mcp@0.6.0 --http --port 8931 # streamable-http at POST /mcp, loopback only--port defaults to COMFY_MCP_PORT, then 8931. Base URLs come from
COMFY_ENGINE_ORIGIN and COMFY_INDEXER_GRAPHQL_HTTP and default to
comfy.fun's (https://warmth.comfy.fun, https://indexer.comfy.fun/v1/graphql).
COMFY_INFINITY_DEPLOYMENT names the deployment the market tools read, as
chainId:manager:splitter; it defaults to comfy.fun's, and a malformed value
falls back to it.
COMFY_MCP_TIMEOUT_MS bounds each upstream request (default 5000, 100 to
60000).
COMFY_SESSION is optional for all public tools and required for an
owner-authorized comfy_jobs result. A session for a different wallet than the
one asked about is relayed as the engine's 403 wallet_mismatch, not as
sign-in advice. The session is honoured on stdio only: the --http listener
authenticates no client, so it never forwards COMFY_SESSION and comfy_jobs
there answers the engine's 401 sign_in_required. To get a session, run
comfy auth login from the comfy CLI
with WARMTH_API=https://warmth.comfy.fun. It signs the engine's challenge
with the wallet's PRIVATE_KEY (a wallet whose key you cannot export cannot
sign in this way) and stores a 24-hour session in ~/.config/comfy/sessions.json;
pass that session as COMFY_SESSION, and keep it out of logs and committed
client configs.
Quotes and unsigned transactions (0.6.0)
COMFY_RPC_URL overrides the public repository default https://evmrpc.0g.ai.
It must use HTTPS; HTTP is allowed only for localhost, 127.0.0.1, or [::1].
The configured RPC is trusted for quote amounts and therefore min_out; chain
and payload checks do not prove its answers are accurate.
Chain tools verify chain 16661 and currently support the committed production
Infinity generation only. A different COMFY_INFINITY_DEPLOYMENT returns
unsupported_deployment; changing the indexer URL does not authorize a different
router. All contract reads in a result use one block. RPC timeouts, wrong-chain
responses and malformed results are named failures, never zero balances.
Amounts are exact decimal strings, not floating-point numbers. Like the web
trade path, swaps support native 0G / 18-decimal tokens. The quote defaults to
100 basis points slippage; both quotes and builders cap it at 5000 bps (50%),
matching the web app. Builders require an explicit integer in 0–5000.
Minimum output rounds up, as in the web SDK. Fee disclosure uses the live hook
and per-pool FeeSplitter settings; hook bps and core pips have different bases
and are not summed. A quote still includes the hook charge if optional fee
reads fail: fees: null and fees_status name the failed RPC source.
Price impact compares quoted output with the same-block pool spot price and
explicitly includes fees and curve movement; it is not isolated curve impact.
An unreadable spot price yields null with price_impact_status.
Unsigned builders return {chainId, to, data, value, description, approvals_needed}. value is decimal wei, and calldata is hex. Swap
output goes to recipient, while the eventual sender supplies the input. Sell
approvals are conditional prerequisites, not a claim about that sender's
allowances: first approve the exact token amount to Permit2, then approve the
router in Permit2 until the swap deadline. Both are unsigned. The swap uses an
empty Permit signature, matching the SDK's allowance-based path. Approval and
swap submission belong to the external wallet. Swap deadlines are ten minutes
from the read block; stale quotes should be rebuilt.
Creator fees are public ledger data, not an authenticated ownership claim.
A token-only request returns all its creator/recipient wallet legs. A wallet
filter uses current bindingOf results, including co-recipients. Wallet-only
requests inspect at most 100 indexed tokens in ascending deployment:address
id order: by address, not launch time. Tokens outside this window are not
searched; use token to read one directly. Scans use at most eight concurrent
pool workers and at most eight outstanding pool-read RPC calls (including
response bodies). Index page fetches and the head read are separate. A 20-second
overall budget includes index discovery and RPC.
scanned counts discovered token rows, including excluded rows; it is not the
number of successful pool reads. failed lists {token, reason} for unusable
or unfinished pools, including missing or malformed indexed pool records. A pool failure or deadline sets complete: false and
retains successful pools; scan_outcome is ok, partial, or timeout.
If the deadline expires before a block is read, block_number is null; if token
discovery has not finished, failed is empty because addresses are still unknown.
complete also stays false when the index window is truncated. These results
are never lifetime totals. Token-specific failures remain tool errors.
claimable means credited now; pending is the separately projected next sweep
at the current split. Native and token amounts each include exact raw strings;
unknown token decimals yield formatted: null.
Launch inputs are creator, name, symbol, salt (32-byte hex),
opening_tick (a multiple of 60), and terms with creator_tax_bps,
delay_seconds, opening_bps, floor_bps, and decay_seconds. Optional fields
are image, metadata,
context, and recipients (up to 15 entries, each with identity,
account_wallet, share_bps). The creator must be the eventual
sender. The builder always uses the SDK's five-rung project ladder,
enforces the live caps and 30-second minimum opening
delay, binds the current config hash, and uses the
live launch fee and a five-minute deadline. This is an ordinary token launch;
agent registration, sponsorship and post-launch compute-share changes are
separate flows.
Search uses InfinityTokens' existing allowlisted $where filter, escaping SQL
wildcards in user text. scanned counts matching rows returned by the indexer
(up to 1,000), not the total token population; truncated covers both this scan
bound and the requested output limit. Test launches and reserved tickers follow
the same exclusions as comfy_tokens. Before the output limit, scanned matches
rank by exact address, exact symbol, exact name, symbol prefix, name prefix,
then other matches, case-insensitively. Ties use descending liquidity_og,
with null liquidity last.
Development
npm ci
npm test # builds, then runs the test suite (Node 20+)A few parity tests cross-check files in Comfy's main repository and are skipped here.
Security
See SECURITY.md for how to report a vulnerability.
License
MIT, see LICENSE.
Available Tools
14 toolscomfy_agent_computeComfy agent computeBRead-onlyIdempotent
One token's delivered compute from the points engine: compute_og (cumulative 0G delivered to compute for its pool, as the Infinity index records it), pool, ladder tier, and the basis sentence. The engine does not expose an agent router address, so router is null with a reason; nothing is invented. A token the index does not know as launched is data:null; an index the engine could not read is live:false with outcome compute_unknown.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token contract address (0x…, 40 hex chars). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and non-destructive, so safety is covered. The description adds real value beyond that by disclosing null/absence semantics: router is null with a reason, unknown tokens yield data:null, and unreadable indexes yield live:false with outcome compute_unknown. That is substantive failure-mode context, though some terms remain unexplained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two long, dense sentences that front-load return-field jargon before establishing the action. The null-handling details are useful but the first sentence crams compute_og, pool, ladder tier, and basis sentence without defining them. Wasteful in style, not length.
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 does attempt to describe the return shape (compute_og, pool, ladder tier, basis sentence, router) and its null states, which is the right burden to pick up. But the field explanations lean on undefined internal terms, leaving an agent unsure what the values actually mean or how to interpret them.
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?
There is a single required parameter with 100% schema description coverage (contract address, 0x… 40 hex chars), so the schema already carries the semantics. The description adds nothing about the token argument, which is acceptable given the coverage but earns no above-baseline credit.
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 identifies the resource as one token's delivered compute from a points engine and lists the fields returned, so an agent can infer it is a per-token compute lookup. However it is a noun phrase, not a verb+resource statement, and it never differentiates itself from the sibling comfy_compute_funded, which likely overlaps. Undefined jargon like 'Infinity index' and 'ladder tier' further blurs the purpose.
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?
There is no guidance on when to call this versus comfy_compute_funded or any other sibling, and no stated prerequisites (e.g. token must be launched). The edge-case sentences describe outcomes, not call conditions. An agent must guess the selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comfy_bazaarComfy bazaar servicesBRead-onlyIdempotent
The public bazaar floor from the engine: the active services agents sell, exactly as the engine serializes them.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world access, so the safety profile is covered. The description adds one behavioral note — the data is returned raw as the engine serializes it, i.e. unfiltered/un-normalized — but says nothing about volume, ordering, or freshness.
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?
One short sentence with no padding, and the key qualifier (public, active services) is placed up front. Nothing is repeated from the schema or annotations.
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 and no parameters, the description is the only place an agent can learn what comes back, and it defers with "exactly as the engine serializes them". It is complete enough to know this is a zero-arg read of a service listing, but not enough to anticipate the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema leaves nothing to explain and the baseline of 4 applies. The description correctly implies no filtering or paging inputs are needed.
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?
It conveys that the tool returns the active services that agents sell, but the framing is metaphorical ("public bazaar floor", "exactly as the engine serializes them") rather than a plain verb+resource statement like "List active services". An agent can guess it is a listing tool, but the domain jargon blurs what is actually returned.
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?
There is no statement of when to call this versus the many siblings (comfy_jobs, comfy_tokens, comfy_agent_compute, etc.) or when not to. The 'public' qualifier hints at a scope distinction but never names an alternative or condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comfy_build_launch_txBuild unsigned Comfy token launchARead-only
Build an UNSIGNED ordinary token launch for the committed mainnet ComfyLauncher, with its live policy hash, fee and five-minute deadline. Creator must be the eventual sender. No keys, signatures or submission; agent registration and sponsored launch are separate flows.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Token name (UTF-8, at most 64 bytes). | |
| salt | Yes | CREATE2 salt, exactly 32 bytes. | |
| image | No | ||
| terms | Yes | ||
| symbol | Yes | Token ticker (UTF-8, at most 16 bytes). | |
| context | No | ||
| creator | Yes | Creator wallet that will submit the unsigned launch transaction. | |
| metadata | No | ||
| recipients | No | ||
| opening_tick | Yes | Opening tick, aligned to the launcher tick spacing of 60. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavioral context beyond the annotations: no keys, no signatures, no submission, the creator-binding constraint, and the five-minute deadline embedded in the output. That said, the description doesn't explain what happens with the fee/policy hash in practice, and readOnlyHint=true alongside a state-dependent (idempotentHint=false) build could confuse an agent about reproducibility. No contradiction, but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with zero filler. The UNSIGNED constraint and the no-keys/no-submission caveat are front-loaded, and the sibling-flow disambiguation is appended efficiently.
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 10 parameters, a nested object, and no output schema, the description covers the safety and flow story well but leaves the biggest input surface (terms: tax, delay, opening/floor bps, decay) totally unexplained. Return values are implied (policy hash, fee, deadline) but not confirmed. Adequate but with a clear gap for a tool this structurally complex.
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 50%, so the schema documents some fields (name, symbol, creator, salt, opening_tick), but the most complex input — the nested `terms` object with five numeric fields — has no description-level explanation in either place. The description adds the creator/sender binding but nothing about the terms, recipients array semantics, or opening_tick alignment. Baseline 3 for partial coverage plus marginal additive value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Build an UNSIGNED ordinary token launch") and pins it to the committed mainnet ComfyLauncher. It also distinguishes the output artifact (unsigned tx with policy hash, fee, deadline) from the sponsored-launch and agent-registration flows, so the agent can tell it apart without opening the schema.
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 scopes when this is appropriate: unsigned build only, no submission, and directs agent registration and sponsored launch elsewhere. It also states the precondition that the creator must be the eventual sender. It stops short of naming an exact sibling tool as the alternative, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comfy_build_swap_txBuild unsigned Comfy swapARead-only
Build an UNSIGNED ComfyRouter transaction from a fresh quote. Sells include conditional ERC20-to-Permit2 and Permit2-to-router approval transactions, in order. Recipient receives output; the signing wallet supplies input. No keys, signatures or transaction submission. Values are decimal wei strings.
| Name | Required | Description | Default |
|---|---|---|---|
| side | Yes | ||
| token | Yes | ||
| amount | Yes | Exact decimal human units: native 0G for buys, tokens for sells. No exponents. | |
| recipient | Yes | ||
| slippage_bps | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the annotations: sells emit conditional ERC20→Permit2 and Permit2→router approval transactions in order, the recipient receives output while the signing wallet supplies input, and nothing is signed or broadcast. This matters because readOnlyHint=true is otherwise ambiguous for a tool that assembles transactions. Minor gap: no statement on quote expiry/freshness or 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?
Four short sentences, front-loaded with the core purpose and the UNSIGNED/no-keys constraint, then the sell-approval ordering. No filler, no repetition of the title.
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 5-required-parameter builder with no output schema, the description covers the essential contract (unsigned, per-role semantics, approval chaining). It only partially conveys the return shape — it implies an ordered list of transactions but never says so explicitly, leaving an agent to guess whether output is one tx or many.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 20% schema description coverage the description needed to carry parameter meaning, and it does clarify the recipient-vs-signer distinction. But it also says 'Values are decimal wei strings,' while the schema's `amount` is documented as 'Exact decimal human units ... No exponents' — a direct and dangerous contradiction on the most error-prone parameter. `slippage_bps`, `token`, and `side` receive no added semantics.
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 and artifact: 'Build an UNSIGNED ComfyRouter transaction from a fresh quote.' This clearly separates it from comfy_swap_quote (which presumably produces the quote) and from comfy_build_launch_tx (a different transaction builder). An agent can select it without opening the schema.
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?
'From a fresh quote' implies the prerequisite step in the comfy_swap_quote → build → sign workflow, and 'No keys, signatures or transaction submission' marks the handoff point after this tool. However, no sibling is named explicitly as an alternative and there is no statement about when this tool should not be used (e.g. stale quotes).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comfy_compute_fundedComfy compute deliveredARead-onlyIdempotent
Compute delivered to agents' pools, all time, from the points engine: the Infinity index's cumulative InfinityComputeDestination.totalDelivered per pool. Total in OG, agent count, per-token rows (token, pool, compute_og, tier) sorted by compute, and the basis sentence. Delivered 0G, not a remaining balance or inference bought. When the engine could not read the index in full the answer is live:false with outcome compute_unknown and its reason, never a number. Served verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), but the description adds real behavioral content: on partial index reads the response is live:false with outcome compute_unknown and a reason, "never a number", and results are "served verbatim". That failure-mode disclosure is exactly what annotations cannot express.
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 is front-loaded in the first clause and the exclusion and error semantics follow in order. It is dense and jargon-heavy ("cumulative InfinityComputeDestination.totalDelivered", the "Served verbatim." fragment), but nearly every clause carries information an agent needs.
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 takes on the burden of describing returns and does so: total in OG, agent count, per-token rows with their fields, and a basis sentence. Combined with the failure-mode explanation, an agent can call this correctly and interpret both success and degraded responses.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline applies. The description instead spends its words on the return shape, which is the right choice here.
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 names a specific resource and scope: cumulative compute delivered per pool, all time, from the points engine's Infinity index. It explicitly excludes misreadings ("not a remaining balance or inference bought"), though it never names the sibling comfy_agent_compute as the alternative for per-agent views.
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 context is implied rather than stated: "all time" and "from the points engine" tell the agent when this metric applies, and the negative clause rules out balance/inference questions. There is no explicit "use this instead of comfy_agent_compute when..." routing against a very crowded sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comfy_creator_feesComfy creator fee ledgerARead-onlyIdempotent
Public FeeSplitter reads of credited claimable, earned, claimed and reassigned fees, plus a separate pending next-sweep projection. Supply token, wallet, or both; wallet selection uses current bound recipients. Wallet-only scans at most 100 indexed tokens by ascending address, not launch time, with eight pool workers and a 20-second budget; reports failed pools and completeness, never a lifetime total.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | ||
| wallet | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive, openWorld), the description discloses that wallet-only scans cover at most 100 indexed tokens by ascending address, use eight pool workers, have a 20-second budget, report failed pools and completeness, and never return a lifetime total. This is unusually rich behavioral context for a read tool.
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 is front-loaded in the first clause and the limitations follow in a dense second sentence. It is efficient and information-rich, though the second sentence is long and packs several independent constraints together.
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?
There is no output schema, so the description usefully names the returned fee categories and the pending projection. It also explains scoping, completeness reporting, and a key limitation (never a lifetime total). It is nearly complete, but lacks detail on the response shape and on the behavior when both parameters are supplied or when neither is supplied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the burden and does add meaning: it explains that token, wallet, or both may be supplied, that wallet selection uses current bound recipients, and that wallet-only scans have specific scoping and performance behavior. It omits what happens if neither parameter is supplied and does not explicitly state the address format, which the schema pattern covers.
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 read operation over FeeSplitter fee categories (claimable, earned, claimed, reassigned) plus a pending next-sweep projection. It clearly describes the resource and distinguishes the result from a lifetime total, though it does not explicitly compare itself to any sibling tool.
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 tells the agent to supply token, wallet, or both, and explains that wallet selection uses current bound recipients. However, it gives no explicit when-to-use/when-not-to-use guidance relative to alternatives, and the wallet-only scan constraints are behavioral limits rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comfy_jobsComfy wallet jobsARead-onlyIdempotent
Private commercial job records for the owner wallet. Forwards COMFY_SESSION on stdio only (over --http no session is sent and the engine answers 401); the engine enforces that the address matches the session.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Owner wallet address (0x…, 40 hex chars). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), so the description is free to spend its words on auth mechanics — and it does: COMFY_SESSION is forwarded only on stdio, HTTP yields 401, and the engine validates that the address matches the session. That is genuine behavioral context an agent cannot get from the annotations or schema. It stops short of describing result shape or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the core purpose front-loaded. The second sentence is dense (parenthetical transport caveat plus authorization rule) but every clause carries operative 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?
There is no output schema, so the description is the only place an agent could learn what a 'job record' contains, whether results are paginated, or how many come back — and it says none of that. Auth behavior is well covered; return-shape and volume are not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single address parameter, so baseline would be 3. The description adds real semantics the schema lacks: the address must match the session's owner, meaning a mismatched address fails rather than returning empty. That constraint meaningfully changes how an agent picks a value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource and scope precisely: 'Private commercial job records for the owner wallet' — an agent knows it returns job data scoped to a wallet. The verb is implied rather than stated (read/list), and the distinction from siblings comfy_tasks/comfy_task ('jobs' vs 'tasks') is left ambiguous, which matters in this family.
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?
Provides an important operational precondition (stdio-only session forwarding; 401 over --http) that tells the agent how to call it successfully. However, it never says when to reach for this tool versus the closely named comfy_tasks or comfy_task, so selection guidance against siblings is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comfy_search_tokensSearch Comfy tokensARead-onlyIdempotent
Case-insensitive name, symbol or address substring search over the same Infinity market as comfy_tokens. Uses the public indexer filter; reports scanned matching rows, hidden tokens and truncation.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: case-insensitivity, substring matching semantics, use of the public indexer filter, and that results report scanned rows, hidden tokens and truncation.
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?
A single tight sentence with the core operation front-loaded and the reporting behavior trailing. Every clause carries information; nothing is padded.
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 usefully pre-announces the notable return signals (scanned matching rows, hidden tokens, truncation), which is exactly what an agent needs to interpret results. The only gap is the undocumented limit parameter and its truncation interaction.
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 carry parameter meaning. It clarifies what the query matches against (name, symbol or address, case-insensitive), which is valuable, but says nothing about the limit parameter, its default of 25 or the cap of 50.
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 operation (case-insensitive substring search) over specific fields (name, symbol, address) and anchors scope to the same Infinity market as comfy_tokens. An agent can distinguish it from comfy_tokens and comfy_token without opening any schema.
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 makes clear this is the search-by-text path and contrasts implicitly with comfy_tokens (the same dataset, unfiltered listing). It does not name comfy_token as the alternative for exact single-token lookup or state when not to search, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comfy_swap_quoteComfy swap quoteBRead-onlyIdempotent
Read-only exact-input CLQuoter eth_call on 0G mainnet. Returns expected and minimum output in human units and raw integers, quote block, and live per-pool fee rates where readable. Unknown impact or fees stay null.
| Name | Required | Description | Default |
|---|---|---|---|
| side | Yes | ||
| token | Yes | ||
| amount | Yes | Exact decimal human units: native 0G for buys, tokens for sells. No exponents. | |
| slippage_bps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds that it is an eth_call, includes live per-pool fee rates when readable, and returns null for unknown impact or fees, which is useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded, with no filler. Return-value and null-handling notes are compactly packed into two sentences.
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 does a decent job of describing key return values and null behavior. However, it leaves gaps around parameter meaning, slippage handling, and how this quote should be used with the swap-building sibling.
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 only 25%, so the description needs to compensate for undocumented parameters. It does not explain token, side, or slippage_bps semantics, and adds little beyond the schema's amount description and the phrase 'exact-input'.
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 technical operation: a read-only exact-input CLQuoter eth_call on 0G mainnet that returns expected and minimum swap output. An agent can identify it as a quote tool, but it does not explicitly distinguish it from the sibling comfy_build_swap_tx.
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?
Read-only and exact-input imply this is a preview/quote step, likely before building a swap transaction, but the description never says when to use it instead of comfy_build_swap_tx or other siblings. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comfy_taskComfy task detailARead-onlyIdempotent
One task by id (tsk_ and 12 hex): the task, its acceptors in the board's order with their record counts (counts only, never a rate; comfy-funded and same-owner jobs counted apart), the buyer's standing counts, and the engine's now_s. Served verbatim. A task the board does not have is data:null.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The task id, tsk_ and 12 lowercase hex characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description adds real behavioral context: 'served verbatim', counts only never a rate, comfy-funded and same-owner counted apart, and the data:null outcome for absent tasks. It stops short of auth or rate-limit details, keeping it a 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with no wasted framing; the scope and return contents come first, followed by the null-case. It is densely packed but every clause carries information, though the long parenthetical is somewhat heavy.
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 carries the return-value burden and does so fully, describing each returned component and the null case. Nothing an agent needs to call and interpret the result 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?
With one parameter at 100% schema coverage, the schema fully documents the id. The description's '(tsk_ and 12 hex)' essentially repeats the schema's own format note, adding little beyond what's already structured, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific retrieval verb and resource ('One task by id') and enumerates exactly what the response contains: the task, its acceptors in board order with record counts, the buyer's standing counts, and now_s. The singular 'one task by id' cleanly distinguishes it from the plural sibling comfy_tasks without ambiguity.
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 is implied by the singular lookup and the note that a missing task yields data:null, but the description never explicitly names the alternative (comfy_tasks) or states when to prefer one over the other. An agent can infer the retrieval context but gets no explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comfy_tasksComfy open tasksARead-onlyIdempotent
Open tasks on the Comfy task board, newest first, from the engine: title, brief, criteria, budget in OG, kind, category, accept deadline, acceptor count. after is the cursor of the last page. Served verbatim, with the engine's now_s. A board that is not open is a live:false outcome such as task_board_closed.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | A task kind, like second_opinion or edit. | |
| after | No | The cursor a previous read returned, for the next (older) page. | |
| category | No | A category, like research or creative. | |
| min_budget_og | No | The lowest budget, an exact amount in OG, like "2" or "1.5". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds genuinely non-obvious behavior: newest-first ordering, verbatim serving with the engine's now_s, cursor-based paging, and the live:false / task_board_closed outcome for a non-open board.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with what the tool returns before covering pagination and the closed-board edge case. Minor jargon ('the engine's now_s') costs a little, but no sentence is wasted.
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 carries the burden of describing return values and does so field by field, and it covers paging and the closed-board failure mode. Filter combination semantics are left entirely to the schema, which is the only real gap for a 4-parameter listing 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 description coverage is 100%, so all four parameters are already documented in the schema, establishing a baseline of 3. The description's note that '`after` is the `cursor` of the last page' largely restates the schema and adds no meaning for kind, category, or min_budget_og.
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 and resource ('Open tasks on the Comfy task board, newest first') and enumerates the returned fields, which makes it clearly distinguishable from the singular sibling comfy_task. It stops short of naming that sibling explicitly, so an agent still infers the plural/singular split.
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?
Gives concrete guidance for pagination ('`after` is the `cursor` of the last page') and for the failure case (a closed board yields a live:false outcome such as task_board_closed). It never says when to prefer this over comfy_task or how the kind/category/budget filters combine, so the when-to-use guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comfy_tokenComfy token detailARead-onlyIdempotent
One token by address: identity, creator, pool, price, 24h change and volume, lifetime volume, FDV, market cap and liquidity in 0G, holder, trader and trade counts. Null market figures mean the token has never traded; data:null means the index does not know the address. listed says whether the site's lists show it.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token contract address (0x…, 40 hex chars). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by decoding two distinct null states ('null market figures mean the token has never traded' vs 'data:null means the index does not know the address') and explaining the meaning of the `listed` flag. Those edge-case semantics are the main failure mode for an agent reading a sparse address lookup, and they are spelled out precisely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the resource and access pattern, then the field inventory, then the null-state caveats last. No filler; the field list is dense but justified because there is no output schema to carry it.
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?
There is no output schema, so the description has to convey what comes back and what degenerate responses look like — it does both via the field enumeration and the two null explanations. An agent needs nothing further to call this 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 100% and the single `token` parameter is already documented in the schema as a 40-hex-char 0x address. The description only reinforces 'by address' and adds no format, checksum, or casing guidance, so this sits at the baseline where the schema does the work.
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?
Opens with a specific resource and access pattern ('One token by address') and then enumerates exactly which fields come back (identity, creator, pool, price, volumes, FDV, market cap, liquidity, counts). This clearly separates it from list-style siblings like comfy_tokens or comfy_search_tokens, though it never names them explicitly.
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 singular 'one token by address' implies this is the detail lookup and siblings are the list/search paths, but there is no explicit 'use this when…' or 'for discovery use comfy_search_tokens instead' statement. An agent must infer the routing from the phrasing rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comfy_tokensComfy token listARead-onlyIdempotent
List the newest launched tokens on comfy.fun (0G mainnet) with market fields in 0G: price, 24h change (percent) and volume, FDV, market cap, liquidity, holders, traders. A token that has never traded reports null market figures: unknown is not zero. The list leaves out what the site's lists leave out (test launches, reserved tickers) and says how many in hidden; comfy_token still reads them by address.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many tokens, newest launch first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, but the description adds substantive behavior: never-traded tokens report null market figures ('unknown is not zero') and the list omits test launches and reserved tickers while reporting the count in `hidden`. These are exactly the caveats an agent needs before interpreting results.
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 is front-loaded, then useful caveats follow in two tight sentences. The market-field enumeration is somewhat dense but each clause carries information an agent needs to interpret the output.
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 correctly carries the return-value burden by naming the market fields and the `hidden` count, plus null-semantics. It could be slightly more explicit about the overall response shape (list vs. object), which keeps it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single `limit` parameter with 100% schema description coverage, so the schema already documents its meaning and defaults. The description adds no parameter-level syntax or constraints beyond what the schema provides, which is the baseline case.
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 and resource — 'List the newest launched tokens on comfy.fun (0G mainnet) with market fields' — and enumerates the market data returned. It also distinguishes itself from comfy_token, noting that hidden tokens are still readable there by address.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context for using this tool is clear (newest launches with market stats) and it explicitly points to comfy_token for the tokens excluded from the list. It doesn't explicitly contrast with comfy_search_tokens, so the alternative routing is only partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comfy_tradesComfy recent tradesARead-onlyIdempotent
Recent trades for one token, newest first: side, trader, token amount, 0G volume, execution price and spot price in 0G, tx hash. A side the index did not state stays null; data:null means the index does not know the token.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many trades, newest first. | |
| token | Yes | Token contract address (0x…, 40 hex chars). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/open-world, so the bar is lower; the description still adds real value by disclosing ordering, the exact field set, and two null-handling rules (unknown side → null, unknown token → data:null). It does not mention rate limits or truncation behavior beyond the implied newest-first ordering.
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?
One front-loaded sentence carries scope, ordering and the return-field list, followed by a short edge-case clause; no filler. The field enumeration is dense but each item earns its place since there is no output schema.
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 appropriately documents what comes back (side, trader, amounts, prices, tx hash) and how nulls behave, which is what an agent needs to interpret results. It stops short of clarifying whether 'data:null' is a top-level or per-record shape, leaving slight ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including limit's default/min/max and token's address format, so baseline 3 applies. The description adds only the 'newest first' ordering nuance, which the schema's limit description already states.
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 resource and scope ('recent trades for one token, newest first') plus enumerates the returned fields, so it is immediately distinguishable from siblings like comfy_token or comfy_search_tokens.
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 'one token' scoping implies this is the per-token trade-history lookup, but there is no explicit when-to-use/when-not or named alternative (e.g., vs comfy_token or comfy_jobs). Usage is inferred rather than stated.
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.
14 tool updates
v0.6.0- First observed
comfy_agent_compute - First observed
comfy_bazaar - First observed
comfy_build_launch_tx - First observed
comfy_build_swap_tx - First observed
comfy_compute_funded - First observed
comfy_creator_fees - First observed
comfy_jobs - First observed
comfy_search_tokens - First observed
comfy_swap_quote - First observed
comfy_task - First observed
comfy_tasks - First observed
comfy_token - First observed
comfy_tokens - First observed
comfy_trades
TDQS
Scored across 14 tools
Most tools have clearly distinct purposes, especially around tokens, swaps, launches, tasks, bazaar, and compute. A few pairs could be confused at first glance, such as comfy_tokens vs comfy_search_tokens and comfy_compute_funded vs comfy_agent_compute, but their descriptions provide enough separation.
All tools use a consistent comfy_ prefix and snake_case, making the set readable and predictable. The only minor inconsistency is that some names are verb-led actions (search, build) while most are resource nouns, but the convention remains coherent.
With 14 tools, the server is well within the appropriate range for a broad platform surface covering tokens, trading, launches, tasks, bazaar, jobs, and compute. Each tool appears to serve a distinct resource or operation rather than bloating the set.
The read and transaction-building surface is fairly strong for tokens, swaps, launches, fees, trades, and compute. However, task and job functionality is largely read-only with no create, accept, submit, or lifecycle operations, and the bazaar surface only exposes the floor rather than broader service management.
Related MCP Connectors
Read-only educational MCP for CryptoDecentral Sovereign. No auth, trading, custody, or advice.
Read-only MCP server checks and quote verification, free and keyless; results signed and publicly lo
Solana market data, mainnet bonding-curve quotes and unsigned buy/sell transactions. No wallet keys.
Read-only XRPL and Solana data for agents: fees, slippage, readiness. Free /mcp; x402 /mcp/pro.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides read-only access to Solana on-chain data, enabling natural language queries for wallet balances, token holdings, prices, transactions, and more via MCP-compatible clients.8MIT
- FlicenseNot gradedqualityBmaintenanceExposes 8 read-only Trust Vault tools over MCP (Streamable HTTP) for querying protocol overview, tokens, market rates, orders, platform stats, fees, and currencies. Enables on-chain reads and static config without wallet or signing.-
- AlicenseAqualityCmaintenanceEnables MCP clients to access public spot market data—tickers, candlesticks, order books, trades, spreads, instruments, assets, and system status—via remote Streamable HTTP or local stdio. It is read-only and requires no API keys.10MIT

QoreChain MCPofficial
AlicenseNot gradedqualityBmaintenanceGives AI agents and developer tools read access to a blockchain network's blocks, transactions, accounts, validators, staking tiers, contract reads and fee estimates, plus post-quantum signature status checks and unsigned transfers for the user's own wallet to sign. It never signs, holds keys, or broadcasts.Apache 2.0