Skip to main content
Glama

Server Details

Live-event ticket exchange for agents: quote, buy, make offers, bid, and sell, with escrow.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.8/5.0

Scored across 44 tools

Disambiguation3/5

Descriptions do real work distinguishing near-neighbors (search_events vs search_market, get_ticket_listings vs get_market_read, list_open_listings vs get_open_listing), but the set still has many overlapping entry points into the same offer book, plus three parallel identity surfaces (get_my_orders vs get_order_status vs get_user_account) and a bid/offer/standing-bid family that requires careful reading to pick correctly. Three distinct audiences (buyer, seller, node operator) share one namespace, increasing misselection risk.

Naming Consistency4/5

Consistent snake_case verb_noun pattern throughout: search_*, get_*, list_*, create_*, cancel_*, submit_*. Minor deviations: auth_status and check_listing are noun-first, and the tool names say standing_bid while the description insists the user-facing term is 'standing offer,' which is a small vocabulary mismatch an agent must remember.

Tool Count2/5

44 tools is heavy and spans what look like three separate products: consumer ticket buying, seller listing/offer management, and a node-listening/discovery pipeline (add_my_sources, get_listening_assignment, submit_seller_leads, get_discovery_plan, submit_discovered_sources). Each cluster is reasonable on its own, but bundling them inflates the surface well past a well-scoped set.

Completeness3/5

The buyer and browsing lifecycle is well covered (discovery, price reads, listings, offers, buy-now, standing bids, orders, tickets, wallet, seat map, price history/sales). But the seller lifecycle has a real hole: accept_offer starts a transfer deadline, yet there is no tool to perform the ticket transfer or to claim seller funds (the funds_claimed event exists with no corresponding action), and there is no way to edit a listing — only cancel and recreate.

Available Tools

44 tools
accept_offerAccept OfferA
Destructive
Inspect

Accepting sells to a buyer and starts a clock: the offer comes from a buyer on XP, not from XP. Once it's accepted, the seller must transfer the tickets through XP to that buyer by a deadline XP sets at that moment. Missing it can cancel the sale and forfeit the payout. The deadline is per sale, not a fixed window -- do not quote a countdown of your own. The accept result carries the real one, or says plainly when XP has not set it yet; pass that on. From XP's connected resale order book. Two-phase write on the XP live offer book. Use when an authenticated seller wants to accept a specific bid on their listing (e.g. 'accept the $200 offer on my tickets'). Call with confirm=False first to preview which offer will be accepted; call with confirm=True only after the user explicitly approves. Acceptance is irreversible. Do not use without the two-phase preview-then-confirm flow. Only confirm=True submissions return success=true. Requires auth and write:listings scope. Seller-facing: you are accepting a buyer's offer on your own listing.

NameRequiredDescriptionDefault
confirmYesRequired. True to accept the offer; False to preview without accepting.
identifierYesPublic listing identifier from list_my_listings or get_my_listing_status.
offer_uuidYesOffer UUID from get_my_listing_status open_offers.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructive annotation, it discloses the real consequences: acceptance starts a per-sale deadline, missing it can cancel the sale and forfeit payout, and acceptance is irreversible. It also names the auth and write:listings scope requirements and explains the two-phase result semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main consequence and required flow, and most sentences carry useful operational detail. It is somewhat long and repetitive, especially around seller-facing context and the preview/confirm warning, but not wasteful enough to obscure the core instruction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the destructive annotation, output schema, and fully described input schema, the description fills the remaining gaps an agent needs: irreversible consequence, deadline handling, auth/scope, and the preview-then-confirm protocol. Nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description still adds important meaning for confirm: false previews the accepted offer, true actually accepts it, and only true returns success. It adds less for identifier and offer_uuid because the schema already documents their sources.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: a seller accepts a buyer's offer on their listing. It clearly distinguishes the action from adjacent seller tools like reject_offer and from buyer-side actions by saying the offer comes from the buyer, not XP.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance (authenticated seller accepting a specific bid on their listing) and a required two-phase flow: preview with confirm=False, then confirm=True only after explicit user approval. It also explicitly warns not to use it without that flow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_my_sourcesAdd My FeedsAInspect

Add feeds this node can read -- groups the person is a member of, or searches they run.

They are this node's to search right away: get_listening_assignment starts handing them out. Public ones are shared with every node at once unless your node's auto-approval is off. A feed already listed is linked to this node instead of duplicated. Returns added [{index, source_id, name, status, new}] and rejected [{index, reason}].

NameRequiredDescriptionDefault
sourcesYesUp to 20 feeds the person running this node can read. Each: platform (facebook|x|reddit), source_kind (group|subreddit|search_query), name, target (group/subreddit URL or search text), access_type (public|private_membership_required), optionally source_category, geo_metro.
agent_nameNoThis agent's name, unique among your agents, e.g. 'grok-chicago-1'. Each name is tracked separately.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say this is a non-readOnly, non-destructive, closed-world write; the description adds genuinely non-obvious behavior: dedupe by linking an already-listed feed to this node instead of duplicating, and public feeds being shared fleet-wide unless auto-approval is off. That is real added context beyond the annotations, though permission requirements and failure handling are still unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The scoping sentence is front-loaded and each subsequent sentence carries distinct information (immediate availability, auto-approval caveat, dedupe behavior). The inline return-shape bracket is the one piece that could be trimmed given an output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating, non-destructive tool with a full input schema and an output schema, the description covers the pieces an agent can't infer: immediate searchability, dedupe-on-existing, and public-share/auto-approval behavior. The prose return shape duplicates the output schema and rejection causes remain vague, but nothing critical to invoking it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the sources array already documents platform, source_kind, target, access_type and the 20-item cap, so the schema does the heavy lifting. The description adds no semantics for agent_name (separate tracking per name) or for how target formats map to source_kind, leaving the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Add feeds this node can read") and narrows scope to groups the person belongs to or searches they run. An agent can tell this registers existing feed sources rather than searching or discovering them, though it never names the closest sibling (submit_discovered_sources) to sharpen the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"They are this node's to search right away: get_listening_assignment starts handing them out" gives useful sequencing context, and the auto-approval caveat hints at a precondition. But there is no explicit statement of when to use this over submit_discovered_sources, or what to do when a source is rejected.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

auth_statusAuth StatusA
Read-only
Inspect

Use ONLY when the user explicitly asks whether they are signed in to the XP marketplace (e.g. 'am I logged in?', 'am I connected to my tickets?'), or after a protected tool already returned AUTH_REQUIRED and the user wants the current state re-checked. Do NOT call this as a preflight before account / my tickets / wallet / favorites / referral / order tools — calling auth_status first swallows the 401 those tools would emit on the connected order book and prevents the MCP client from triggering OAuth. Always call the requested protected tool directly; the client will start sign-in on 401. Read-only. Returns authenticated boolean, tier roles, and a wallet flag — never raw tokens.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already cover read-only safety, but the description adds real behavioral context beyond them: calling it early can swallow the 401 that would otherwise start OAuth, and the response never contains raw tokens. This is a non-obvious side effect that an agent could not infer from the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the 'Use ONLY when' rule, and every sentence adds something useful. The example list and the long list of protected tools make it dense, but none of it is padding, since those lists are what make the routing rule actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although an output schema exists, the description still briefly states the shape of the result (authenticated boolean, tier roles, wallet flag, no raw tokens), and it fully covers the routing and OAuth behavior that make this tool easy to misuse. Nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to explain and the baseline is 4. The description correctly says nothing about inputs and instead spends its words on when to call the tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: check whether the user is signed in to the XP marketplace. It clearly distinguishes this tool from all the protected siblings (account, my tickets, wallet, favorites, referral, order tools) and names exactly what state it reports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when (the user asks directly, or after a tool returned AUTH_REQUIRED and the user wants a re-check) and an explicit when-not (no preflight before protected tools), naming the alternatives to call instead. The reasoning behind the exclusion — a 401 that gets swallowed and prevents the MCP client from triggering OAuth — is also given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

buy_listing_nowBuy Listing at the AskA
Destructive
Inspect

From XP's connected order book of resale listings. Use when an authenticated buyer wants a fan listing outright at the seller's published asking price, rather than negotiating -- 'buy it now', 'take it at the ask', 'just buy me those tickets to the game'. Only listings that carry an asking price can be bought this way; for one without an ask, use make_offer_on_listing. Two-phase: confirm=false previews the total so it can be read back to the user, confirm=true buys. A confirm here completes the sale immediately -- the money leaves the caller's XP USDC balance and the seller is committed. Pays from the caller's XP USDC balance; the x402 rail does not apply to fan listings, only to buy_tickets. Requires auth.

NameRequiredDescriptionDefault
railNoHow to pay. 'usdc' spends the caller's XP USDC balance.usdc
confirmNoFalse (default) previews. True buys at ask_per_ticket_usd, the price the preview showed.
identifierYesListing identifier from list_open_listings or get_open_listing.
ask_per_ticket_usdNoThe per-ticket price the preview showed (its ask_per_ticket_usd). Required with confirm=true: the purchase is refused if the seller has changed the ask since, so the buyer never pays a price they did not see.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral context beyond annotations: confirm=true completes the sale immediately, money leaves the caller's XP USDC balance, and the seller is committed. It also discloses authentication requirements and clarifies that the x402 rail applies only to buy_tickets, not fan listings. This is consistent with destructiveHint=true and readOnlyHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and scope, then moves through alternatives, two-phase behavior, financial consequences, payment rail, and auth. Every sentence contributes operational guidance for a high-stakes purchase tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the destructive nature of the operation, the existing output schema, and rich annotations, the description covers the key missing context: preview vs. purchase semantics, authentication, payment source, price-change protection, and the alternative for listings without an ask. Nothing critical for correct invocation appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds workflow meaning: confirm=false previews the total for read-back, confirm=true executes the purchase, and ask_per_ticket_usd must match the previewed price or the purchase is refused. This goes beyond the schema's field-level descriptions by explaining the safety contract between preview and purchase.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('buy a fan listing outright at the seller's published asking price') and clearly distinguishes this from negotiation and from make_offer_on_listing. An agent can identify the exact purchase action 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use this tool: an authenticated buyer wants to purchase at the ask rather than negotiate. It also states when not to use it by routing listings without an asking price to make_offer_on_listing, and explains the two-phase preview/buy workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

buy_ticketsBuy TicketsA
Destructive
Inspect

Use when the user wants tickets to an event on the XP marketplace (connected order book). Four payment rails are supported. Use 'stripe_link' (the default — omit rail to get it) unless the user asks for another: pay by CARD on a Stripe-hosted Checkout page; the preview returns payment_link and checkout_session_id — open the link for the user, then call again with confirm=true and checkout_session_id; the result includes stripe_payment_intent. Other rails, by name only: 'privy' (server-signed USDC transfer from the user's delegated Privy embedded wallet), 'x402' (agent-signed Solana USDC transfer via the x402 protocol — use only if the caller can build and sign Solana x402 'exact' payloads), and 'mpp' (pay by CARD with a Stripe Shared Payment Token over the Machine Payments Protocol binding; present the credential in params._meta['org.paymentauth/credential'], or in the payment_credential argument when your client cannot send _meta). Requires write:tickets scope (and read:account for the balance preflight when using granular scopes). Call once with confirm=false to preview the total, then call again with confirm=true after the user explicitly approves.

NameRequiredDescriptionDefault
railNoPayment rail. 'stripe_link' (default) to pay by card on a Stripe-hosted Checkout page: the preview returns payment_link and checkout_session_id; after the user pays, confirm with checkout_session_id. 'privy' for server-signed delegate USDC. 'x402' for agent-signed Solana x402 payment with payment_proof. 'mpp' to pay with a Stripe Shared Payment Token over the MPP binding.stripe_link
uvidYesTicket group UVID from get_ticket_listings.
confirmNoMust be true to execute. False returns a preview only.
event_idYesEvent identifier from search_events or get_event_details.
quantityYesNumber of tickets to purchase.
facilitatorNorail='x402' only. Id from facilitators_available in the preview envelope; omit to use the deploy default. Pattern: ^[a-z][a-z0-9_]*$.
payment_proofNoRequired only for rail='x402' when confirm=True. Base64-encoded x402 v2 PaymentPayload (SVM 'exact') containing a partially-signed Solana USDC TransferChecked transaction.
payment_credentialNorail='mpp' only. JSON MPP credential, as a fallback for clients that cannot send params._meta. Prefer _meta when available.
checkout_session_idNorail='stripe_link' only, with confirm=true. The checkout_session_id returned by the preview.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare write/destructive/openWorld flags; the description adds substantial context beyond them — required scopes (write:tickets, plus read:account for the balance preflight), the two-phase preview/confirm contract, what the preview returns (payment_link, checkout_session_id), what confirm returns (stripe_payment_intent), and the explicit need for user approval. It is consistent with destructiveHint=true by gating execution behind explicit approval.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger and default rail, then progressively discloses the alternative rails, so the most important content comes first. It is dense and heavily parenthetical for a single paragraph, but the length is defensible given four payment rails and a multi-step confirm flow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, nine-parameter purchase tool with four payment modes, the description covers permissions, the preview/confirm state machine, per-rail return values, and client capability constraints. An output schema exists, so return-value detail is a bonus rather than a gap, and nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3 and the schema already explains each parameter well. The description still adds meaning the schema lacks: rail-selection heuristics, the mpp credential fallback via params._meta when a client cannot send _meta, and the ordering relationship between the preview's checkout_session_id and the confirm call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — buying tickets to an event on the XP marketplace connected order book — and frames it as a purchase flow, which is far more than a restatement of the name. However, it never distinguishes itself from the closely named sibling buy_listing_now, leaving the agent to infer that this tool operates on ticket groups (uvid) rather than listings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use it ('when the user wants tickets to an event'), which rail to pick by default and when to switch ('use stripe_link unless the user asks for another'), and gives a per-rail condition for the non-default options including a caution that x402 should only be used by callers that can sign Solana payloads. The preview-then-confirm sequencing is spelled out as a procedure.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_my_listingTake Listing DownA
Destructive
Inspect

Use when a seller wants to remove their own listing from the XP marketplace -- 'take my listing down', 'delist those', 'I sold them elsewhere', 'cancel that listing'. Closes the listing so buyers can no longer make an offer on it. Every open offer on the listing is REJECTED and those buyers are notified that it was removed -- say so before committing, since someone waiting on an answer gets a no. Cannot be used once the seller has accepted an offer: that is an agreed sale, and XP support handles it from there. Two-phase: confirm=false previews, confirm=true removes it. Cannot be undone -- relisting means calling create_listing again. Requires auth; works only on the caller's own listing.

NameRequiredDescriptionDefault
confirmNoFalse (default) previews. True takes the listing down.
listing_identifierYesListing identifier from list_my_listings or create_listing.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds substantial context beyond them: open offers are rejected and buyers notified, the action cannot be undone, relisting requires create_listing, and it works only on the caller's own authenticated listing. This is rich behavioral disclosure well past the annotation floor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the primary use case and trigger phrases, then layers constraints and side effects in descending priority. Despite its length, nearly every clause (offer rejection, irreversibility, accepted-offer exclusion, auth scope) carries operational weight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values needn't be described, and the description fully covers prerequisites, side effects, irreversibility, and the preview pattern. For a destructive two-param tool this is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the schema documents both parameters; the description still reinforces the confirm=false/true preview-vs-commit semantics and advises saying so before committing, adding decision-context beyond the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: closes a seller's own listing so buyers cannot make an offer. It names the exact trigger phrases and clearly distinguishes this from sibling actions like cancel_my_offer by scoping to the caller's listing. An agent can identify the operation 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use (seller removing own listing), colloquial triggers, and a clear when-not: it cannot be used once an offer is accepted, since that is an agreed sale handled by support. The two-phase confirm flow is also spelled out as a usage pattern.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_my_offerCancel My OfferA
Destructive
Inspect

From XP's connected resale order book. Two-phase write on the XP live offer book. Use when an authenticated buyer wants to rescind their outstanding offer on an XP marketplace listing (e.g. 'cancel my offer to make an offer at a lower price', 'pull my bid'). Call with confirm=False first to preview which offer will be rescinded; call with confirm=True only after the user explicitly approves. Pass bid_uuid from make_offer_on_listing (or the buyer swap id from the same response; the server resolves it). Only confirm=True submissions return success=true. Requires auth and write:bids scope. Do not use for browse / discovery; this is a marketplace transaction tool that mutates an active bid. For standard buy-now ticket purchases without a bid in flight, use search_events and get_ticket_listings.

NameRequiredDescriptionDefault
confirmYesRequired. True to rescind; False to preview without rescinding.
identifierYesPublic listing identifier the offer was placed on.
offer_uuidYesIdentifier of the offer to cancel. Preferred: bid_uuid from make_offer_on_listing's response. Also accepted: the buyer swap identifier from that same response — MCP resolves it via privy-bids/mine.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, it discloses two-phase write behavior, the need for auth and write:bids scope, the fact that only confirm=True returns success=true, and that the server can resolve the buyer swap id. These are material mutation and authorization details an agent needs before acting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core two-phase workflow and uses each later sentence to cover prerequisites, identifier sourcing, exclusions, and alternatives. It is slightly repetitive in saying both 'connected resale order book' and 'live offer book', but overall it is appropriately sized for a destructive transaction tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with an output schema and full annotation coverage, the description is complete enough to call correctly. It covers prerequisites, confirmation sequencing, identifier resolution, success conditions, exclusions, and alternatives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameter meanings are already well documented. The description still adds useful context by naming make_offer_on_listing as the source of bid_uuid and by reinforcing the confirm=False versus confirm=True semantics with the success condition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: rescind an outstanding offer on an XP marketplace listing. It distinguishes this mutation tool from discovery/browse tools and from buy-now ticket purchases, and it names the related make_offer_on_listing tool for the identifier source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly gives when to use the tool and how to sequence calls: confirm=False first for preview, confirm=True only after explicit user approval. It also states exclusions and alternatives for browse/discovery and standard buy-now purchases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_listingCheck ListingA
Read-only
Inspect

Poll the current status and action feed for the listing tied to this call's correlation id.

IDENTITY: the correlation id is never a tool argument. It must ride the X-XP-Correlation-Id HTTP header on every MCP request, exactly like on every other tool call for this job. A missing/invalid header returns a structured error (below) instead of failing the call -- this tool is open-world (no bearer/OAuth needed); holding the correlation id (an unguessable v4 uuid) is itself the access control.

ARGS since: the cursor value returned by the previous call for this same correlation id. Omit (or pass null) on the first call to fetch the full action feed from the beginning. Must be >= 0; a negative value returns {"error": "invalid_since"}.

POLL LOOP: store cursor per correlation id in your own cache/store, send it back as since on the next call, and render only the new actions entries onto your own timeline -- the array already excludes anything at or before since and is empty when nothing changed. listing is a snapshot for cheap "current state" display only (quantity, bid count, bucket, ...); do not diff it yourself for history -- actions is the exact, ordered record (a bid placed and rescinded between two polls still yields both events).

RESULT SCHEMA (found: false -> every other field is null/absent; an unrecognized correlation id is not an error, just an empty result)::

{
  "correlation_id": "<uuid>",
  "found": true,
  "verified": true,               # identity confirmed when the listing was created
  "event_id": 406,                # last event this correlation looked at
  "listing": {                    # null until a listing exists for this id
    "swap": "d5b03i1rbqqa",       # public listing identifier (sell/checkout URLs)
    "created_at": "2026-08-12T14:00:00+00:00",
    "status_bucket": "open",      # see BUCKETS below
    "event_id": 406,
    "quantity": 2,
    "bid_count": 3,
    "top_bid_amount": 12000,      # cents, open bids, null if none
    "accepted_bid_amount": null,  # cents, set once a bid is accepted
    "sold": false,
    "last_activity_at": "2026-08-12T14:05:00+00:00"
  },
  "actions": [                    # everything after `since`, oldest first, [] if nothing new
    {"id": 91234, "event": "listing_created", "at": "2026-08-12T14:00:00+00:00"},
    {"id": 91288, "event": "bid_placed", "at": "2026-08-12T14:03:10+00:00", "amount": 12000}
  ],
  "cursor": 91301,                # send back as `since` on the next call
  "actions_truncated": true       # present+true only when 50+ new rows; call again with `cursor` to page
}

BUCKETS (listing.status_bucket) open - accepting bids, none accepted yet awaiting_tickets - a bid was accepted; seller hasn't transferred tickets yet buyer_has_tickets - tickets transferred; seller payout not yet finalized seller_payout - funds are ready to release to the seller zombies - stalled, no forward progress -- needs attention closed - terminal: cancelled, expired, or fully settled

EVENT VOCABULARY (actions[].event; only bid/sale events carry amount, in cents) listing_created, bid_placed, bid_rescinded, bid_accepted, bid_rejected, tickets_transferred, funds_claimed, listing_cancelled, listing_expired, sale_completed NOTE: no separate payout-completion signal exists -- the agent-forward payout rail is retired; sellers claim funds normally (funds_claimed).

FAILURES: this tool never raises and never returns an auth error (401). {"error": "missing_correlation_header", "message": "..."} - header missing/invalid {"error": "invalid_since"} - since < 0 {"error": "status_unavailable"} - backend down/slow/non-200

NameRequiredDescriptionDefault
sinceNoCursor from the previous call's `cursor` field. Omit/null on the first call to fetch the action feed from the beginning. Must be >= 0.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Substantively it is rich: it discloses the required X-XP-Correlation-Id header, that a missing header yields a structured error rather than a failure, that the tool never raises 401, that found:false is a normal empty result, and the exact failure payloads. However, it labels the tool 'open-world (no bearer/OAuth needed)' while the annotations declare openWorldHint=false, which is a direct clash on a declared trait and muddies the auth/trust model the agent is supposed to rely on.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded and well sectioned (IDENTITY, ARGS, POLL LOOP, RESULT SCHEMA, BUCKETS, EVENT VOCABULARY, FAILURES), so it is easy to scan. But it reproduces an entire result schema verbatim even though an output schema exists, which is bulk that the structured field could carry. The BUCKETS and EVENT VOCABULARY blocks do earn their place because they encode enumeration semantics an agent cannot infer.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a polling tool with a cursor protocol, the description covers everything an agent needs: header-based identity, cursor round-tripping, truncation paging, bucket meanings, event vocabulary, and the full error set. Nothing material about correct invocation or result interpretation is left to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents `since` as the previous call's cursor with a >=0 constraint. The description still adds real meaning beyond that: where the cursor comes from, that omitting it fetches the feed from the beginning, and that a negative value returns {"error": "invalid_since"}. This is genuine added semantics over a well-documented single parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Poll the current status and action feed for the listing tied to this call's correlation id.' The correlation-id identity model implicitly separates it from sibling tools such as get_my_listing_status or get_order_status, which presumably key off auth identity. It never names an alternative explicitly, which keeps it short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The POLL LOOP section gives clear operational context: omit `since` on the first call, store `cursor` per correlation id, send it back, and render only new `actions` rather than diffing `listing` yourself. It also explains the truncation retry path. What is missing is any statement of when to prefer this tool over sibling status tools (get_my_listing_status, get_order_status), so it stops short of explicit alternatives/exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_listingList Tickets for SaleA
Destructive
Inspect

Use when the user wants to sell tickets they hold on the XP marketplace -- 'sell my two seats for Friday', 'list section 104 row C', 'put my tickets up'. Creates the listing that buyers (other fans on XP) then make an offer on; the seller answers those with accept_offer and reject_offer. Tickets are not transferred now -- transfer happens after an offer is accepted. Ask the seller whether the seats are accessible (ADA), obstructed view or standing room only: all three are required, never assumed. Two-phase: confirm=false previews so the section, row, seats and those three can be read back to the user, confirm=true creates it. A new listing is REVIEWED before it goes live. The result carries listing_state -- live, in_review or not_accepted -- and only live means buyers can see it. Do not tell the user their tickets are for sale unless it says live. Requires auth.

NameRequiredDescriptionDefault
gaNoTrue for general admission with no seat numbers.
rowNoRow, e.g. C. Omit for general admission.
is_adaYesRequired. True if accessible (ADA) seating. Ask the seller; never assume.
is_sroYesRequired. True if standing room only. Ask the seller; never assume.
confirmNoFalse (default) previews. True creates the listing.
sectionNoSection name exactly as the venue prints it, e.g. 104.
event_idYesEvent identifier from search_market or search_events.
quantityYesHow many tickets are being listed together.
last_seatNoLast seat number, if seated.
first_seatNoFirst seat number, if seated.
ask_per_ticket_usdNoOptional asking price per ticket in dollars. Omit to invite offers with no anchor.
is_obstructed_viewYesRequired. True if the view is obstructed. Ask the seller; never assume.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag a non-readonly, destructive write; the description adds the traits annotations cannot express: no tickets move at listing time (transfer follows an accepted offer), new listings are reviewed, and the result's listing_state may be live/in_review/not_accepted with an explicit warning never to claim the seats are for sale unless state is live. It also notes the auth requirement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the trigger phrase, then layers call mechanics, review behavior, and result interpretation in a logical order with no filler sentences. It is dense and long-ish for a single tool, but nearly every clause carries operational information the agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 12 parameters and a mutation with a review gate, the description covers the workflow prerequisites, the two-phase confirmation, the auth requirement, and the interpretation of listing_state — the risky ambiguity for this tool. Output schema handling of return shape is appropriately left to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description earns an extra point by elevating is_ada, is_obstructed_view, and is_sro into a required seller-interview workflow ("never assumed") and by explaining what confirm=false previews actually surfaces (section, row, seats, the three flags). Pricing and seating parameters are left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Use when the user wants to sell tickets they hold on the XP marketplace" states a specific verb, resource, and audience, then reinforces it with three natural-language triggers. It explicitly separates the tool's role from accept_offer/reject_offer (seller responding to offers) and from transfer, so an agent can place it precisely among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use phrasing ("sell my two seats for Friday") and an implicit when-not: this is listing creation, not offer handling or ticket transfer. It also prescribes a prerequisite conversation (ask about ADA/obstructed/SRO) and a two-phase call pattern before creation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_standing_bidRest a Standing OfferA
Destructive
Inspect

Creates a STANDING OFFER -- that is the term to use when speaking to the user; the tool keeps standing_bid only because the stored records do. Use when the user wants to make an offer at their own price across one or more events and sections and wait for it to fill, rather than paying an asking price now -- e.g. 'offer 80 a seat for any of these nights', 'let me know if something in 104 comes up at my number'. The offer rests on XP's live offer book and fills itself when a matching fan listing appears, so it needs no listing to exist yet. Worth knowing before resting one: when a matching listing is already open, an offer on it (make_offer_on_listing) gets an answer the user will see -- accept, reject or counter -- while a standing offer waits for supply that may never arrive. Check what is open first (list_open_listings, or get_market_read for one event). Both are valid; resting a price where nobody is selling yet is what this tool is for. Say which you did. Two-phase: call with confirm=false to preview the total commitment, then confirm=true once the user agrees. Price is whole dollars per ticket -- XP refuses cents so every fill passes per-ticket validation. Fills take whole lots and cannot strand a remainder. Requires auth.

NameRequiredDescriptionDefault
confirmNoFalse (default) previews without committing. True rests the offer.
quantityYesHow many tickets the offer is good for.
sectionsYesSection names the offer covers, e.g. 104 and 105. Exact names.
event_idsYesEvent ids this offer may fill on, from search_market or search_events.
expires_atNoOptional ISO-8601 UTC expiry. Omit for no expiry.
amount_per_ticket_usdYesWhole dollars per ticket. Cents are not accepted.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false, destructiveHint=true, openWorldHint=false; the description goes well beyond by disclosing the two-phase confirm preview flow, that fills take whole lots with no stranded remainder, that whole-dollar pricing is enforced, that auth is required, and that the offer rests on a live offer book that self-fills. This is exactly the extra behavioral context the annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the sibling contrast are front-loaded, and most sentences carry decision-relevant content. It is long and leans on parenthetical asides and meta-instructions ('that is the term to use when speaking to the user'), which slightly dilute density, but nothing is truly wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, full schema description coverage, and annotations covering the safety profile, the description supplies everything else an agent needs: auth requirement, two-phase calling convention, pricing granularity, fill behavior, and alternative-tool routing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description adds real meaning: the two-phase confirm=false/true lifecycle, the whole-dollar constraint rationale ('XP refuses cents so every fill passes per-ticket validation'), and the whole-lot fill semantics that qualify quantity. Some of this overlaps the schema ('Cents are not accepted'), keeping it below a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Creates a STANDING OFFER'), defines the term explicitly, and distinguishes it from the closely related make_offer_on_listing and buy_listing_now by explaining the fill/wait mechanic. An agent can identify this tool without inspecting any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete when-to-use triggers with example utterances ('offer 80 a seat for any of these nights'), names the alternatives (make_offer_on_listing, list_open_listings, get_market_read), and explicitly clarifies that both paths are valid to forestall misuse. Exclusions and pre-checks are all present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_discovery_planGet Discovery PlanAInspect

Which US metros to search for new sources, in order, and the sources XP already has.

Metros are US cities ranked by upcoming XP events. near comes first, then metros with no sources yet, then the rest. Each metro lists its known_sources; national_sources have no metro. Skip anything already known. Set geo_metro to the metro label exactly as given here when you call add_my_sources or submit_discovered_sources.

NameRequiredDescriptionDefault
nearNoThe person's city if you know it, e.g. 'Ann Arbor, MI' or 'Chicago'. It goes first.
limitNoHow many metros to return (max 100).
agent_nameNoThis agent's name, unique among your agents, e.g. 'grok-chicago-1'. Each name is tracked separately.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations present but sparse (readOnlyHint=false, which the description does not clarify or contradict), the description adds real behavioral context: the prioritization algorithm, the deduplication rule ('Skip anything already known'), and the exact-label contract for returned metro names. It stops short of explaining why this read-like 'Get' is not marked read-only (possibly agent_name tracking), leaving a small ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded summary line followed by the ordering rule and the downstream-call instruction, with no filler. The only minor cost is unexplained jargon ('XP') in the first sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described; the description nonetheless covers ordering, deduplication, and downstream usage. What is missing is edge-case behavior (e.g., how `near` is matched if the city is unknown or ambiguous) and any note about why the tool is flagged non-read-only.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description goes beyond it by explaining the consequence of `near` in the ordering and by defining `geo_metro` as a verbatim label drawn from this output. It does not mention `limit` or how `agent_name` affects which plan is returned.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line states a concrete resource and its content: an ordered list of US metros to search for new sources plus the sources already held. It is immediately distinguishable from siblings like add_my_sources or search_market, which act on sources or listings rather than producing a prioritized discovery plan.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit ordering rules ('near' first, then metros with no sources, then the rest), says to skip known sources, and directly instructs how to feed results forward: 'Set geo_metro to the metro label exactly as given here when you call add_my_sources or submit_discovered_sources.' That is concrete when-to-use and how-to-chain guidance naming the two downstream alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_event_detailsGet Event DetailsA
Read-only
Inspect

Use when an event ID is in hand and the user wants the full event card before browsing tickets to that event — venue, performers, fee-inclusive price preview, images. Pulls from the XP marketplace catalog. Cache the result for the conversation rather than re-calling for the same event_id. Do not use to list ticket inventory; get_ticket_listings is the right tool for seat-level data.

NameRequiredDescriptionDefault
event_idYesEvent ID from search_events or a previous user selection (e.g. 406).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds real context beyond that: the data source ('Pulls from the XP marketplace catalog') and an operational instruction to cache results per conversation rather than re-calling for the same event_id. It doesn't cover failure behavior for an unknown event_id, which is the only notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the usage trigger, then the data source, then the caching rule, then the exclusion. Every sentence contributes a distinct piece of information with no repetition of the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't document return values, and it correctly focuses on selection guidance, source, and caching. For a simple one-parameter read tool this is nearly complete; only error/edge behavior (e.g. invalid event_id) is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required parameter with 100% schema description coverage, including where the ID comes from ('search_events or a previous user selection') and a format example. The description adds no further parameter semantics, so the schema does the heavy lifting and the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('full event card' for an event ID) and enumerates what the card contains: venue, performers, fee-inclusive price preview, images. It also explicitly rules out the sibling use case, so an agent can distinguish it from get_ticket_listings and get_venue_details 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the triggering precondition ('event ID is in hand'), the intent ('wants the full event card before browsing tickets'), an explicit exclusion ('Do not use to list ticket inventory'), and names the correct alternative ('`get_ticket_listings` is the right tool for seat-level data'). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_listening_assignmentGet Listening JobAInspect

Get the next listening job: one group or search to read, with the rules for reading it.

Read the source with your own tools, read-only (never like, comment, message or join), only posts from the last rules.max_post_age_hours hours and at most rules.max_posts_to_scan posts. For each post, find the XP event with search_events, then send everything in ONE submit_seller_leads call with the assignment_id, even if you found nothing (send an empty list). If you could not open the source at all, submit with could_not_read true instead. The job expires after expires_in_seconds. Full playbook: resource skill://instructions/listener-node.

Only sources matching can_read are handed out; the response echoes the stored set. Public sources are always available, least recently searched first, so an empty result is normal and still worth submitting. Returns {"assignment": null, "reason": "no_source_available"} only when every source you can read is in use or none are active; stop rather than looping.

NameRequiredDescriptionDefault
can_readNoWhat this agent can open, as platform:source_kind: facebook:group, x:search_query, reddit:subreddit. Add :private (facebook:group:private) when signed in as a member, to also get member-only groups. Declare it on your first call; it is kept for this agent_name, so omit it after that unless it changes. Never declared = every source; pass [] to go back to every source.
agent_nameNoThis agent's name, unique among your agents, e.g. 'grok-chicago-1'. Each name is tracked separately.
preferred_platformsNoOnly these platforms for this call: facebook, x, reddit. Not kept.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations give only readOnlyHint=false / destructiveHint=false / openWorldHint=false; the description adds the traits that actually matter here -- the job is a time-limited lease ("expires after expires_in_seconds"), sources are excluded while "in use," allocation is least-recently-searched-first, and an empty result is normal but still must be submitted. That explains why readOnlyHint is false despite the 'get' name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose before the procedural detail, and nearly every sentence carries an actionable constraint. It runs long with stacked parentheticals ("even if you found nothing (send an empty list)"), but no paragraph is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a leased-assignment tool with an output schema, the description covers the happy path, the empty/no-source path with its exact sentinel response, the failure path, expiry, and a pointer to skill://instructions/listener-node for deeper detail. An agent could act correctly without opening anything else.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real behavioral meaning for can_read ("Only sources matching can_read are handed out; the response echoes the stored set"), which is more than the schema's declaration/persistence note. agent_name and preferred_platforms get no added context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb and resource: "Get the next listening job: one group or search to read, with the rules for reading it." This is unmistakably distinct from siblings like submit_seller_leads and search_events, which are named as downstream steps rather than alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly sequences the whole workflow: read the source read-only, honor max_post_age_hours and max_posts_to_scan, call search_events per post, then submit once via submit_seller_leads. It also names the fallback ("could_not_read true") and the stop condition ("stop rather than looping"), so no routing decision is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_market_readRead the MarketA
Read-only
Inspect

Use when the user wants to understand what an event is trading at, not just browse rows. Returns XP's ticket price matrix from the connected order book: per seat level, floor first, each section's rows front to back, a row shown only when it is cheaper than every row in front of it, fee-inclusive per ticket at the party size; plus the fan listings open to offers. Say that fans are selling into this event, so the user can make an offer below the ask; a specific cheapest fan ask is not yet surfaced, so do not lead with one. Do not describe the market with averages, medians, or maximum asks.

NameRequiredDescriptionDefault
event_idYesEvent identifier from search_market or search_events.
quantityNoParty size; filters to groups a buyer can actually transact at.
sectionsNoSection names the user named, to report on specifically.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare read safety; the description adds substantial non-obvious behavior: floor-first row ordering, the dominance rule ('a row shown only when it is cheaper than every row in front of it'), fee-inclusive pricing at party size, and that fan listings open to offers are included. Critically it discloses a data gap — no specific cheapest fan ask is surfaced — preventing the agent from fabricating one.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the usage trigger and no filler sentences; every clause carries either output semantics or a reporting constraint. The middle sentence is a long chained clause enumerating the matrix structure, which costs some readability but the content justifies the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter read tool with an output schema and read-only annotations, the description covers the remaining burden: what the matrix contains, how rows are ordered and filtered, and how the agent should present results. The 'do not describe the market with averages, medians, or maximum asks' directive closes the main misuse risk.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by explaining that prices are 'fee-inclusive per ticket at the party size,' clarifying quantity's effect on the returned numbers rather than just filtering. Sections are only indirectly referenced via 'per section's rows,' so it stops short of full extension.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns XP's ticket price matrix from the connected order book') and immediately distinguishes itself from row-browsing siblings with 'not just browse rows.' The detailed content of the matrix (per seat level, floor first, rows front to back) makes the tool's output shape unmistakable relative to search_market or get_ticket_listings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear triggering condition ('when the user wants to understand what an event is trading at') and an explicit negative condition ('not just browse rows'), which implicitly routes the agent away from listing-browse tools. It never names a sibling tool outright, so the alternative is inferable rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_my_bidsGet My BidsA
Read-only
Inspect

Use when an authenticated user wants to see the bids they have placed on the XP marketplace — e.g. 'show my bids', 'what offers did I make?', 'tickets to the shows where I'm bidding', 'did any of my bids settle?'. Returns bids classified as open or completed using the same outcome engine as the admin reporting page; rejected/lapsed/refunded bids are hidden. Paged: returns 25 by default, up to 200 with limit, and offset to continue. pagination.total counts only the bids the user can actually see, so when has_more is set say they are seeing a page rather than every bid they have. Read-only. Requires OAuth.

NameRequiredDescriptionDefault
limitNoHow many bids to return, 1-200. Defaults to 25.
offsetNoSkip this many. Use with limit to page.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the safety profile (readOnly, non-destructive), but the description adds substantial behavior: bids are classified open/completed via the admin outcome engine, rejected/lapsed/refunded bids are hidden, pagination defaults and limits, and OAuth is required. That filtering and visibility detail is exactly what annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the when-to-use trigger, followed by visibility rules and pagination facts. Dense but each clause carries operational information; only the pagination restatement is mildly redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be re-explained, yet the description still clarifies that pagination.total counts only visible bids and how to phrase has_more results. Nothing needed to call this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit and offset are already documented in the schema; the description largely restates the 1-200 range, 25 default, and offset paging. It adds no new syntax or edge-case semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (see) and resource (bids placed by the authenticated user) with concrete example utterances ('show my bids', 'did any of my bids settle?'). It is clearly distinguishable from siblings like get_my_orders and list_my_standing_bids.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear triggering context via example phrasings and scopes it to the authenticated user's own bids. It does not explicitly contrast against near-neighbors such as get_my_orders or list_my_standing_bids, so an agent must infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_my_contextWhat XP KnowsA
Read-only
Inspect

Use once the user has settled on an event, before quoting prices, to see what they already told XP: budget per ticket, quantity, date flexibility, and any saved notes. Stops you asking twice for something they said before, e.g. re-asking a budget right before you help them make an offer on the XP marketplace. Read-only: nothing said in this conversation is stored, so a new budget only persists if it becomes a resting commitment -- see create_standing_bid. Use saved notes to shape what you say, never read them back verbatim.

NameRequiredDescriptionDefault
event_idsYesEvent IDs the user has settled on. Usually one.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is already covered. The description adds valuable context beyond annotations: it clarifies that nothing said in the current conversation is stored and that a new budget only persists as a resting commitment (referencing create_standing_bid). It also explains the intended use of notes ('shape what you say, never read them back verbatim'). This is rich for a read tool, though it could mention response format or caching.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the primary purpose and timing. It is a bit long (four sentences) and includes some verbose phrasing like 'e.g. re-asking a budget right before you help them make an offer on the XP marketplace,' but every sentence still earns its place by conveying a distinct usage rule or behavioral caveat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only retrieval tool with one required parameter, full schema coverage, annotations covering safety, and an output schema (so return values need not be described), the description is complete. It covers timing, purpose, behavioral caveats, and cross-references the sibling tool create_standing_bid. Nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – the schema already fully documents event_ids ('Event IDs the user has settled on. Usually one.'). The description does not add any parameter syntax, format, or edge-case details beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states what is retrieved (budget per ticket, quantity, date flexibility, notes) and its temporal position ('once the user has settled on an event, before quoting prices'). The phrase 'what they already told XP' is slightly colloquial but still defines the resource as stored user-provided context. It doesn't explicitly distinguish itself from get_user_account, but the scope is specific enough to be useful.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('once the user has settled on an event, before quoting prices') and why ('stops you asking twice'). It also gives a constraint ('use saved notes to shape what you say, never read them back verbatim'). However, it does not name alternative sibling tools for retrieving user data (e.g., get_user_account) or say when NOT to use it, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_my_listing_statusGet My Listing StatusA
Read-only
Inspect

If the listing has sold and is awaiting the seller's ticket transfer, the result carries the transfer instructions and remaining obligation -- surface those first, ahead of anything else. From XP's connected resale order book. Use when an authenticated seller wants to poll their listing on XP — open bids, state, seats — before deciding to accept or reject an offer (e.g. 'any new bids on my tickets to the season opener?'). Surfaces the seller view of the live offer book. After create_listing, call it to confirm what XP stored (seats, disclosures) and whether buyers can see it: trust visible_to_buyers, not the state. Open-bid amounts are dollars in amount_usd. When is_seller is true, each offer includes actions mapping to accept_offer and reject_offer. Requires auth and read:bids scope. Seller-facing: this polls your own listing. A buyer browsing open listings uses list_open_listings.

NameRequiredDescriptionDefault
identifierYesPublic listing identifier from create_listing (listing_identifier), list_open_listings or list_my_listings.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this a safe read, but the description adds material context beyond them: auth plus the read:bids scope requirement, the critical caveat 'trust visible_to_buyers, not the state', the dollars interpretation of amount_usd, and an explicit precedence rule that sold-listing transfer obligations must be surfaced first. It also maps is_seller offer actions to accept_offer/reject_offer, which pre-wires the follow-up call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Almost every sentence carries operational value, and the fragmented phrasing ('From XP's connected resale order book') is minor. The structural weakness is front-loading a rare edge case (sold listing awaiting ticket transfer) ahead of the primary polling use, which buries the headline purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still clarifies the few return fields an agent would misread (amount_usd currency, visible_to_buyers as ground truth, per-offer actions). Auth requirements, seller vs buyer scope, and the post-create_listing verification role are all covered, leaving no gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema coverage is 100%, so the schema already documents identifier, including its source tools. The description doesn't add format, validation, or lookup-failure semantics beyond that. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('poll their listing on XP') and enumerates what it returns: open bids, state, seats, plus the seller's view of the live offer book. It explicitly distinguishes itself from the buyer-side sibling ('A buyer browsing open listings uses list_open_listings') and from list_my_listings, so an agent can route correctly 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use conditions: polling before deciding to accept/reject an offer, and confirming what XP stored after create_listing, complete with a worked example query. It also names the exclusion (buyer browsing) and the alternative sibling, which is the full when/when-not/alternative triad.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_my_ordersGet My OrdersA
Read-only
Inspect

Show the authenticated user their own orders on the XP marketplace and where each one stands. Use when the user asks about a purchase they already made -- 'where is my order', 'did my tickets go through', 'what did I buy for Saturday', 'when do my tickets arrive'. Newest first; returns status, vendor fulfilment status, delivery method, in-hand date, event, seats and fee-inclusive total. Money is in dollars. Requires auth. Do NOT use for tickets already delivered to the account -- get_my_tickets is the direct answer there. Not for seller-side listings (list_my_listings) or offers the user placed (get_my_bids).

NameRequiredDescriptionDefault
limitNoHow many recent orders to return, 1-50. Defaults to 20.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), and the description adds real context on top: auth requirement, newest-first ordering, dollar-denominated money, and the fields surfaced. It does not discuss pagination behavior, though ordering is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and trigger phrases before the routing exclusions. The example queries add genuine matching value rather than filler, though the definition is on the longer side.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with a rich output schema and full annotation coverage, this covers everything an agent needs: what it returns, ordering, auth, and which siblings to prefer. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (the single 'limit' param documents range 1-50 and default 20), so the schema carries the full burden. The description adds nothing about the limit parameter, which is the correct baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Show) and resource (the authenticated user's own orders on the XP marketplace) plus the scope 'where each one stands'. It is clearly distinguishable from siblings like get_my_tickets and list_my_listings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit trigger phrases ('where is my order', 'did my tickets go through', 'what did I buy for Saturday', 'when do my tickets arrive') and three explicit when-not routes naming the correct alternatives (get_my_tickets, list_my_listings, get_my_bids).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_my_ticketsGet My TicketsA
Read-only
Inspect

Show the authenticated user the tickets currently delivered to their XP marketplace account, all backed by XP's Quality XPerience Guarantee. Use when the user says 'my tickets', 'what tickets do I have', 'pull up my seats for tonight', or asks about an upcoming event they've already bought. Surfaces only delivered tickets — pending swaps and seller-side listings appear in list_my_listings. Requires auth. Do not use to list past orders or browse the marketplace; this is strictly delivered tickets on the user's account.

NameRequiredDescriptionDefault
limitNoHow many tickets to return, 1-200. Defaults to 25.
offsetNoSkip this many. Use with limit to page.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context beyond them: 'Requires auth' and the important scoping caveat that only delivered tickets surface while pending swaps live in list_my_listings. It does not describe rate limits or pagination behavior, so it falls short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose before the routing and exclusion details, and every sentence carries a distinct fact (scope, triggers, alternative, auth, exclusion). It is somewhat dense for a two-parameter list tool but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. Auth requirement, scope boundaries, the sibling alternative, and the exclusion are all present — nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters (limit, offset) are fully documented in the schema with defaults and ranges. The description adds no syntax or semantic detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: 'Show the authenticated user the tickets currently delivered to their XP marketplace account.' It explicitly distinguishes itself from list_my_listings (pending swaps/seller-side) and get_my_orders (past orders), so an agent can route correctly without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete trigger phrases ('my tickets', 'pull up my seats for tonight'), names the sibling alternative for the adjacent case, and includes an explicit exclusion: 'Do not use to list past orders or browse the marketplace.' Both when-to-use and when-not-to-use are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_my_walletGet My WalletA
Read-only
Inspect

Use when an authenticated user wants their XP marketplace Privy embedded-wallet address and USDC balance (e.g. 'what's my wallet for tickets to tonight?', 'how much USDC before I make an offer?'). Returns the wallet address, a wallet_connected flag, and the USDC balance — never the raw bearer token. Read-only; requires auth and read:account scope. Used to fund offers on the live offer book.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/destructiveHint, but the description adds meaningful context: requires auth and read:account scope, and explicitly does not expose the raw bearer token. It also names the wallet_connected flag, which is behavioral detail 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the 'Use when...' trigger, then the return contract, then auth/privacy notes. Dense but each clause earns its place; only mildly long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be re-explained, yet the description still summarizes the key shape and covers auth scope and token-safety. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are 0 parameters, so the baseline is 4. There is nothing for the description to clarify, and it appropriately says nothing about inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource (retrieve the authenticated user's Privy embedded-wallet address and USDC balance) and names the exact return fields. It is clearly distinguishable from siblings like get_user_account or get_my_context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete triggering user utterances ('what's my wallet for tickets to tonight?') and context ('Used to fund offers on the live offer book'). It does not explicitly name an alternative tool or say when NOT to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_open_listingGet Open ListingA
Read-only
Inspect

From XP's connected resale order book. Use when a listing identifier is in hand and a buyer wants the full record for one open listing on the XP marketplace before they make an offer (make_offer_on_listing) or buy it at the ask (buy_listing_now). Returns one row from the live offer book. Requires auth and read:bids scope. This is the offer/negotiation surface -- for a plain buy-now at the asking price without an offer, use search_events and get_ticket_listings instead.

NameRequiredDescriptionDefault
identifierYesPublic listing identifier from list_open_listings.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, non-destructive, closed-world behavior, and the description adds auth requirements ('Requires auth and read:bids scope') plus the live nature of the data ('one row from the live offer book'). It does not describe error behavior for a stale or missing identifier, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Content is front-loaded with the resale order book context, then the usage condition, then alternatives. Slightly verbose with multiple parenthetical tool names, but each clause carries routing or scope information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, full parameter schema coverage, and clear annotations, the description fills the remaining gaps: when to use it, which siblings to prefer instead, auth/scope requirements, and that it returns a single row of live offer data. Nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter's description already says the identifier is a public listing ID from list_open_listings. The prose adds only that the identifier must already be in hand; it does not expand on format or provenance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: fetch the full record for one open listing by identifier. It explicitly distinguishes itself from list_open_listings (the list variant) and from search_events/get_ticket_listings (the plain buy-now path), so an agent can tell exactly which tool this is.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a precise trigger ('when a listing identifier is in hand' and before make_offer_on_listing or buy_listing_now) and a precise exclusion ('for a plain buy-now at the asking price without an offer, use search_events and get_ticket_listings instead'). Alternative tools are named explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_order_statusGet Order StatusA
Read-only
Inspect

Get the status of one of the authenticated user's orders on the XP marketplace, by the order_uuid that buy_tickets returned. Use right after a purchase, or when the user asks about a specific order -- 'did that go through', 'is my order confirmed', 'when do my tickets arrive'. Returns status, vendor fulfilment status, delivery method, in-hand date, event, seats and fee-inclusive total. Money is in dollars. Requires auth; only the caller's own orders are visible. Without an order_uuid, use get_my_orders for the recent list.

NameRequiredDescriptionDefault
order_uuidYesThe order_uuid returned by buy_tickets (or listed by get_my_orders).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the bar is lower. The description adds genuine context beyond annotations: it requires auth, only the caller's own orders are visible (a real access constraint), and it enumerates what the response contains including currency units.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose, then usage triggers, then return contents, then constraints and the alternative. Every sentence is functional with no filler, despite being fairly information-dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return-value documentation isn't required, yet the description still summarizes the returned fields usefully. Auth, visibility scope, and currency are all covered, leaving nothing an agent needs missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the single required order_uuid. The description restates its provenance from buy_tickets and get_my_orders, which the schema description also provides, so it adds little beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get), resource (status of an order), and scope (the authenticated user's own orders on the XP marketplace), keyed by order_uuid. It also distinguishes itself from the sibling get_my_orders, which handles the multi-order list case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use triggers ('right after a purchase', user asking about a specific order) plus concrete example phrasings. It also names the alternative to reach for when no order_uuid is available ('use get_my_orders for the recent list').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_price_historyPrice HistoryA
Read-only
Inspect

Use when the user asks whether prices for an event are rising or falling, whether to buy now or wait for a price drop, or what an event has been doing lately. Returns the daily closing get-in price on the XP marketplace, one point per day, oldest first, with the fee-inclusive per-ticket price in dollars. This is the asking side over time -- what tickets actually sold for is get_recent_sales, and the two must not be conflated. An empty history is a real answer and a common one: XP records history only for events someone is tracking, so a quiet event has no line rather than a flat one.

NameRequiredDescriptionDefault
daysNoWindow in days, 1-90. Defaults to 30.
event_idYesEvent identifier from search_market or search_events.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read (readOnlyHint, destructiveHint=false, openWorldHint=false), and the description adds meaningful semantics beyond that: fee-inclusive per-ticket dollars, one point per day, oldest first, and the crucial caveat that an empty history is a legitimate and common result because XP only records tracking events. Minor deduction because some return-shape detail overlaps with the existing output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the usage triggers, then the return shape, then the disambiguation and the empty-history caveat. Four sentences, each carrying distinct information with no repetition of schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a read-only two-parameter tool with an output schema and full annotation coverage, the description supplies exactly the missing pieces: intent triggers, price semantics (asking vs sold), and the empty-vs-flat distinction that an agent would otherwise misread as an error.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both `days` (1-90, default 30) and `event_id` (from search_market or search_events) fully documented in the schema. The description adds no parameter-level detail such as interaction between the days window and the empty-history behavior, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (retrieves daily closing get-in price history for an event) and defines the granularity and ordering: one point per day, oldest first. It also draws an explicit boundary against the sibling get_recent_sales by contrasting asking price over time with actual sold prices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with concrete user-intent triggers ('are prices rising or falling', 'buy now or wait', 'what has this event been doing lately'), and names the alternative tool get_recent_sales with an explicit warning not to conflate the two. When-to-use and when-not-to-use are both covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recent_salesRecent SalesA
Read-only
Inspect

Use when the user asks what tickets actually sold for on an event, or before claiming nothing has traded. Returns recent completed deals from the XP marketplace with the per-ticket price and how long ago each cleared. An empty result is a real answer: no verified transfers in the window. Useful before deciding whether to make an offer or wait for a price drop. One sale is one sale -- do not generalise from a single clear.

NameRequiredDescriptionDefault
event_idYesEvent identifier from search_market or search_events.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this a safe read, so the description adds genuine behavioural context: an empty result is a meaningful answer (no verified transfers in the window), the data is completed deals rather than asks, and results include time-since-clear. The caution against generalising from a single sale warns about interpretation risk that no structured field conveys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The trigger condition is front-loaded and each sentence carries a distinct payload: trigger, return contents, empty-result meaning, decision use, interpretation caveat. Slightly long for a one-parameter read tool, with the final caveat bordering on advisory padding, but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-required-parameter read tool with annotations and an output schema, the description covers the only things structure cannot: when to reach for it, that empty means genuinely no trades, and how much to read into a thin result. Nothing an agent needs to call or interpret it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single event_id parameter is fully documented there, including its source (search_market or search_events). The description adds only indirect meaning ("on an event") and no format or scoping detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — recent completed deals from the XP marketplace with per-ticket price and time since clearing — which clearly separates it from listing/offer tools. It does not name a sibling explicitly (e.g. get_price_history, get_ticket_listings), so differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when the user asks what tickets actually sold for" is an explicit trigger, and "before claiming nothing has traded" plus "before deciding whether to make an offer or wait" give clear decision contexts. It never names an alternative tool to use instead, so the when-not/alternative half of the guidance is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_seat_mapSeat MapA
Read-only
Inspect

Use when the user asks where a section is, what the venue looks like, or wants to see the layout before picking seats on the XP marketplace -- 'where is 104', 'show me the map', 'is that behind the stage'. Returns the venue seating chart as an image. This is the venue LAYOUT -- where each section sits in the building. It is NOT a photograph of the view from a seat and must never be described as one. Not every venue has a chart; when one is missing say so plainly, and note that the section and row from get_ticket_listings still describe the seats exactly. No sign-in required.

NameRequiredDescriptionDefault
event_idYesEvent identifier from search_market, search_events or get_event_details.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the read-only safety profile; the description adds substantive behavior beyond that: the return type is an image, chart coverage is not universal, missing-chart handling is prescribed ('say so plainly'), and auth is stated as unnecessary. The explicit prohibition against describing it as a seat-view photo heads off a known mislabeling failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the use case and the return type before the caveats, and every sentence carries operational content. Slightly long, with the layout-vs-photo distinction restated twice, though that repetition targets a high-risk error.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values need no prose, and the description still covers the image payload, the missing-chart edge case, the fallback path via get_ticket_listings, and auth requirements. An agent has everything needed to call it and interpret an empty result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and the schema already documents it at 100% coverage including where the event_id comes from (search_market, search_events, get_event_details). The description adds no further parameter semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns the venue seating chart as an image') and immediately bounds it against the most likely confusion: it is a layout, not a seat-view photo. It is clearly separable from siblings like get_venue_details and get_ticket_listings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete triggering utterances ('where is 104', 'show me the map', 'is that behind the stage') plus an explicit when-not (not a photograph of the view) and names get_ticket_listings as the fallback source of section/row detail. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_standing_bidStanding Offer DetailA
Read-only
Inspect

Use when the user asks about one specific standing offer on the XP marketplace -- whether it filled, how much of it is left, or 'did that offer get my tickets'. Returns the offer at any status along with the fills it has taken, so it answers for filled and rescinded offers that list_my_standing_bids does not show. Requires auth.

NameRequiredDescriptionDefault
standing_bid_idYesStanding offer id from list_my_standing_bids or create_standing_bid.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine value beyond that: it returns offers at any status including filled and rescinded, includes the fills taken, and requires auth. It doesn't add anything about pagination or result size, but the status-spanning behavior is a real disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the trigger and example queries, then the differentiating capability and the auth requirement. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema covering return values, a one-param schema at full coverage, and read-only annotations, the description supplies everything else an agent needs: when to call it, what statuses it spans, and that auth is required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single standing_bid_id parameter, and the schema itself documents where the id comes from (list_my_standing_bids or create_standing_bid). The description adds no syntax or format detail beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('get one specific standing offer') and explicitly scopes it relative to the sibling list tool, noting it covers filled and rescinded offers that list_my_standing_bids omits. An agent can pick this over the sibling without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit trigger ('Use when the user asks about one specific standing offer') and gives concrete example questions ('did that offer get my tickets'), then names the alternative and the condition that selects this tool over it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ticket_listingsGet Ticket ListingsA
Read-only
Inspect

Use when the user wants to see ticket options and fee-inclusive prices for a specific XP event after search_events (e.g. 'cheap seats', 'parking for the game'). Pulls the live offer book of resale inventory. Do not use before an event has been resolved — call search_events or get_event_details first. Prices are dollars: each ticket row carries per_ticket_usd. error_code NO_INVENTORY means the event is real but has nothing listed right now: do not retry, give the user the event page or another date. NO_MATCHING_TICKETS means tickets exist but none fit the filters: widen or drop them. EVENT_NOT_FOUND means the event_id is wrong: resolve it again with search_events.

NameRequiredDescriptionDefault
tagsNoAlias for section_tags.
is_gaNoIf true, filter for general admission only.
limitNoMaximum ticket listings to return.
offsetNoPagination offset.
event_idNoEvent identifier from search_events or get_event_details. If omitted, the assistant should search/select an event first.
order_byNoPrice sort order.
quantityNoNumber of tickets requested.
sectionsNoAlias for section_ids.
api_limitNoBackend limit (advanced; usually omit).
section_idsNoSection IDs filter (list, comma-separated string, or numeric IDs; supports simple ranges like '100-110').
parking_onlyNoIf true, return only parking tickets.
section_tagsNoSection tags filter (e.g. 'Floor', '1xx').
max_price_usdNoMaximum all-in price per ticket in dollars.
min_price_usdNoMinimum all-in price per ticket in dollars.
max_cache_levelNoBackend cache level override (advanced; usually omit).
max_price_centsNoDeprecated, use max_price_usd. Integer cents.
min_price_centsNoDeprecated, use min_price_usd. Integer cents.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only/non-destructive profile, and the description adds substantial non-obvious behavior: prices are in dollars with a per-row `per_ticket_usd` field, and three named error codes are decoded into actions (NO_INVENTORY = do not retry, NO_MATCHING_TICKETS = widen filters, EVENT_NOT_FOUND = re-resolve the event). This is exactly the retry/routing context an agent cannot infer from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger condition, then behavior, then error semantics — a sensible priority order with no filler. It is on the long side and restates the dollar/pricing point that the schema also carries, which keeps it just below a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter read tool with full schema coverage, an output schema, and annotations, the description supplies the remaining pieces an agent needs: prerequisite ordering, price units, and error-driven recovery paths. Nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage the baseline is 3, but the description adds interpretive value: it clarifies that price filters and results are dollar-denominated all-in prices and that 'none fit the filters' should be handled by widening or dropping them. It does not cover other notable params (quantity default, sections vs section_ids aliasing, deprecated cents fields), so it falls short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('see ticket options and fee-inclusive prices'), names the prerequisite tool (`search_events`), and characterizes the data source as 'the live offer book of resale inventory'. This clearly separates it from `search_market`, `get_seat_map`, and `get_event_details` in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('after search_events', example user phrasings 'cheap seats', 'parking for the game') and an explicit exclusion ('Do not use before an event has been resolved — call search_events or get_event_details first'). It even routes follow-up decisions by error code, which is more than most definitions offer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_accountGet User AccountA
Read-only
Inspect

Pull the authenticated user's XP marketplace account card — profile, wallet, email, name, order history, and referral stats. Use when the user asks 'what have I bought from XP', 'my account', 'my tickets to past games', 'my orders', 'my referral link', or 'how much have I spent'. Returns the profile shown on the XP account page. Read-only; requires auth. Do not use for tickets currently delivered to the account; get_my_tickets is more direct.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so 'Read-only' partly repeats structured data. However, the description adds the auth requirement, which annotations do not convey, and clarifies the aggregate nature of the payload (account card combining profile, wallet, orders, referral stats).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource and its payload, then usage examples, then the exclusion. The six quoted example phrasings are somewhat repetitive, but each maps to a distinct sub-query and remains short overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return structure, and it still notes the payload mirrors the account page. It covers scope, auth, and the sibling boundary — nothing an agent needs to call it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies — there is nothing for the description to disambiguate at the parameter level.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (pull) plus resource (authenticated user's XP account card), and it enumerates the concrete contents — profile, wallet, email, name, order history, referral stats. It differentiates from the nearby get_my_orders and get_my_referral_kickbacks siblings by naming one alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives both when-to-use (user asks 'my account', 'my orders', 'my referral link') and an explicit when-not-to-use with the alternative named: tickets delivered to the account should use get_my_tickets instead. An agent can route without inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_venue_detailsGet Venue DetailsA
Read-only
Inspect

Pull full venue info from XP plus the upcoming-events calendar at that venue, with live pricing from the connected order book of resale inventory. Use after search_venues, or when the user asks 'what's coming up at the venue', 'what's playing at the Garden', 'shows at the venue this month'. Returns the upcoming-events feed so the agent can offer next-step get_ticket_listings calls. Do not use to fetch ticket inventory for a specific event; get_ticket_listings is the right tool for seat-level data.

NameRequiredDescriptionDefault
venue_idYesVenue identifier from search_venues.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read (readOnlyHint=true, destructiveHint=false, openWorldHint=false), and the description adds real value by disclosing that results are merged from three sources including a live order book, and that the feed is meant to tee up a follow-on `get_ticket_listings` call. It stops short of covering latency, pricing freshness, or how partial/empty venue data is handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause, followed by usage triggers, expected return, and exclusion — a sensible order. It runs slightly long, with the quoted example phrasings and the return-value sentence partially overlapping, but nothing is truly wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema covers return shape and annotations cover safety, so the description only needs selection guidance and scope — both are present, including the boundary against the sibling ticketing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter with 100% schema description coverage, which already says it is the 'Venue identifier from search_venues.' The description reinforces the search_venues provenance but adds no format or edge-case guidance beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and composite resource: full venue info from XP, the upcoming-events calendar, and live resale pricing from the connected order book. It clearly separates itself from get_ticket_listings and get_event_details, so an agent can pick it without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the preceding step (after `search_venues`), concrete trigger phrasings ('what's coming up at the venue', 'shows at the venue this month'), and an explicit exclusion: do not use for a specific event's seat-level inventory — use `get_ticket_listings` instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_muted_listingsList Muted ListingsA
Read-only
Inspect

Use when the user asks what they have hidden or muted on the XP marketplace, or before muting so you do not tell them you muted something that was already muted. Returns the listing identifiers this user has muted. Muting is per-user and never touches the listing itself. It hides the listing on xp.tickets; list_open_listings and get_market_read do NOT filter muted listings, so read this list before showing the user listings to make an offer on. Requires auth.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/destructive=false/closed-world), it discloses meaningful behavior: muting is per-user and never touches the listing itself, it hides the listing only on xp.tickets, and sibling read tools do NOT filter muted listings. It also notes auth is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the trigger condition, then behavior, then the operational warning. Dense but every sentence carries new information; only minor trimming is possible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be detailed, and the description still summarizes them. For a zero-arg, annotated, output-schema-backed tool, nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so there is nothing for the description to clarify and the baseline is 4. The description correctly adds no filler about inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns the listing identifiers this user has muted') and names the sibling tools it relates to (list_open_listings, get_market_read), so an agent can distinguish it from the many list_* siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use: when the user asks what they have hidden/muted, and crucially before muting (to avoid duplicate-mute claims). It also warns to read this list before showing listings for offers, naming the exact alternative tools that fail to filter muted items.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_my_favoritesList My FavoritesA
Read-only
Inspect

Use when an authenticated user wants the performers they've favorited on the XP marketplace (e.g. 'show my favorites going to a game this weekend', 'who am I following on near me events?'). Read-only; requires auth and read:account scope. Pair with search_events to find tickets to favorite performers on the connected order book. Paged: returns 25 by default, up to 200 with limit, and offset to continue. Some accounts follow thousands of performers, so when pagination.has_more is set say the user is seeing a page rather than everyone they follow.

NameRequiredDescriptionDefault
limitNoHow many favorites to return, 1-200. Defaults to 25.
offsetNoSkip this many. Use with limit to page.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds genuinely new behavioral context: the read:account scope requirement, default/limit pagination bounds, and the edge case that some accounts follow thousands of performers so pagination.has_more should be surfaced to users.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the trigger condition, then auth/scope, then sibling pairing, then pagination behavior. Every sentence carries a distinct operational instruction with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema is present so return values need no explanation, yet the description still references pagination.has_more to tell the agent how to interpret and phrase results. Nothing needed to call or report this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both limit and offset are already documented in the schema. The description restates the same 25/200/offset facts without adding syntax or constraint detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('list the performers they've favorited') plus the marketplace scope, which cleanly separates it from siblings like list_my_listings, list_my_standing_bids, and search_performers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with 'Use when an authenticated user wants...' and supplies concrete trigger utterances, the auth/read:account prerequisite, and an explicit pairing with search_events for the follow-on ticket lookup. An agent knows exactly when to pick this over search_performers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_my_listingsList My ListingsA
Read-only
Inspect

Paged: a large book comes back one page per lifecycle category, and the result carries pagination totals per category. When has_more is set, say so -- never present a page as the whole book -- and either page on with offset or narrow with state_category. From XP's connected resale order book. Use when an authenticated seller wants to see their listings on the XP marketplace bucketed by lifecycle (e.g. 'show my tickets I'm selling', 'what's open in my seller queue'). Surfaces seller-side categories that gate next steps in the live offer book. Requires auth and read:bids scope. Seller-facing: these are your own listings. A buyer browsing what's for sale uses list_open_listings; a plain buy-now uses search_events and get_ticket_listings.

NameRequiredDescriptionDefault
limitNoListings per state category, 1-200. Defaults to 25.
offsetNoSkip this many within each category. Use with limit to page.
state_categoryNoOptional: active, pending, has_open_bids, awaiting_seller_transfer_proof, needs_user_attention, ready_to_claim, rejected_bids, terminal.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as a safe, read-only, closed-world operation, so the description appropriately focuses on non-annotation traits. It adds the auth and read:bids scope requirement, explains that a 'large book' returns one page per lifecycle category with per-category pagination totals, and warns never to present a partial page as the whole set.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the pagination behavior and then moves to usage and alternatives, with no wasted sections. The 'large book' metaphor and some dense phrasing make it slightly less crisp than ideal, but every sentence carries actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists and annotations cover safety, the description is complete enough to call correctly: it covers ownership scope, auth, pagination behavior, category bucketing, and the correct sibling alternatives. Nothing material for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds useful operational semantics beyond the schema by explaining how offset and state_category are intended to be used for paging or narrowing results, though it does not restate the per-category limit semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: list an authenticated seller's own XP marketplace listings, bucketed by lifecycle category. It explicitly distinguishes this from buyer-facing siblings like list_open_listings, search_events, and get_ticket_listings, so an agent can choose correctly without opening another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete when-to-use examples ('show my tickets I'm selling', 'what's open in my seller queue') and names the alternatives for buyer browsing and buy-now flows. It also tells the agent what to do when has_more is set: disclose the partial page and either page with offset or narrow with state_category.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_my_standing_bidsMy Standing OffersA
Read-only
Inspect

Use when the user asks what offers they have resting on the XP marketplace, what they are waiting on, or before they make an offer so you do not stack a duplicate. A standing offer buys at the user's price whenever a matching fan listing appears, without them watching for it. Live offers only -- filled ones have become tickets (get_my_tickets) and rescinded ones are history; both stay reachable by id through get_standing_bid. Requires auth.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds value beyond that: it discloses the auth requirement, that the result set is filtered to live offers, and where the excluded states (filled, rescinded) have gone — genuinely useful behavioral context for interpreting the output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the usage trigger, followed by the concept definition and the live-only scoping rule. No filler and no restatement of the tool name; each sentence carries a distinct fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is unnecessary and the description rightly omits it. Combined with the auth note, the live-only scoping, and the sibling routing for excluded offers, an agent has everything needed to call this correctly on the first attempt.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, the baseline is 4. There is nothing further to document, and the description correctly does not invent parameter guidance; it instead spends its words on scope and routing, which is the right allocation for a no-arg tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (standing offers on the XP marketplace) and explains the concept in plain terms: 'A standing offer buys at the user's price whenever a matching fan listing appears.' It explicitly scopes the listing to live offers only and names the sibling that retrieves historical ones, so an agent can distinguish it from get_standing_bid and get_my_tickets without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit triggers ('when the user asks what offers they have resting... or before they make an offer so you do not stack a duplicate') and names the alternatives for the non-live cases: filled offers are reachable via get_my_tickets and rescinded ones via get_standing_bid. When-to-use, when-not-to-use, and alternatives are all present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_open_listingsList Open ListingsA
Read-only
Inspect

From XP's connected order book of resale listings. Use when a buyer wants to browse fan listings open to offers on XP (e.g. 'what's open near me this weekend', 'open listings with active offers'), then make an offer with make_offer_on_listing or buy one outright with buy_listing_now. Filterable by event, performer, and amount. Requires auth and read:bids scope. This is the offer/negotiation surface -- for a plain buy-now at the asking price without an offer, use search_events and get_ticket_listings instead.

NameRequiredDescriptionDefault
daysNoOnly include offers created within this many days.
limitNoMax offers to return after fetch.
sort_byNoSort field: created_at, event_date, amount, state, updated_at.created_at
performerNoFilter by performer name substring.
event_nameNoFilter by event title substring.
max_amountNoDeprecated, use max_amount_usd. Micro-USDC (50_000_000 = $50.00).
min_amountNoDeprecated, use min_amount_usd. Micro-USDC (50_000_000 = $50.00).
sort_orderNoSort direction.desc
max_amount_usdNoMaximum total for the whole listing in dollars (all its tickets together), not per ticket.
min_amount_usdNoMinimum total for the whole listing in dollars (all its tickets together), not per ticket.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and closed-world, so the safety profile is covered. The description adds genuinely new behavioral context: auth plus the read:bids scope requirement, and the fact that results flow into an offer-negotiation workflow. It says nothing about result volume or truncation behavior, but the output schema covers the return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, then usage examples, downstream tools, filters, auth, and the negative routing — roughly the right order with no filler. It is dense (five clauses in one block) but every sentence carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 10 optional parameters, full schema coverage, an output schema and read-only annotations, the description supplies what structure cannot: auth scope, workflow position, and sibling routing. The only gaps are edge behavior around limits and the deprecated amount fields, which are minor given the schema carries them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all 10 parameters are documented structurally, which sets the baseline at 3. The description only restates the filterable dimensions at a high level ('event, performer, and amount') and adds no syntax or format detail. It also doesn't clarify the odd mismatch where the schema's `days` and `limit` descriptions talk about offers rather than listings, nor does it mention the deprecated min_amount/max_amount fields — though the schema itself flags both.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('list resale listings from XP's connected order book') and immediately names the surface as the offer/negotiation one, distinguishing it from the buy-now siblings. An agent can tell this apart from get_ticket_listings or search_events 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete triggering examples ('what's open near me this weekend'), names both downstream actions (make_offer_on_listing, buy_listing_now), and explicitly states when NOT to use it: for a plain buy-now at asking price, use search_events and get_ticket_listings. That is a full when/when-not/alternatives statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

make_offer_on_listingMake Offer on ListingA
Destructive
Inspect

From XP's connected resale order book. Two-phase write on the XP live offer book. Use when the user wants to make an offer on an open XP listing (e.g. 'make an offer of $50 on this'). Call with confirm=False first to preview the fee-inclusive total (no bid placed); call with confirm=True only after the user explicitly approves the previewed amount. Only confirm=True submissions return success=true. Do not use without the two-phase preview-then-confirm flow. Requires auth and write:bids scope. Do not use for browse / discovery; this is a marketplace transaction tool that places real money at risk. For standard buy-now ticket purchases without a bid, use search_events and get_ticket_listings.

NameRequiredDescriptionDefault
confirmNoDefaults to false, a preview of the computed total. Set true to place the offer once the user agrees.
amount_centsNoDeprecated, use amount_per_ticket_usd. Integer cents per ticket, multiple of 100.
listing_identifierYesPublic listing identifier from list_open_listings.
amount_per_ticket_usdNoWhole dollars per ticket (50 = $50.00), the same unit create_standing_bid takes. Cents are not accepted: XP rejects fractional-dollar bids. Preview returns the total.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the destructiveHint=true annotation: it discloses that confirm=False places no bid, that only confirm=True returns success=true, that the tool requires auth plus write:bids scope, and that real money is at risk. This is precisely the extra context annotations cannot express for a destructive write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: source, then the two-phase rule, then guardrails, then alternatives. It is a single long paragraph and the security/scoping sentences could be trimmed, but nearly every sentence carries actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive money-moving write with an output schema present, the description covers the flow, the preview semantics, auth scope, and sibling routing. Nothing an agent needs to invoke it safely is missing, and return values are left to the output schema as expected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage the baseline is 3, and the description adds real meaning: the confirm flag's two-phase contract, the deprecation of amount_cents, and the unit rule that whole dollars are required and fractional-dollar bids are rejected. It does not elaborate on listing_identifier's provenance beyond pointing at list_open_listings, which the schema already covers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('two-phase write on the XP live offer book' / 'make an offer on an open XP listing') and distinguishes it from browse/discovery and buy-now siblings. An agent can tell immediately this is the bid-placement tool, not a listing lookup or purchase.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('user wants to make an offer on an open XP listing'), when-not ('do not use for browse / discovery'), and named alternatives ('for standard buy-now ticket purchases... use search_events and get_ticket_listings'). It also mandates the preview-then-confirm sequencing rather than leaving it to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mute_listingMute ListingAInspect

Use when the user says they are not interested in a listing on the XP marketplace, wants to stop seeing it, or wants a muted one back -- e.g. 'hide this one', 'stop showing me that', 'unmute that listing', or after deciding not to make an offer on it. Muting affects only this user's view of the live offer book. It does not close the listing, withdraw an offer, or change anything for the seller or other buyers. Sets the state you pass rather than toggling, so repeating a call is safe. Requires auth.

NameRequiredDescriptionDefault
mutedNoTrue to mute (hide it from the user's marketplace feed), False to unmute.
listing_identifierYesListing identifier from list_open_listings or get_open_listing.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing idempotency ('sets the state you pass rather than toggling, so repeating a call is safe'), scope of effect (only this user's view, nothing changes for seller/other buyers), and the auth requirement. This is exactly the extra context annotations don't carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the when-to-use triggers before the behavioral caveats, which is the right order. It is dense but each clause carries information; the enumeration of example phrases is a touch long for the marginal benefit.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the description fully covers scope, safety, idempotency, and auth. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the schema already documents both params; the description still adds value by explaining the state-set semantics of 'muted' and the unmute direction. Slightly above the baseline given the semantic clarification.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (mute/unmute a listing) and clearly bounds the effect to the user's own view of the live offer book. An agent can distinguish it from siblings like make_offer_on_listing or cancel_my_listing 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit trigger phrases ('hide this one', 'stop showing me that', 'unmute that listing') and a scenario ('after deciding not to make an offer'). It also disambiguates the mute vs unmute direction, leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reject_offerReject OfferA
Destructive
Inspect

From XP's connected resale order book. Two-phase write on the XP live offer book. Use when an authenticated seller wants to reject a specific bid on their tickets to a listing (e.g. 'reject the lowball offer on my tickets'). Call with confirm=False first to preview which offer will be rejected; call with confirm=True only after the user explicitly approves. Do not use without the two-phase preview-then-confirm flow. Only confirm=True submissions return success=true. Requires auth and write:listings scope. Seller-facing: you are rejecting a buyer's offer on your own listing.

NameRequiredDescriptionDefault
confirmYesRequired. True to reject the offer; False to preview without rejecting.
identifierYesPublic listing identifier from list_my_listings or get_my_listing_status.
offer_uuidYesOffer UUID from get_my_listing_status open_offers.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and readOnlyHint=false, and the description adds substantially more: the two-phase confirm gate, the fact that only confirm=True returns success=true, the required auth + write:listings scope, and who the actor is (seller rejecting a buyer's offer on their own listing). That is exactly the extra context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the source system and the two-phase rule before the supporting details. It is somewhat dense and the repeated 'two-phase' phrasing plus the final seller-facing sentence are slightly redundant, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values need not be explained. For a destructive, auth-gated, three-required-parameter mutation, the description covers trigger, safety protocol, permissions, and actor role — an agent has everything needed to call it correctly and safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by tying confirm=False to a preview and confirm=True to an actual reject that is the only path to success=true, and by positioning offer_uuid/identifier in the seller's listing context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (reject) on a specific resource (a buyer's offer/bid on the seller's own listing), plus the underlying system ('XP live offer book'). It is trivially distinguishable from the sibling accept_offer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use trigger (authenticated seller rejecting a bid, with the 'reject the lowball offer' example) and a hard when-not/procedural rule: never call without the two-phase preview-then-confirm flow. The preview/confirm sequencing is spelled out step by step.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rescind_standing_bidRescind Standing OfferA
Destructive
Inspect

Use when the user no longer wants a standing offer resting on the XP marketplace -- 'cancel that standing offer', 'stop waiting on those', or they would rather make an offer on something open instead. Closes it to new fills. Fills it already took are completed purchases and are not undone. Two-phase: confirm=false previews, confirm=true commits. Requires auth.

NameRequiredDescriptionDefault
confirmNoFalse (default) previews. True closes the offer to new fills.
standing_bid_idYesStanding offer id from list_my_standing_bids.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructive=true/readOnly=false, and the description goes well beyond them: it states that existing fills are completed purchases and are not undone, discloses the two-phase confirm=false preview vs confirm=true commit behavior, and notes auth is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the usage trigger, then effect, then irreversibility, then the phase model and auth requirement. Every sentence carries distinct operational information with no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Coverage is complete for a two-param mutation: trigger, effect, reversibility limits, confirmation protocol, and auth need are all stated, and an output schema exists so return values need not be described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema, including the confirm preview/commit semantics. The description largely restates the two-phase behavior rather than adding new parameter meaning, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb+resource ('rescind' a 'standing offer') and immediately bounds the effect ('closes it to new fills'). It also points to the alternative path when the user instead wants to bid on something open, which separates it from the make_offer/cancel_my_offer family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit trigger conditions are given via user phrasings ('cancel that standing offer', 'stop waiting on those') plus the routing rule to an open-listing offer when that is the real intent. This is unambiguous when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_eventsSearch EventsA
Read-only
Inspect

Catalog search for discovery: find live events on XP -- concerts, sports, theater -- by performer, team, venue, city, or keyword (e.g. 'shows near me this weekend', 'Taylor Swift tour dates'). Returns event cards from the XP catalog with a fee-inclusive price preview, for browsing and navigation. When the question is what an event is trading at -- the marketplace get-in price and whether fans are selling into it -- use search_market instead. To look up a performer or venue by name on its own, use search_performers or search_venues. Not for scores, news, standings, or non-ticketed listings.

NameRequiredDescriptionDefault
cbsaNoMetro area filter (synonyms: city, near me, area). ISO US CBSA code or name.
genreNoGenre filter.
limitNoMaximum number of events to return.
queryYesNatural language event search query.
max_dateNoFilter events on or before this date (YYYY-MM-DD). For relative phrases like 'this weekend' or 'next month', resolve against _meta.context.today.
min_dateNoFilter events on or after this date (YYYY-MM-DD). For relative phrases like 'this weekend' or 'next month', resolve against _meta.context.today.
include_scoresNoInclude similarity scores for debugging.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered; the description adds what comes back ('event cards from the XP catalog with a fee-inclusive price preview') and its intended purpose ('browsing and navigation'). It doesn't discuss result limits, pagination, or empty-result behavior, but those are partly covered by the output schema and the limit parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, zero waste, and front-loaded: what it does, what it returns, then alternatives and exclusions. Every sentence carries a distinct routing or scoping fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only catalog search with an output schema, full parameter documentation, and clear sibling boundaries, the description supplies everything an agent needs to select and invoke it correctly, plus explicit negative scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description earns extra credit by illustrating the natural-language query semantics with concrete examples ('shows near me this weekend', 'Taylor Swift tour dates') and listing the entity dimensions the query can target. It adds interpretation guidance the schema's one-line query description does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Catalog search ... find live events on XP') and names the concrete entity types (concerts, sports, theater) and search keys (performer, team, venue, city, keyword). It explicitly distinguishes itself from search_market, search_performers, and search_venues, so an agent can route 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('discovery: find live events'), when to switch ('what an event is trading at ... use search_market'; 'look up a performer or venue by name ... use search_performers or search_venues'), and hard exclusions ('Not for scores, news, standings, or non-ticketed listings'). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_marketSearch the MarketA
Read-only
Inspect

The live market read for an event: per event, the fee-inclusive marketplace get-in price and whether fans are currently selling into it (how many open listings). Reach for this, not search_events, whenever price is the question or the user might make an offer rather than pay the asking price (e.g. 'tickets to the season opener', 'cheap seats near me'). It tells you an event has open fan listings worth an offer; for the listings themselves use list_open_listings. For plain discovery with no price read -- just finding the event, performer, or venue -- use search_events instead. Do not use for scores, news, or standings.

NameRequiredDescriptionDefault
cbsaNoMetro area filter (synonyms: city, near me, area).
genreNoGenre filter.
limitNoMaximum number of events to return.
queryYesNatural language event search query.
max_dateNoFilter events on or before this date (YYYY-MM-DD). For relative phrases like 'next month', resolve against _meta.context.today.
min_dateNoFilter events on or after this date (YYYY-MM-DD). For relative phrases like 'this weekend', resolve against _meta.context.today.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, non-destructive, closed-world safety, and an output schema exists, so the description isn't carrying the safety burden. It still adds real behavioral context beyond the annotations: that prices are fee-inclusive get-in prices, that open-listing counts signal offer viability, and that the read is 'live' rather than cached.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what the tool returns, then routing, then exclusions — a sensible information order with no filler sentences. It runs slightly long because the sibling routing is repeated across three sentences (search_events twice, list_open_listings once), which costs a bit of tightness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with a full output schema, the description supplies everything an agent needs to select it correctly: scope, price semantics, sibling routing, and exclusions. Return-format explanation is exempt thanks to the output schema, so nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all six parameters including date filters and cbsa synonyms are already documented; that sets the baseline at 3. The description adds only indirect guidance via example queries ('cheap seats near me', 'season opener'), which hint at natural-language query phrasing but add nothing about date resolution or limit behavior beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('live market read for an event') plus the exact payload: fee-inclusive get-in price and count of open fan listings. It explicitly contrasts itself with search_events and points to list_open_listings for the listing-level view, so an agent can place it among siblings without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit positive trigger ('whenever price is the question or the user might make an offer rather than pay the asking price') with concrete example phrasings, plus explicit negative routing: search_events for plain discovery, list_open_listings for the listings themselves, and a hard exclusion for scores/news/standings. Both the when and the when-not are named, with alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_performersSearch PerformersA
Read-only
Inspect

Find a performer (artist, team, comedian) on the XP marketplace by name. Use when the user names a specific performer (e.g. 'tickets to Taylor Swift', 'Lakers season opener', 'Phish tour dates'). Returns performer cards from the XP catalog — not events. Pair with search_events once a performer is selected to surface their upcoming events on the connected order book. Do not use for general 'events near me' queries; search_events handles those better.

NameRequiredDescriptionDefault
genreNoOptional genre filter.
limitNoMax performers to return.
queryYesNatural language performer search query.
sportNoOptional sport filter (NBA, NFL, etc.).
include_scoreNoInclude similarity scores for debugging.
min_similarityNoMinimum similarity score for the semantic match.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety and world-scope are covered; the description usefully adds that results are catalog performer cards rather than event listings, plus the two-step pairing workflow. However it says nothing about result ordering, pagination, or what happens when no match clears min_similarity, so it adds only moderate value beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, each doing distinct work: what it does, when to use it with examples, what it returns and how it chains, and when not to use it. Purpose is front-loaded and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained, yet the description still contributes the key distinction (performer cards, not events) and the chaining workflow with search_events. For a six-parameter read-only search with full schema coverage, nothing an agent needs to select or call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (all six parameters, including query, genre, sport, limit, min_similarity, include_score, are described in-schema), so the baseline applies. The description's phrase 'by name' loosely orients the query parameter but adds no format, syntax, or filter-combination guidance beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb + resource + scope: 'Find a performer (artist, team, comedian) on the XP marketplace by name.' It also explicitly disambiguates the output ('Returns performer cards from the XP catalog — not events'), which distinguishes it from search_events and search_venues without the agent needing to open a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit trigger conditions with examples ('tickets to Taylor Swift', 'Lakers season opener'), an explicit exclusion ('Do not use for general events near me queries'), and names the alternative sibling search_events for both the exclusion case and the follow-on case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_venuesSearch VenuesA
Read-only
Inspect

Use when the user wants to find a venue by name, city, or area on XP (e.g. 'venues near me', 'arenas in Brooklyn', 'what's at the venue level downtown'). Returns venue records from the XP marketplace catalog — not tickets. Do not use to answer ticket-price questions once the event is known; call get_ticket_listings instead.

NameRequiredDescriptionDefault
cityNoOptional city filter (synonyms: near me, area).
limitNoMaximum venues to return.
metroNoOptional metro area filter (synonyms: city, near me, area).
queryYesVenue name or search term.
stateNoOptional state abbreviation (e.g. NY, CA).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered by structured data. The description adds real value beyond that by defining what the result set is (catalog venue records, not tickets) and what it is not for, which prevents the most likely misuse. It says nothing about pagination or result volume beyond the schema's limit field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the usage trigger, followed by output scope and then the exclusion. No filler and nothing repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return-value detail is not needed, and the description covers source, scope, and the key sibling routing. The one gap is that get_venue_details, which an agent would call after finding a venue, is never referenced despite both tools being in the sibling set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including synonym hints for city/metro and state format, so the schema carries parameter meaning. The description only echoes the query dimensions (name, city, area) without adding filtering semantics such as how city and metro interact. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("find a venue by name, city, or area") and pins the scope ("venue records from the XP marketplace catalog — not tickets"). It explicitly separates itself from get_ticket_listings, so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete trigger utterances ("venues near me", "arenas in Brooklyn") plus an explicit negative case: do not use for ticket prices once the event is known, call get_ticket_listings instead. Both the when and the when-not are named with an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_discovered_sourcesSuggest Resale SourcesAInspect

Suggest new groups, subreddits or searches where people sell tickets.

Public ones go live for every node at once, unless an admin has switched off auto-approval for your node (then they wait for review). Private ones are read only by nodes linked to them. Returns inserted_count, duplicate_count (already listed) and rejected [{index, reason}].

NameRequiredDescriptionDefault
sourcesYesUp to 20. Each: platform (facebook|x|reddit), source_kind (group|subreddit|search_query), name, target (group/subreddit URL or search text), access_type (public|private_membership_required), and optionally source_category, geo_metro, estimated_member_count, sample_post_url (a recent post selling tickets).
agent_nameNoThis agent's name, unique among your agents, e.g. 'grok-chicago-1'. Each name is tracked separately.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations (which only flag it as a non-destructive write) by disclosing the approval workflow: public sources go live immediately unless an admin disabled auto-approval (then they wait for review), and private ones are only readable by linked nodes. It also names the return fields and the rejected-with-reasons behavior. This is rich, non-obvious behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: purpose first, then approval/visibility behavior, then return shape. Every sentence carries information and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, full input schema coverage, and annotations declaring the mutation profile, the description supplies exactly the missing behavioral context (approval flow, node visibility) an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents the sources array structure and agent_name semantics in detail. The description adds no parameter-level detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (suggest) and resource (groups/subreddits/searches where people sell tickets) that clarifies the tool's output well beyond the name. However, it does not distinguish this from nearby siblings like add_my_sources or submit_seller_leads, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'suggest new groups,' but there is no explicit guidance on when to use this versus add_my_sources or submit_seller_leads, nor any stated prerequisites. The agent can guess, but the choice among similar-sounding tools is not made clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_seller_leadsSubmit Seller LeadsAInspect

Submit what you read for one listening job. Call once per assignment, even with no posts.

Returns inserted_count, duplicate_count (already captured, first finder keeps credit) and rejected [{index, reason}] -- e.g. stale_post (older than 72h), raw_text_too_short, post_url_not_canonical, platform_mismatch. Do not resubmit rejected posts unchanged.

NameRequiredDescriptionDefault
leadsNoUp to 50 posts. Each: post_url (canonical post link), author_username, posted_at (ISO-8601), raw_text (the post copied word for word, 20+ chars), intent_type (sell|buy|trade|noise), item_category (tickets|sublet|merch|other), and when known: matched_event_id (from search_events), match_confidence (0-1), performer, venue, city_state, event_date (YYYY-MM-DD), quantity, section, row, seats, asking_price_dollars, price_basis (per_ticket|total), author_profile_url.
assignment_idYesThe assignment_id from get_listening_assignment.
could_not_readNoTrue when you could not open the source (login wall, blocked site, gone). Send no leads. The job is not counted as a scan, and this agent is not given that source again for an hour.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare it is a non-destructive write; the description adds genuinely new behavior: dedup with first-finder credit, rejection with index/reason, a 72h staleness window, and canonical URL requirements. Some of this overlaps the output schema's rejected array, but the credit and resubmission semantics are not in structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with the core instruction front-loaded, then return shape, then the one prohibition. No filler; every clause carries a rule an agent must obey.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values need not be spelled out, and the description still summarizes them usefully. What is missing is the failure/retry path for assignment_id mismatch or oversized lead batches, though both are partially covered by the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents leads, assignment_id, and could_not_read in detail, so the baseline is 3. The description adds only the implicit 'empty leads is valid' case and does not clarify field-level semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Submit what you read for one listening job') and names the counterpart tool by implication via assignment_id, distinguishing it from read-side siblings like get_listening_assignment. An agent immediately knows this is the write-back step of the listening workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Call once per assignment, even with no posts' and 'Do not resubmit rejected posts unchanged', which are real usage rules an agent would otherwise get wrong. It does not explicitly contrast with submit_discovered_sources or say what to do between assignments, so it falls short of full when/when-not 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.

  1. 3 tool updates
    • Changedget_listening_assignment2 fields changed
      • addedInput schema / properties / can_read
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "What this agent can open, as platform:source_kind: facebook:group, x:search_query, reddit:subreddit. Add :private (facebook:group:private) when signed in as a member, to also get member-only groups. Declare it on your first call; it is kept for this agent_name, so omit it after that unless it changes. Never declared = every source; pass [] to go back to every source."
        +}
      • changedInput schema / properties / preferred_platforms / description
        Previous value: -"Optional platforms to prefer: facebook, x, reddit."New value: +"Only these platforms for this call: facebook, x, reddit. Not kept."
    • Changedlist_open_listings1 field changed
      • removedInput schema / properties / sell_to_xp
        Removed value: -{
        -  "default": true,
        -  "description": "If true, only offers where sell_to_xp is true.",
        -  "type": "boolean"
        -}
    • Changedsubmit_seller_leads6 fields changed
      • addedInput schema / properties / could_not_read
        Added value: +{
        +  "default": false,
        +  "description": "True when you could not open the source (login wall, blocked site, gone). Send no leads. The job is not counted as a scan, and this agent is not given that source again for an hour.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / leads / anyOf
        Added value: +[
        +  {
        +    "items": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / leads / default
        Added value: +null
      • removedInput schema / properties / leads / items
        Removed value: -{
        -  "additionalProperties": true,
        -  "type": "object"
        -}
      • removedInput schema / properties / leads / type
        Removed value: -"array"
      • changedInput schema / required
        Previous value: -[
        -  "assignment_id",
        -  "leads"
        -]New value: +[
        +  "assignment_id"
        +]
  2. 5 tool updates
    • Addedadd_my_sources
    • Addedget_discovery_plan
    • Addedget_listening_assignment
    • Addedsubmit_discovered_sources
    • Addedsubmit_seller_leads
  3. 1 tool update
    • Removedget_my_referral_kickbacks
  4. 2 tool updates
    • Changedbuy_listing_now2 fields changed
      • addedInput schema / properties / ask_per_ticket_usd
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "The per-ticket price the preview showed (its ask_per_ticket_usd). Required with confirm=true: the purchase is refused if the seller has changed the ask since, so the buyer never pays a price they did not see."
        +}
      • changedInput schema / properties / confirm / description
        Previous value: -"False (default) previews. True buys at the seller's ask as it stands at confirm time."New value: +"False (default) previews. True buys at ask_per_ticket_usd, the price the preview showed."
    • Changedmake_offer_on_listing1 field changed
      • removedInput schema / properties / idempotency_key
        Removed value: -{
        -  "description": "Optional client-generated UUID to prevent duplicate bids on retry.",
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
  5. 5 tool updates
    • Changedcreate_listing7 fields changed
      • removedInput schema / properties / is_ada / default
        Removed value: -false
      • changedInput schema / properties / is_ada / description
        Previous value: -"True for accessible seating."New value: +"Required. True if accessible (ADA) seating. Ask the seller; never assume."
      • removedInput schema / properties / is_obstructed_view / default
        Removed value: -false
      • changedInput schema / properties / is_obstructed_view / description
        Previous value: -"True if the view is obstructed."New value: +"Required. True if the view is obstructed. Ask the seller; never assume."
      • removedInput schema / properties / is_sro / default
        Removed value: -false
      • changedInput schema / properties / is_sro / description
        Previous value: -"True for standing room only."New value: +"Required. True if standing room only. Ask the seller; never assume."
      • changedInput schema / required
        Previous value: -[
        -  "event_id",
        -  "quantity"
        -]New value: +[
        +  "event_id",
        +  "quantity",
        +  "is_ada",
        +  "is_obstructed_view",
        +  "is_sro"
        +]
    • Changedget_my_listing_status1 field changed
      • changedInput schema / properties / identifier / description
        Previous value: -"Public listing identifier from list_open_listings or list_my_listings."New value: +"Public listing identifier from create_listing (listing_identifier), list_open_listings or list_my_listings."
    • Changedget_ticket_listings4 fields changed
      • changedInput schema / properties / max_price_cents / description
        Previous value: -"Maximum ticket price. Integer cents (20000 = $200.00)."New value: +"Deprecated, use max_price_usd. Integer cents."
      • addedInput schema / properties / max_price_usd
        Added value: +{
        +  "description": "Maximum all-in price per ticket in dollars.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedInput schema / properties / min_price_cents / description
        Previous value: -"Minimum ticket price. Integer cents (5000 = $50.00)."New value: +"Deprecated, use min_price_usd. Integer cents."
      • addedInput schema / properties / min_price_usd
        Added value: +{
        +  "description": "Minimum all-in price per ticket in dollars.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
    • Changedlist_open_listings4 fields changed
      • changedInput schema / properties / max_amount / description
        Previous value: -"Maximum listing amount in USDC 6-decimal raw units (50_000_000 = $50.00 USDC). Multiply dollars by 1_000_000."New value: +"Deprecated, use max_amount_usd. Micro-USDC (50_000_000 = $50.00)."
      • addedInput schema / properties / max_amount_usd
        Added value: +{
        +  "description": "Maximum total for the whole listing in dollars (all its tickets together), not per ticket.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedInput schema / properties / min_amount / description
        Previous value: -"Minimum listing amount in USDC 6-decimal raw units (50_000_000 = $50.00 USDC). Multiply dollars by 1_000_000."New value: +"Deprecated, use min_amount_usd. Micro-USDC (50_000_000 = $50.00)."
      • addedInput schema / properties / min_amount_usd
        Added value: +{
        +  "description": "Minimum total for the whole listing in dollars (all its tickets together), not per ticket.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
    • Changedmake_offer_on_listing6 fields changed
      • changedInput schema / properties / amount_cents / description
        Previous value: -"Offer amount per ticket in integer cents (5000 = $50.00). Server multiplies by quantity then converts to USDC 6-decimal raw before submitting; preview returns the fee-inclusive total."New value: +"Deprecated, use amount_per_ticket_usd. Integer cents per ticket, multiple of 100."
      • changedInput schema / properties / amount_cents / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • addedInput schema / properties / amount_per_ticket_usd
        Added value: +{
        +  "description": "Whole dollars per ticket (50 = $50.00), the same unit create_standing_bid takes. Cents are not accepted: XP rejects fractional-dollar bids. Preview returns the total.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / confirm / default
        Added value: +false
      • changedInput schema / properties / confirm / description
        Previous value: -"Required. True to submit the offer; False to preview the computed total without placing the offer."New value: +"Defaults to false, a preview of the computed total. Set true to place the offer once the user agrees."
      • changedInput schema / required
        Previous value: -[
        -  "listing_identifier",
        -  "amount_cents",
        -  "confirm"
        -]New value: +[
        +  "listing_identifier"
        +]
  6. 40 tool updates
    • First observedaccept_offer
    • First observedauth_status
    • First observedbuy_listing_now
    • First observedbuy_tickets
    • First observedcancel_my_listing
    • First observedcancel_my_offer
    • First observedcheck_listing
    • First observedcreate_listing
    • First observedcreate_standing_bid
    • First observedget_event_details
    • First observedget_market_read
    • First observedget_my_bids
    • First observedget_my_context
    • First observedget_my_listing_status
    • First observedget_my_orders
    • First observedget_my_referral_kickbacks
    • First observedget_my_tickets
    • First observedget_my_wallet
    • First observedget_open_listing
    • First observedget_order_status
    • First observedget_price_history
    • First observedget_recent_sales
    • First observedget_seat_map
    • First observedget_standing_bid
    • First observedget_ticket_listings
    • First observedget_user_account
    • First observedget_venue_details
    • First observedlist_muted_listings
    • First observedlist_my_favorites
    • First observedlist_my_listings
    • First observedlist_my_standing_bids
    • First observedlist_open_listings
    • First observedmake_offer_on_listing
    • First observedmute_listing
    • First observedreject_offer
    • First observedrescind_standing_bid
    • First observedsearch_events
    • First observedsearch_market
    • First observedsearch_performers
    • First observedsearch_venues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Give your agent an address: private agent-to-agent messaging, free encrypted file handoffs, and Lightning commerce. Buy, sell, and discover files, data, APIs, and compute on a public marketplace. Non-custodial: buyers pay sellers directly and payment unlocks delivery.
    27
    137 npm
    MIT No Attribution
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to search, inspect, and purchase physical goods on an escrow-secured marketplace, including listing search, agent reputation checks, and offer creation.
    44
    779 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources