marketplace
Server Details
Buy, sell and bid on vote-escrow NFTs and .base.eth names. Non-custodial, settles on Seaport.
- Status
- Healthy
- Uptime
- 100.0% over 26 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 13 tools
Each tool targets a distinct resource and action: market listings, address orders, owned positions, settled trades, prepare/cancel operations, and notification management are cleanly separated. Even get_listings vs get_listing_details differ by list vs single-order detail, so an agent is unlikely to misselect.
Most tools follow a snake_case verb_noun pattern with clear get_, prepare_, and subscribe_ families. Minor deviations include list_micro_markets and list_subscriptions using list_ instead of get_, and prepare_cancel using an action rather than a noun after prepare.
13 tools is well within the ideal range for a marketplace server, and each tool maps to a distinct lifecycle or query concern such as listings, offers, purchases, cancels, and notifications. There are no redundant or filler tools.
The trading surface is well covered: reading market data, creating/canceling listings and offers, buying, and managing subscriptions are all present. Minor gaps exist around explicit transaction-confirmation book updates and market administration, but agents can work around these via background reconciliation and Seaport.
Available Tools
13 toolsget_listing_detailsAInspect
Full detail for one order including a FRESH live-contents snapshot (principal, claimable rewards, voting/earning power, as_of_block).
| Name | Required | Description | Default |
|---|---|---|---|
| orderHash | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and discloses a meaningful behavioral trait: it returns a FRESH live-content snapshot and lists included fields (principal, claimable rewards, voting/earning power, as_of_block). It does not mention potential errors or limitations, but the freshness/as-of-block detail is valuable.
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 sentence with the core purpose front-loaded and the unique 'live snapshot' detail appended. No filler or repetition.
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 description is adequate for a simple one-parameter lookup and names key return fields, but with no annotations and no output schema, more detail about orderHash and sibling-tool boundaries would be needed for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the description never mentions orderHash or how to obtain it. 'One order' implies orderHash identifies the target, but the description does not compensate for the missing schema documentation.
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 returns full detail for a single order, including a live-contents snapshot with specific fields. It is distinguishable from plural list siblings like get_listings and get_orders, though it does not explicitly name them.
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: call this when you need detailed, current information for one order. There is no explicit guidance on when to prefer it over get_orders or get_listings, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_listingsBInspect
Active listings/auctions for a market. Each row carries the ask and the position's underlying contents priced at current market (published formula: /docs#data-sources), plus discountPct (the difference between them). Sorted by discount percentage, descending.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| limit | No | ||
| marketId | Yes | market id, e.g. 'vehydx' | |
| nameContains | No | case-insensitive substring match on the listing's label (the name on name markets, e.g. 'alice'; 'veAERO #123' elsewhere) | |
| minDiscountPct | No | only return orders at >= this discount %. IGNORED on markets whose asset has no priced underlying, where there is nothing to compare the ask against — the response says so in `note` rather than returning an empty market. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It usefully reveals sorting, the discountPct computation, and the reference formula for underlying pricing. It does not mention pagination, empty-result behavior, authentication, or that this is a read-only operation, which are meaningful gaps for a tool with no annotation safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences with no filler. It front-loads the purpose, then efficiently describes row semantics and sort order, so every sentence earns its place.
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 moderate-complexity read tool with no output schema and no annotations, the description gives the essential return semantics and ordering but omits guidance on parameter selection, especially `kind` and `limit`, and does not help distinguish this tool from several similar siblings. It is minimally viable but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 60%, and the description does not compensate for the undocumented `kind` and `limit` parameters. It does define `discountPct` conceptually, which slightly illuminates `minDiscountPct`, but it adds little meaning beyond the schema's own parameter descriptions.
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 returns active listings/auctions for a market, and specifies the row contents (ask, underlying contents, discountPct) and sort order. This differentiates it reasonably from siblings like get_listing_details or get_orders, though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a market' implies the primary use case, and the sorting/filtering details suggest it is a market-level listing browse tool. However, it gives no explicit guidance on when to prefer this over get_listing_details, get_orders, or other sibling listing tools, leaving selection largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ordersAInspect
List orders created by an address (its listings, auctions, offers). Status is reconciled by the background worker — treat as advisory until checked at fill.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| offerer | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description explicitly discloses a non-obvious behavior: order status is reconciled asynchronously and should be treated as advisory until fill. It also signals a read-only operation via 'List.' While it omits details like pagination or return shape, the key operational caveat is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core purpose and a useful caveat in the second sentence. No filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool, the description provides the key facts: what is listed, from whose perspective, and a caveat about status reliability. It does not cover pagination or return shape, but no output schema exists and these are less critical given the straightforward 'List orders' semantics.
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 description clarifies that `offerer` is the address that created the orders, adding role semantics beyond the schema's regex. It does not explicitly describe the `status` parameter or that it acts as a filter, though the enum values in the schema make its meaning inferable. With 0% schema description coverage, the description only partially compensates for the second 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 names a concrete action ('List') and a clear resource ('orders created by an address'), with a parenthetical enumerating the order types ('listings, auctions, offers'). This makes the tool's scope distinct from sibling tools like get_listings or get_recent_trades without needing to open their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the main use case (fetch an address's orders) and warns about status freshness, but it never names alternatives or states when not to use this tool. An agent must infer the boundary vs get_listings or get_owned_positions, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_owned_positionsAInspect
List the positions an address owns in a market, with listability (voted/attached positions can't transfer).
| Name | Required | Description | Default |
|---|---|---|---|
| owner | Yes | ||
| marketId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It adds a meaningful caveat about voted/attached positions not being transferable, which is useful, but it does not disclose potential return-shape behavior, pagination, or whether all owned positions are always returned.
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 sentence that front-loads the core action and resource, then attaches the important listability qualifier. There is no filler or redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-style tool, the description covers purpose and a key behavioral caveat. But with no annotations and no output schema, it leaves return shape and edge-case behavior unmentioned, so an agent may need to infer those details.
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 explain the parameters. 'An address owns in a market' clearly maps to the owner and marketId parameters, but it does not explicitly attach those names or add detail about marketId format beyond the schema pattern.
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 ('List') and names the exact resource: positions owned by an address within a market. It also adds a distinguishing detail about listability that separates it from generic listing tools like get_listings or get_recent_trades.
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 intent is clear: use this when you need the positions an address owns in a specific market. However, it does not explicitly mention when not to use it or point to alternatives among the sibling tools, so 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.
get_recent_tradesBInspect
Recently settled sales for a market. amount is the EXACT settled total (incl. fee) from the on-chain fill where the indexer recorded it, with settledAt the block time and exact: true; otherwise it falls back to the listed ask with exact: false (a decayed Dutch auction settles BELOW its listed amount, so treat inexact rows as an upper bound).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| marketId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It explains the exact vs. fallback amount semantics, fee inclusion, exact:true/false flags, and the upper-bound caveat for inexact rows. This is substantive behavioral context, though it omits ordering and pagination 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 purpose is front-loaded and the detailed amount caveat is packed into a single dense sentence with no filler. The structure is efficient, though the nested parenthetical makes it slightly harder to parse.
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 or annotations, the description covers the critical amount semantics well but leaves gaps: result ordering, effective default limit, and behavior when no trades exist. It is adequate for a simple fetch tool but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not compensate by explaining marketId or limit. It references 'a market' but gives no ID format, no default/effect of limit, and no guidance beyond what the JSON schema already states through type and constraints.
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 identifies the tool as returning recently settled sales for a market, which distinguishes it from sibling tools like get_listings and get_orders. It lacks an explicit verb but the resource, scope, and domain are 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 intended use case is implied: use this when you need recently settled trade/sale amount data for a market. However, it does not explicitly state when to prefer this tool over get_listings, get_orders, or other alternatives, nor does it mention exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_micro_marketsAInspect
List the markets this marketplace facilitates (asset, chain, currencies, fee).
| 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 burden of behavioral disclosure. It conveys that this is a listing operation and indicates the returned fields, but it does not mention possible side effects, pagination, ordering, or any access considerations. For a simple no-parameter list tool, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. The main action is front-loaded, and the parenthetical field list adds useful detail compactly.
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 listing tool, the description gives enough context to understand the resource and return fields. It lacks explicit usage routing or edge-case behavior, but the simplicity of the operation means nothing critical 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?
The tool has zero parameters, so parameter semantics are not a concern. The description does not need to add parameter-level detail, and the baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action and resource: list the markets that the marketplace facilitates, and specifies the included fields (asset, chain, currencies, fee). It is easy to distinguish from siblings like get_listings or get_orders, though it does not explicitly name a differentiating sibling.
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 purpose implies use when an agent needs to know available market configurations, but the description gives no explicit guidance on when to choose this tool over alternatives such as get_listings. The usage context is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_subscriptionsAInspect
List a wallet's notification subscriptions (webhook URLs redacted to origin).
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes |
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. It does add one genuinely useful behavior — webhook URLs are redacted to origin, which affects what an agent can do with the results. However, it leaves read-only safety, pagination, and empty-wallet behavior unstated.
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 verb and resource front-loaded and the redaction caveat cleanly parenthesized. Every word earns its place, and nothing is duplicated from the 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?
Since no output schema exists, the description should at least hint at return shape; the redaction note partially does this by describing what is NOT returned. But subscription fields, pagination, and empty-result behavior are all unspecified. This is adequate for a single-parameter read tool but has clear gaps.
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 clarify that the wallet parameter is the subject whose subscriptions are listed, adding semantic meaning to the bare schema field. But it adds nothing beyond that role, such as address format expectations or edge-case behavior.
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 ('List') with a specific resource ('a wallet's notification subscriptions'), and the parenthetical about webhook URL redaction sharpens the scope further. The read-oriented verb clearly distinguishes it from the sibling mutation tools subscribe_notifications and unsubscribe_notifications.
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?
No guidance is given on when to call this vs. alternatives, and there are no exclusions, prerequisites, or contextual cues. The read/write separation from the subscribe/unsubscribe siblings is only implied by naming conventions, never stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_cancelAInspect
Prepare the on-chain Seaport cancel transaction for an active order. Only the order's offerer can execute it (Seaport enforces msg.sender == offerer), so the calldata is safe to return. After it confirms, POST { txHash } to the confirm endpoint to update the book.
| Name | Required | Description | Default |
|---|---|---|---|
| orderHash | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses that the tool returns calldata rather than executing the cancellation, that Seaport enforces msg.sender == offerer, and that a subsequent confirm step is required. This gives an agent a solid understanding of the safety and workflow, though it does not detail failure modes or invalid-order handling.
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?
Three concise sentences with no filler. Each sentence contributes: what the tool does, an authorization/safety note, and the post-confirmation workflow. It is well-structured and 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 single-parameter tool with no output schema and no annotations, the description covers the core invocation context: purpose, authorization restriction, return nature, and next step. It could be more complete by describing the expected orderHash format, but overall it gives an agent enough to act 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?
The schema has 0% description coverage and the description does not explain the orderHash parameter's format or meaning beyond the tool's purpose. While 'orderHash' is reasonably self-explanatory, the description adds no explicit value to the schema, so an agent must infer details from the parameter name alone.
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 identifies the action: preparing an on-chain Seaport cancel transaction for an active order. It distinguishes itself from sibling tools like prepare_listing and prepare_purchase by the cancel verb and Seaport context.
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 the intended use obvious: cancel an active Seaport order. It also includes a critical constraint—only the offerer can execute—and provides the follow-up step of posting the txHash after confirmation. It does not explicitly name sibling alternatives or exclusion conditions, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_listingAInspect
Prepare a SELL listing or Dutch auction. Verifies the seller OWNS the position and it's transferable (not voted/attached), builds the Seaport order with the Interface fee injected by the server, and returns the one-time NFT approval + EIP-712 typed data to sign. Never signs or holds keys.
| Name | Required | Description | Default |
|---|---|---|---|
| ask | No | listing: price the seller nets — must be positive | |
| kind | Yes | ||
| name | No | name markets only, e.g. 'alice' or 'alice.base.eth' — tokenId is derived | |
| endAsk | No | dutch_auction: floor price (must be below the start) | |
| seller | Yes | ||
| tokenId | No | required for token markets (e.g. vehydx) | |
| marketId | Yes | ||
| startAsk | No | dutch_auction: starting (high) price | |
| durationDays | No | ||
| currencySymbol | Yes | one of the market's settlementCurrencies (see list_micro_markets) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and excels: it discloses preconditions (ownership, transferability not voted/attached), server-side fee injection, the exact deliverable (one-time NFT approval + EIP-712 typed data), and the non-custodial property (never signs or holds keys). This gives an agent a clear security and side-effect model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no wasted words, front-loading the primary purpose and then adding essential behavioral details. Every clause earns its place, and the final 'Never signs or holds keys' is a compact high-value security note.
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 complex 10-parameter tool with no output schema or annotations, the description covers the essential context: purpose, preconditions, process, and deliverable. It doesn't explain the exact return structure beyond the typed-data summary or error cases, and doesn't describe how the returned approval/signature should be used downstream, but it provides enough for an agent to decide and invoke 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?
The description adds no direct parameter explanations and relies on the schema, which covers 60% of parameters. The 'SELL listing or Dutch auction' phrase indirectly maps to the kind enum, and the ownership check touches the seller parameter, but marketId, durationDays, and the relationship between startAsk/endAsk remain under-explained. This is adequate given the moderate schema coverage.
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 (prepare), resource (SELL listing or Dutch auction), and key distinguishing behaviors (ownership verification, Seaport order, returns approval + typed data). The explicit 'SELL' clearly differentiates it from sibling prepare_offer and prepare_purchase, and the Dutch auction mention distinguishes it from prepare_cancel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool: when a seller wants to list an NFT or start a Dutch auction. It doesn't explicitly name alternatives or exclusions, but 'SELL' and 'seller OWNS the position' route the agent away from buy-side or cancellation tools. Lacks an explicit 'use prepare_offer instead for bids', but the context is strong enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_offerAInspect
Prepare a BID/offer on a position: returns the Seaport order to sign (EIP-712), the currency approval needed, and how to submit it. The agent reads its Seaport counter, signs, and POSTs the signed order — settlement stays on Seaport.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | name markets only, e.g. 'alice' or 'alice.base.eth' — tokenId is derived | |
| buyer | Yes | 0x address that will sign and fund the offer | |
| tokenId | No | required for token markets (e.g. vehydx) | |
| marketId | Yes | ||
| offerAmount | Yes | human amount the seller nets, e.g. '750' — must be positive | |
| durationDays | No | ||
| currencySymbol | Yes | one of the market's settlementCurrencies (see list_micro_markets) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden and does so well. It reveals the tool returns an EIP-712 order to sign, flags that currency approval is needed, and clarifies that settlement stays on Seaport rather than being executed by this 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?
Two dense sentences front-load the purpose and then explain the signing/POST workflow and Seaport settlement. Every clause earns its place with no redundant or filler 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?
For a tool with seven parameters and no output schema, the description provides enough procedural context: what is returned, the approval requirement, and the next action. It does not enumerate exact response fields, but the schema covers most input semantics and the description covers the follow-up workflow.
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 description adds workflow-level context but no per-parameter detail. Schema coverage is 71%, and the required marketId field is not documented in either the schema or the description; however, the remaining parameters are meaningfully described in the schema itself.
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 specific action 'Prepare a BID/offer on a position' and lists the concrete deliverables (Seaport order to sign, currency approval, submission steps). This clearly distinguishes it from siblings like prepare_listing and prepare_cancel.
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 'BID/offer' framing and the workflow (read Seaport counter, sign, POST) give a clear use context: when an offer needs to be prepared for signing. It does not explicitly name alternatives or when-not-to-use conditions, but the offer-side intent is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_purchaseAInspect
Prepare the non-custodial transaction package to BUY a listing (or accept an offer): ordered approvals + Seaport fulfillOrder calldata + a fresh contents snapshot. prepared.summary quotes the CURRENT price (Dutch auctions interpolate, asOf says when); the approval grants approveBaseUnits — slightly above the quote on a decaying order, never above maxTotalBaseUnits — and Seaport charges the exact interpolated amount at fill. On auctions, prepared.cleanup is an optional post-settlement tx that zeroes the residual allowance. The agent's own wallet signs and submits — this never signs or holds keys.
| Name | Required | Description | Default |
|---|---|---|---|
| orderHash | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description bears full burden and delivers richly: it discloses the custody model ('The agent's own wallet signs and submits — this never signs or holds keys'), Dutch-auction interpolation with asOf timing, the approval grant logic (approveBaseUnits slightly above quote, never above maxTotalBaseUnits), and the optional auction cleanup transaction that zeroes residual allowance.
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 dense sentences, each carrying distinct information: purpose and output composition, pricing/approval behavior, auction cleanup, and custody safety. Purpose is front-loaded in sentence one, with no filler and no restating of schema facts.
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 — no annotations, no output schema, one undocumented parameter — the description covers the return package (summary with asOf quote, approvals, calldata, snapshot, optional cleanup) and key edge-case behavior. Remaining gaps are minor: orderHash provenance/validation and error conditions, plus reliance on Seaport domain jargon.
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 single required parameter (orderHash) has 0% schema coverage, and the description never explicitly defines it or states where to obtain it (e.g., from get_listings or get_listing_details). It compensates only implicitly by repeatedly referring to 'the order' (decaying order, maxTotalBaseUnits), so an agent must infer that orderHash identifies the listing/offer being purchased.
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 — 'Prepare the non-custodial transaction package to BUY a listing (or accept an offer)' — and enumerates the package's components: ordered approvals, Seaport fulfillOrder calldata, and a fresh contents snapshot. The buy/fill semantics ('fulfillOrder calldata') distinguish it from sibling prepare_offer, which creates offers rather than filling them.
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 clear usage context: use when buying a listing or accepting an offer, which contrasts with the get_*/list_* read siblings and the other prepare_* write tools. However, it never explicitly names an alternative or states when-not-to-use, leaving exclusive routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribe_notificationsAInspect
Subscribe a wallet to push notifications (order_filled / offer_received / saved_search) via an HMAC-signed webhook — the agent-native alternative to polling. Two-step: call WITHOUT signature to get the exact message to sign (EIP-191 personal_sign), then call again WITH the signature. chainId is signed over and the signature is verified on THAT chain, so pass the chain the wallet actually signs on (smart-wallet signatures do not validate cross-chain). Each signed message is SINGLE-USE: resending the same body returns 409 replayed_signature — retry with a fresh timestamp and a new signature. The response includes the webhook HMAC secret ONCE (verify x-market0x-signature = hex(HMAC-SHA256(rawBody, secret))).
| Name | Required | Description | Default |
|---|---|---|---|
| events | Yes | ||
| wallet | Yes | ||
| chainId | Yes | chain the wallet signs on; it is part of the signed message | |
| channel | Yes | ||
| signature | No | EIP-191 signature of the canonical message; omit to receive the message to sign | |
| timestamp | Yes | unix seconds; must be within 10 minutes of now | |
| webhookUrl | No | https URL; required for the webhook channel | |
| savedSearch | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and meets it: it discloses the mutation side-effect (subscribe), the two-step signing protocol, chain-specific signature validation, the single-use nature of signatures with the 409 replayed_signature behavior, and that the webhook HMAC secret appears only once in the response. This is unusually transparent about failure modes and constraints.
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 adds a distinct operational fact: what it is, how to call it, which chainId to pass, what to do on replay, and how to verify the webhook. The flow is logically ordered from summary to two-step protocol to pitfalls to response handling, and there is no filler or repetition.
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 complex 8-parameter tool with no output schema, the description covers the critical process, failure modes, and verification. It does not describe the inapp channel alternative (the description is webhook-centric), nor the savedSearch parameter's full semantics, though the schema documents those details. Given the schema coverage, this is a minor gap.
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 description adds meaning far beyond the schema: it explains the signature parameter's presence/absence controls the two-step flow, that chainId is part of the signed message and must match the wallet's actual signing chain, that timestamp needs freshness, and that events map to the listed notification types. This compensates for the schema's 50% coverage.
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 ('Subscribe') with a direct object ('a wallet') and an explicit resource ('push notifications') and names the three event types. It distinguishes itself from polling and, via wording, from sibling tools like unsubscribe_notifications and list_subscriptions, so an agent knows exactly what operation this is.
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 frames the tool as 'the agent-native alternative to polling,' giving a clear when-to-use signal, and walks through the required two-step flow (call without signature, then with signature). It does not explicitly contrast with sibling subscription-management tools, but the workflow guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unsubscribe_notificationsAInspect
Delete a notification subscription. Two-step like subscribe_notifications: call without signature to get the message to sign. chainId is signed over and verified on that chain. Signed messages are single-use.
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | Yes | ||
| chainId | Yes | chain the wallet signs on; it is part of the signed message | |
| signature | No | ||
| timestamp | Yes | ||
| subscriptionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses several non-obvious behaviors: the two-step signing flow, that `chainId` is signed over and verified on that chain, and that signed messages are single-use. It could add more about response behavior or failure modes, but it covers the most important traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long and front-loaded with the core purpose. Every sentence earns its place: the deletion action, the two-step procedure, the chain verification, and the single-use constraint. There is no redundant or filler 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?
The tool is moderately complex due to the two-step signing flow, but the description explains the overall workflow well. However, there is no output schema and no annotation fallback, and the description does not explain what the first step returns beyond "the message to sign," nor does it clarify the semantics of required parameters like `timestamp` and `subscriptionId`. It is adequate but leaves clear gaps.
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 20%, with just `chainId` described. The description adds useful context for `chainId` and the optional `signature`, but it does not explain `wallet`, `timestamp`, `subscriptionId`, or how the signature produced in step one is used in step two. Parameter names and patterns provide some hints, but this is insufficient for a signed two-step flow.
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 and resource: "Delete a notification subscription." This clearly identifies the tool's purpose and distinguishes it from the sibling subscribe_notifications by referencing the same two-step flow while noting the deletion action. There is no ambiguity about what the tool does.
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 invocation context: it is a two-step operation and the agent should call without `signature` first to obtain the message to sign. It does not explicitly name alternatives or when-not-to-use conditions, but the deletion purpose and reference to subscribe_notifications provide clear enough guidance.
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.
3 tool updates
- Changed
get_listings1 field changed- changed
Input schema / properties / minDiscountPct / descriptionPrevious value: -"only return orders at >= this discount %. IGNORED on markets whose asset has no priced underlying (e.g. basenames), where there is nothing to compare the ask against — the response says so in `note` rather than returning an empty market."New value: +"only return orders at >= this discount %. IGNORED on markets whose asset has no priced underlying, where there is nothing to compare the ask against — the response says so in `note` rather than returning an empty market."
- Removed
prepare_finalize - Removed
search_names
15 tool updates
- First observed
get_listing_details - First observed
get_listings - First observed
get_orders - First observed
get_owned_positions - First observed
get_recent_trades - First observed
list_micro_markets - First observed
list_subscriptions - First observed
prepare_cancel - First observed
prepare_finalize - First observed
prepare_listing - First observed
prepare_offer - First observed
prepare_purchase - First observed
search_names - First observed
subscribe_notifications - First observed
unsubscribe_notifications
Related MCP Connectors
Agent-native fashion marketplace. Browse, design, purchase NFTs, launch brands on Base.
Agent-to-agent escrow on Base. Post quests with ETH/USDC bounties and settle on-chain.
Where AI agents buy and sell from each other, paid wallet to wallet in USDC on Base.
Marketplace for AI agents: hire, sell, get paid in USDC on Base. Identity, jobs, reputation.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceOnchain agent-to-agent commerce protocol using x402 and ERC-8004. Enables AI agents to buy/sell services, manage vendor catalogs, and process payments on Base.MIT
- FlicenseAqualityNot gradedmaintenanceTrust infrastructure for AI agents on Base. DEX Spread Oracle (live Uniswap V3 prices), on-chain escrow, insurance pool, and collective knowledge base. 7 smart contracts. Pay-per-query via x402 micropayments in USDC.6-
- AlicenseNot gradedqualityCmaintenanceAgent equity markets, credit markets, and capability staking using USDC on Base L2.MIT

paladin-swap-mcpofficial
AlicenseNot gradedqualityFmaintenanceMulti-aggregator swap router for AI agents on Base. MCP-native, best-of-N across 0x and Velora, current flat 10 bps fee.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.