XP Tickets
Server Details
Live-event ticket exchange for agents: quote, buy, make offers, bid, and sell, with escrow.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Score is being calculated.
Available Tools
40 toolsaccept_offerAccept OfferADestructiveInspect
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 + primary 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. Do not use for casual ticket buyers; this is the seller-side and power-user marketplace surface. For standard ticket purchases, use search_events and get_ticket_listings.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Required. True to accept the offer; False to preview without accepting. | |
| identifier | Yes | Public listing identifier from list_my_listings or get_my_listing_status. | |
| offer_uuid | Yes | Offer UUID from get_my_listing_status open_offers. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint=true; the description adds far more, disclosing that acceptance is irreversible, that it starts a seller-transfer deadline set by XP per sale, that missing it can cancel the sale and forfeit payout, that only confirm=True returns success=true, and that auth plus write:listings scope is required. This is rich 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the deadline constraint in caps, but slightly over-long and mildly repetitive -- the deadline is restated ('per sale, not a fixed window -- do not quote a countdown') and the casual-buyer exclusion overlaps with the usage guidance. Still, every clause largely earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values needn't be explained, yet the description still notes the accept result carries the real deadline or says when XP hasn't set it. Combined with the destructive/irreversible profile, auth scope, and alternatives, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description meaningfully augments the confirm parameter by explaining the preview-vs-commit workflow ('confirm=False first to preview which offer will be accepted; confirm=True only after explicit approval'), which adds workflow meaning beyond the schema's terse wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('accepting sells to a buyer') and immediately clarifies the offer originates from a buyer on XP, not XP itself. It distinguishes itself from buy-side siblings (buy_tickets, buy_listing_now) and from reject_offer by framing the seller-side accept action explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('an authenticated seller wants to accept a specific bid on their listing'), when-not ('do not use for casual ticket buyers'), and names the alternatives (search_events, get_ticket_listings). It also prescribes the mandatory two-phase preview-then-confirm workflow with the exact confirm flag semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_statusAuth StatusARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive, but the description adds critical behavioral context: using it as a preflight swallows the 401 that would otherwise trigger OAuth. It also discloses the return shape at a high level (authenticated boolean, tier roles, wallet flag, never raw tokens), which is valuable for a zero-parameter auth tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The warning about not using this as a preflight is front-loaded and the remaining sentences each add necessary routing, behavioral, or return-value context. Nothing reads as filler, and the quoted examples make the usage condition concrete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter auth-status tool with rich annotations and an output schema, the description supplies exactly the missing operational context: when it is valid, when it is harmful, and what class of data it returns. An agent has enough information to invoke it correctly or avoid it appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to explain; the baseline for a zero-parameter tool is 4. The description correctly does not waste space documenting nonexistent inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description makes the tool's purpose unmistakable: checking whether the user is signed in to the XP marketplace and returning auth state. It also distinguishes this diagnostic/status tool from protected sibling tools, so an agent can tell it apart without inferring from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use conditions, quoted user intents, and a clear after-AUTH_REQUIRED re-check case. It also gives an equally explicit DO NOT preflight rule and explains the alternative: call the requested protected tool directly and let the client trigger OAuth on 401.
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 AskADestructiveInspect
From XP's connected resale + primary order book. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| rail | No | How to pay. 'usdc' spends the caller's XP USDC balance. | usdc |
| confirm | No | False (default) previews. True buys at the seller's ask as it stands at confirm time. | |
| identifier | Yes | Listing identifier from list_open_listings or get_open_listing. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far exceeds the annotations: it discloses the two-phase confirm=false preview vs confirm=true purchase, that a confirm completes the sale immediately, debits the caller's XP USDC balance, and commits the seller, plus that auth is required. This meaningfully enriches the destructiveHint=true annotation with concrete consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the source ('connected resale + primary order book'), then usage, constraints, the two-phase mechanic, and payment/auth. Dense but every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers origin, eligibility (ask required), the preview/purchase flow, payment source, auth requirement, and sibling alternatives. With an output schema present, no return-value detail is needed; nothing an agent requires to call it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents confirm, rail, and identifier. The description still adds value by clarifying that an ask must exist to use this flow, that confirm acts 'at the ask as it stands at confirm time', and that the rail is USDC-only for fan listings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (buy a fan listing at the seller's published asking price) and explicitly scopes it against siblings: negotiating (make_offer_on_listing) and the x402 rail used by buy_tickets. An agent can distinguish this from offer-based acquisition without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use ('buyer wants a listing outright at the ask, rather than negotiating'), a when-not/alternative ('for one without an ask, use make_offer_on_listing'), and names the sibling buy_tickets for the other payment rail. Routing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buy_ticketsBuy TicketsADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| rail | No | Payment 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 |
| uvid | Yes | Ticket group UVID from get_ticket_listings. | |
| confirm | No | Must be true to execute. False returns a preview only. | |
| event_id | Yes | Event identifier from search_events or get_event_details. | |
| quantity | Yes | Number of tickets to purchase. | |
| facilitator | No | rail='x402' only. Id from facilitators_available in the preview envelope; omit to use the deploy default. Pattern: ^[a-z][a-z0-9_]*$. | |
| payment_proof | No | Required only for rail='x402' when confirm=True. Base64-encoded x402 v2 PaymentPayload (SVM 'exact') containing a partially-signed Solana USDC TransferChecked transaction. | |
| payment_credential | No | rail='mpp' only. JSON MPP credential, as a fallback for clients that cannot send params._meta. Prefer _meta when available. | |
| checkout_session_id | No | rail='stripe_link' only, with confirm=true. The checkout_session_id returned by the preview. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 DownADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | False (default) previews. True takes the listing down. | |
| listing_identifier | Yes | Listing identifier from list_my_listings or create_listing. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 OfferADestructiveInspect
From XP's connected resale + primary 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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Required. True to rescind; False to preview without rescinding. | |
| identifier | Yes | Public listing identifier the offer was placed on. | |
| offer_uuid | Yes | Identifier 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, and the description reinforces this by calling it a mutating 'write on the XP live offer book.' It adds substantial context the annotations cannot convey: the two-phase confirm workflow, that only confirm=True returns success=true, the auth and write:bids scope requirement, and the indirection where offer_uuid may be a swap id resolved server-side. Rich, non-redundant behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: purpose first, then the confirm workflow, then auth/scope, then exclusions. Nearly every sentence carries actionable information, though the run is long and could be trimmed slightly (e.g. the parenthetical examples and the swap-id resolution note are somewhat packed together).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutating tool with an output schema present (so return values needn't be described), the definition covers purpose, workflow, auth/scope, parameter provenance, and alternative tools. Nothing an agent needs to invoke it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description pushes above it by explaining the provenance and accepted forms of offer_uuid (bid_uuid from make_offer_on_listing, or the buyer swap id, resolved via privy-bids/mine) and the preview-vs-commit semantics of confirm. This adds meaning beyond the field descriptions, though it does not document identifier syntax further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — rescinding a buyer's outstanding offer on the XP live offer book — and frames it as a two-phase write. It implicitly separates this from siblings like cancel_my_listing and rescind_standing_bid by naming the bid/offer resource and the make_offer_on_listing origin. 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use with concrete user utterances ('pull my bid'), a required two-step workflow (confirm=False to preview, confirm=True only after approval), and explicit exclusions: 'Do not use for browse / discovery' and 'For standard buy-now ticket purchases... use search_events and get_ticket_listings.' Alternatives are named, so 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.
check_listingCheck ListingARead-onlyInspect
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
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Cursor 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond annotations: explains header-based auth (open-world, no bearer/OAuth), the failure taxonomy (never raises, never 401, three structured errors), pagination truncation at 50+ rows, and the semantic difference between `listing` snapshot vs. `actions` history. Notes the retired payout rail. Annotations only cover readOnly/openWorld/destructive, so this substantially enriches the picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence is excellent, but the embedded JSON result schema is large and largely duplicates the actual output schema referenced in context signals. Header notation, ARGS, POLL LOOP, BUCKETS and EVENT VOCABULARY sections add operating value but make the description long for a one-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the output schema existing, the description adds the bucket semantics, event vocabulary, and cursor bookkeeping needed to drive a correct poll loop – none of which live in schema/annotations. An agent has everything required to invoke and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3 applies. The description adds meaning the schema lacks: what the cursor *is* (value from previous `cursor` field), the per-correlation-id storage discipline, and that negative values return invalid_since rather than being silently clamped.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (poll) and resource (status and action feed for the listing tied to this call's correlation id). The identity mechanism (correlation id via header, not an argument) immediately distinguishes it from all sibling read tools like get_event_details or search_market.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly documents the poll loop, when to omit `since` (first call), how to page via `cursor`, and clarifies non-error cases (unrecognized correlation id is not an error). No sibling tool overlaps this function, so no alternative needs naming.
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 SaleAInspect
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. Two-phase: confirm=false previews so the section, row and seats 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.
| Name | Required | Description | Default |
|---|---|---|---|
| ga | No | True for general admission with no seat numbers. | |
| row | No | Row, e.g. C. Omit for general admission. | |
| is_ada | No | True for accessible seating. | |
| is_sro | No | True for standing room only. | |
| confirm | No | False (default) previews. True creates the listing. | |
| section | No | Section name exactly as the venue prints it, e.g. 104. | |
| event_id | Yes | Event identifier from search_market or search_events. | |
| quantity | Yes | How many tickets are being listed together. | |
| last_seat | No | Last seat number, if seated. | |
| first_seat | No | First seat number, if seated. | |
| ask_per_ticket_usd | No | Optional asking price per ticket in dollars. Omit to invite offers with no anchor. | |
| is_obstructed_view | No | True if the view is obstructed. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: the two-phase confirm=false preview vs confirm=true create, the fact that a new listing is REVIEWED before going live, the listing_state values (live/in_review/not_accepted) with the critical warning that only 'live' means buyers see it, that tickets transfer only after an offer is accepted, and that auth is required. This is exactly the kind of 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the usage trigger, then layers the flow, state semantics, and the important 'live' caveat. Dense but every sentence carries actionable information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with an output schema already present, the description covers the safety profile (auth required), the two-phase confirmation, the review lifecycle, and the result's listing_state semantics. An agent has everything needed to call it and interpret the response correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 12 parameters (baseline 3). The description adds real value by explaining the confirm preview/create interplay and the seat-detail read-back purpose, clarifying how section/row/seat inputs are meant to be surfaced to the user.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (creates a ticket listing on the XP marketplace) and anchors it with user-utterance examples ('sell my two seats', 'list section 104 row C'). It clearly distinguishes itself from the offer-handling siblings by naming accept_offer and reject_offer as the downstream step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear trigger conditions ('use when the user wants to sell tickets they hold') plus concrete example phrasings, and explains the seller's position in the flow. It does not explicitly exclude near-neighbor siblings like list_my_listings or cancel_my_listing, but the sell-side context is unambiguous.
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 OfferADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | False (default) previews without committing. True rests the offer. | |
| quantity | Yes | How many tickets the offer is good for. | |
| sections | Yes | Section names the offer covers, e.g. 104 and 105. Exact names. | |
| event_ids | Yes | Event ids this offer may fill on, from search_market or search_events. | |
| expires_at | No | Optional ISO-8601 UTC expiry. Omit for no expiry. | |
| amount_per_ticket_usd | Yes | Whole dollars per ticket. Cents are not accepted. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_event_detailsGet Event DetailsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | Event ID from search_events or a previous user selection (e.g. 406). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: the data source (XP marketplace catalog), the returned fields, and a caching instruction to avoid re-calling for the same event_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the trigger and payoff, then the exclusion. Every clause carries either usage routing, return contents, or a caching constraint — no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description needn't document return structure, and it nonetheless summarizes the card's contents. For a single-parameter read tool, routing, behavior, and caching guidance are all present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the lone `event_id` parameter is already fully documented in the schema, including its provenance from search_events. The description adds no syntax or format detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — returning the 'full event card' with named contents (venue, performers, fee-inclusive price preview, images) — and explicitly contrasts itself with `get_ticket_listings`. An agent can distinguish it from the many sibling search/get tools 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete trigger ('event ID is in hand and the user wants the full event card before browsing tickets') and an explicit exclusion ('Do not use to list ticket inventory; `get_ticket_listings` is the right tool'). Both when-to-use and when-not-to-use are named with the alternative.
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 MarketARead-onlyInspect
Use when the user wants to understand what an event is trading at, not just browse rows. Returns the cheapest fee-inclusive price in each area of the building from XP's connected order book, ordered by price, plus the fan listings open to offers. Lead with the cheapest fan ask when there is one: it is a price the user can offer against, so the user can make an offer instead of paying the ask. Do not describe the market with averages, medians, or maximum asks.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | Event identifier from search_market or search_events. | |
| quantity | No | Party size; filters to groups a buyer can actually transact at. | |
| sections | No | Section names the user named, to report on specifically. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only/non-destructive safety, but the description adds meaningful behavior: fee-inclusive cheapest price per building area, price-ordered results, inclusion of fan listings open to offers, and a constraint against averages/medians/max asks. This goes beyond the annotations, though it omits pagination or result-size behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the trigger and the key output trait (cheapest fee-inclusive price, price-ordered) before the presentation guidance. Sentences are purposeful and none is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-shape details need not be in the description, and this read-only tool is adequately covered. Only minor gaps remain around pagination/cardinality of returned areas and listings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so event_id, quantity, and sections are already documented. The description only loosely alludes to these ("each area of the building", "fan listings") without adding syntax or format detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (reads the market / trading price for an event) and clearly distinguishes its output from mere row browsing. It does not explicitly name the sibling it contrasts with (e.g., get_ticket_listings), so an agent can infer but not confirm the alternative without reading schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear trigger ("Use when the user wants to understand what an event is trading at, not just browse rows") that implicitly routes away from listing-browse tools. It lacks an explicit when-not or a named alternative tool, so the routing cue is good but not fully prescriptive.
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 BidsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many bids to return, 1-200. Defaults to 25. | |
| offset | No | Skip this many. Use with limit to page. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 KnowsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| event_ids | Yes | Event IDs the user has settled on. Usually one. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 StatusARead-onlyInspect
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 + primary 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. Open-bid amounts use USDC 6-decimal integer raw units in amount_raw; amount_display is human-readable (e.g. $4.00). When is_seller is true, each offer includes actions mapping to accept_offer and reject_offer. Requires auth and read:bids scope. Do not use for casual ticket buyers; this is the seller-side and power-user marketplace surface. For standard ticket purchases, use search_events and get_ticket_listings.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Public listing identifier from list_open_listings or list_my_listings. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, non-open-world, but the description adds substantial behavioral context the annotations cannot supply: the requires-auth and read:bids scope, the special sold/awaiting-transfer result shape with transfer instructions and remaining obligation, and the USDC 6-decimal raw-unit encoding for amount_raw plus human-readable amount_display.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The primary purpose arrives second; the description opens with a narrow edge case (sold listing awaiting ticket transfer) that is not the main use case. The body is information-dense and useful but meanders between units, scopes, and routing before the core function is established.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be restated, and the description still adds the one thing the schema can't convey (USDC raw-unit encoding and the sold-listing transfer case). Auth, scope, seller-side positioning, and alternatives are all covered for a one-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single identifier parameter, and it even points to list_open_listings/list_my_listings as its source. The description adds nothing extra about the parameter but does clarify the semantic result fields (actions mapping to accept_offer/reject_offer), slightly exceeding the baseline given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — polling an authenticated seller's own listing to see open bids, state, and seats — and explicitly names it as 'the seller view of the live offer book.' An agent can distinguish it from sibling read tools like get_open_listing, check_listing, and search_market.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use ('authenticated seller wants to poll their listing before deciding to accept or reject an offer'), a concrete example query, and explicit when-not ('Do not use for casual ticket buyers'), plus named alternatives (search_events, get_ticket_listings, accept_offer/reject_offer). Routing is unambiguous.
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 OrdersARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many recent orders to return, 1-50. Defaults to 20. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_referral_kickbacksGet My Referral KickbacksARead-onlyInspect
Use when an authenticated user wants their XP marketplace referral kickback totals and rows (e.g. 'how many friends bought tickets to the season opener through my link?', 'show my kickbacks'). Returns direct/indirect referral counts, total spend, total kickback (cents), and per-referral rows from the XP marketplace. Read-only; requires auth and read:account scope.
| Name | Required | Description | Default |
|---|---|---|---|
| order_end | No | Optional order-window end (YYYY-MM-DD). | |
| order_start | No | Optional order-window start (YYYY-MM-DD). | |
| referral_end | No | Optional referral-window end (YYYY-MM-DD). | |
| referral_start | No | Optional referral-window start (YYYY-MM-DD). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/destructiveHint/openWorldHint. The description adds meaningful context beyond them: it requires auth and the read:account scope, and it enumerates what the response contains (counts, spend, kickback in cents, per-referral rows). Slight redundancy on 'read-only' but the auth/scope disclosure is real value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the triggering condition, then returns, then behavioral constraints. Three tight clauses with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Purpose, trigger conditions, auth/scope requirements, and return shape are all covered, and an output schema plus rich annotations handle the rest. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four date-window parameters are documented in the schema at 100% coverage, so the baseline of 3 applies. The description adds no extra meaning about the order_* vs referral_* semantic distinction beyond what the schema offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('their XP marketplace referral kickback totals and rows') with concrete example queries, making it easy to distinguish from siblings like get_my_orders or get_my_wallet. The scope (XP marketplace referrals) is precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Use when an authenticated user wants...' clause plus two example queries gives clear context for when to invoke it. It does not name explicit alternatives or exclusions, so a 4 rather than 5.
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 TicketsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many tickets to return, 1-200. Defaults to 25. | |
| offset | No | Skip this many. Use with limit to page. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 WalletARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ListingARead-onlyInspect
From XP's connected resale + primary order book. Use when a listing identifier is in hand and the user wants the full record for one open listing on the XP marketplace before they make an offer. Returns one row from the live offer book. Requires auth and read:bids scope. Do not use for casual ticket buyers; this is the seller-side and power-user marketplace surface. For standard ticket purchases, use search_events and get_ticket_listings.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Public listing identifier from list_open_listings. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), and the description adds real context beyond them: it requires auth, requires read:bids scope, and notes the data is a live row from the connected resale + primary offer book. It does not discuss staleness or rate limits, but with an output schema present the return format is covered elsewhere.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads provenance and purpose, then usage and alternatives. Mostly every sentence earns its place; the 'casual ticket buyers' sentence is slightly verbose but serves a genuine routing purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations carry the safety profile. Combined with auth/scope requirements, trigger conditions, and sibling routing, an agent has everything needed to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is documented in the schema as a public listing identifier from list_open_listings. The description says 'identifier is in hand' but adds no format or validation 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: retrieve the full record for one open listing, and clarifies the scope is a single row from the live offer book. It explicitly contrasts with list_open_listings (list) and get_ticket_listings (standard inventory), so an agent can separate it from 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the trigger condition ('a listing identifier is in hand', before making an offer), an explicit exclusion ('do not use for casual ticket buyers; seller-side and power-user surface'), and names the alternatives ('search_events', 'get_ticket_listings') for standard purchases. When/when-not/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.
get_order_statusGet Order StatusARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| order_uuid | Yes | The order_uuid returned by buy_tickets (or listed by get_my_orders). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 HistoryARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Window in days, 1-90. Defaults to 30. | |
| event_id | Yes | Event identifier from search_market or search_events. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, open-world behavior, but the description adds meaningful context beyond them: the return shape (one point per day, oldest first, fee-inclusive dollars), the recording policy (only tracked events), and the important caveat that an empty history is a real, common answer rather than a flat line.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with usage cues before explaining return semantics and caveats. Every sentence contributes either routing guidance, output meaning, or an important limitation, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an existing output schema, the description need not detail return values, yet it still clarifies the output semantics and the empty-history edge case. Together with the rich annotations and full schema coverage, an agent has everything needed to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (`event_id`, `days`) are already documented in the schema, including the default and range for `days`. The description adds no parameter-level syntax or format beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Returns the daily closing get-in price') and clearly scopes what the tool does over time. It explicitly distinguishes itself from the sibling `get_recent_sales` by contrasting asking-side history with actual sale prices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit trigger conditions: rising/falling prices, buy-now-vs-wait decisions, and recent event behavior. It also names the main alternative (`get_recent_sales`) and warns against conflating the two, which is exactly the routing guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_salesRecent SalesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | Event identifier from search_market or search_events. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe, read-only, open-world read. Beyond that, the description discloses genuinely useful behavior: what an empty result means ("no verified transfers in the window") and an interpretive caution ("One sale is one sale -- do not generalise from a single clear"). It doesn't cover rate limits or fetch-window size, keeping it at a strong 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the triggering condition, then the return shape, then edge-case semantics, then decision context. Each sentence mostly earns its place, though the closing "One sale is one sale" line is more flavor than specification and adds slight length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return fields need not be re-explained, and annotations carry the safety profile, so the description's remaining job is purpose, usage, and edge-case semantics -- all of which it covers, including the important empty-result interpretation. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is exactly one parameter (event_id), whose meaning and source are already fully documented in the schema. The description adds no parameter-level detail, which is the expected baseline 3 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a precise verb+resource: recent completed deals (actual sold prices) from the XP marketplace, with per-ticket price and recency. It implicitly distinguishes itself from listing-oriented siblings (check_listing, get_ticket_listings) by framing the result as what "actually sold for" and adds scope via "verified transfers in the window." An agent can tell this apart from get_price_history 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Multiple concrete when-to-use triggers are given: "Use when the user asks what tickets actually sold for," "before claiming nothing has traded," and "before deciding whether to make an offer or wait for a price drop." This is rich contextual guidance, but it never names a specific alternative tool (e.g. get_price_history) or states a when-not condition, so it falls short of the 5 bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_seat_mapSeat MapARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | Event identifier from search_market, search_events or get_event_details. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/non-destructive, and the description adds substantial context beyond them: the return type is an image, charts are not universal, the missing-chart fallback is spelled out, and no sign-in is required. It stops short of describing image format or any size/pagination characteristics, but the operational behavior is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with trigger phrases, then the layout-vs-photo clarification, then failure handling and auth. Every sentence carries information, though the anti-photo warning is emphasized twice ('must never be described as one'), which is slightly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple one-parameter read tool with an output schema, and the description still covers the return artifact, the not-every-venue failure mode, the fallback tool, and the auth requirement. Nothing an agent needs to select or invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema description coverage is 100%, so the schema fully documents event_id and its provenance (search_market, search_events, get_event_details). The description adds no additional parameter meaning, which is the expected baseline here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the venue seating chart as an image') and explicitly defines scope as the venue LAYOUT. It distinguishes this from the view-from-seat photo it must not be confused with, and from get_ticket_listings which supplies section/row text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with concrete user utterances that trigger it ('where is 104', 'show me the map', 'is that behind the stage') and points to get_ticket_listings as the alternative when a chart is missing. Both the when-to-use and the when-not condition are explicit.
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 DetailARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| standing_bid_id | Yes | Standing offer id from list_my_standing_bids or create_standing_bid. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ListingsARead-onlyInspect
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 + primary inventory. Do not use before an event has been resolved — call search_events or get_event_details first. Prices are integer cents.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Alias for section_tags. | |
| is_ga | No | If true, filter for general admission only. | |
| limit | No | Maximum ticket listings to return. | |
| offset | No | Pagination offset. | |
| event_id | No | Event identifier from search_events or get_event_details. If omitted, the assistant should search/select an event first. | |
| order_by | No | Price sort order. | |
| quantity | No | Number of tickets requested. | |
| sections | No | Alias for section_ids. | |
| api_limit | No | Backend limit (advanced; usually omit). | |
| section_ids | No | Section IDs filter (list, comma-separated string, or numeric IDs; supports simple ranges like '100-110'). | |
| parking_only | No | If true, return only parking tickets. | |
| section_tags | No | Section tags filter (e.g. 'Floor', '1xx'). | |
| max_cache_level | No | Backend cache level override (advanced; usually omit). | |
| max_price_cents | No | Maximum ticket price. Integer cents (20000 = $200.00). | |
| min_price_cents | No | Minimum ticket price. Integer cents (5000 = $50.00). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true. The description adds genuine context beyond that: it pulls the LIVE offer book of resale plus primary inventory (freshness characteristic), prices are fee-inclusive, and prices are integer cents. Missing only things like result volatility or rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, each earning its place: trigger, the pre-condition exclusion, and the price-unit note. The scoping constraint is front-loaded before the caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers liveness, fee-inclusive pricing and required precedence. Minor gap: no guidance on how the overlapping tags/section_tags and sections/section_ids alias parameters differ, though the schema documents each individually.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 15 parameters, so the schema carries the burden and baseline 3 applies. The description only restates the price-unit convention already documented on min_price_cents/max_price_cents and does not clarify the ambiguous tag/section alias pairs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (list ticket options for an XP event) plus the distinctive traits of the result: fee-inclusive prices and live resale+primary inventory. This distinguishes it clearly from siblings like check_listing, get_recent_sales, and get_seat_map.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the trigger condition ('after search_events', user asking for cheap seats or parking) and gives an explicit exclusion: 'Do not use before an event has been resolved — call search_events or get_event_details first.' Both the when and the alternative are named.
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 AccountARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 DetailsARead-onlyInspect
Pull full venue info from XP plus the upcoming-events calendar at that venue, with live pricing from the connected order book of resale + primary 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.
| Name | Required | Description | Default |
|---|---|---|---|
| venue_id | Yes | Venue identifier from search_venues. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, openWorld, non-destructive), and the description adds real value beyond them: it discloses that pricing is live from a connected order book and that the return includes an upcoming-events feed designed to tee up get_ticket_listings. It stops short of describing pagination, freshness windows, or coverage limits on the calendar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose before the usage examples, and every sentence earns its place by adding routing or payload information. Slightly long because of the repeated example phrasings, but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full output schema present, the description needn't explain return values, yet it still summarizes the composite payload and the downstream call it enables. For a single-parameter read tool with rich annotations, 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.
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 venue_id and its origin in search_venues. The description adds no format, range, or sourcing detail beyond what the schema provides; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (pull full venue info) and enumerates the composite payload: XP venue data, upcoming-events calendar, and live resale/primary pricing. It explicitly contrasts itself with get_ticket_listings, so an agent can distinguish it from 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (after search_venues, or when the user asks about upcoming shows) with concrete example phrasings, plus an explicit when-not-to-use routing to get_ticket_listings 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.
list_muted_listingsList Muted ListingsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 FavoritesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many favorites to return, 1-200. Defaults to 25. | |
| offset | No | Skip this many. Use with limit to page. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ListingsARead-onlyInspect
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 + primary 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. Do not use for casual ticket buyers; this is the seller-side and power-user marketplace surface. For standard ticket purchases, use search_events and get_ticket_listings.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Listings per state category, 1-200. Defaults to 25. | |
| offset | No | Skip this many within each category. Use with limit to page. | |
| state_category | No | Optional: active, pending, has_open_bids, awaiting_seller_transfer_proof, needs_user_attention, ready_to_claim, rejected_bids, terminal. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the description adds the genuinely useful operational facts: auth plus read:bids scope, and that a page is per-category rather than the whole book. It stops short of describing pagination totals format or what determines ordering, but the additions are real and non-obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is dense and mostly earns its place, but the opening sentence leads with paging mechanics while the actual purpose ('list my listings bucketed by lifecycle') is buried mid-paragraph. Front-loading the what-it-does before the paging caveat would make selection faster.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description only needs to add auth scope, paging semantics, and routing — and it does all three. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds usage meaning: 'page on with offset or narrow with state_category' tells the agent how the two optional params interact with the paged-per-category model, which the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('list my listings') and the non-obvious scope: results bucketed by lifecycle category, seller-side, on the XP connected order book. An agent can distinguish this from get_my_tickets, get_my_listing_status and list_open_listings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the caller condition ('authenticated seller wants to see their listings'), gives example utterances, states exclusions ('do not use for casual ticket buyers'), and routes elsewhere ('for standard ticket purchases, use search_events and get_ticket_listings'). Also tells the agent what to do when has_more is set.
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 OffersARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ListingsARead-onlyInspect
From XP's connected resale + primary order book. Use when the user wants to browse the live offer book of listings open on XP (e.g. 'what's open near me this weekend', 'open listings with active offers'). Filterable by event, performer, and amount. Requires auth and read:bids scope. Do not use for casual ticket buyers; this is the seller-side and power-user marketplace surface. For standard ticket purchases, use search_events and get_ticket_listings.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Only include offers created within this many days. | |
| limit | No | Max offers to return after fetch. | |
| sort_by | No | Sort field: created_at, event_date, amount, state, updated_at. | created_at |
| performer | No | Filter by performer name substring. | |
| event_name | No | Filter by event title substring. | |
| max_amount | No | Maximum listing amount in USDC 6-decimal raw units (50_000_000 = $50.00 USDC). Multiply dollars by 1_000_000. | |
| min_amount | No | Minimum listing amount in USDC 6-decimal raw units (50_000_000 = $50.00 USDC). Multiply dollars by 1_000_000. | |
| sell_to_xp | No | If true, only offers where sell_to_xp is true. | |
| sort_order | No | Sort direction. | desc |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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 non-schema context: it requires auth and a read:bids scope, which an agent needs before calling. It does not discuss pagination behavior, though the output schema covers 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the source and the core use case before the examples and exclusions. The example phrasing and the 'do not use' clause both carry routing value, though the sentence count is on the higher side for a list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering the safety profile, a 100%-covered schema, and an output schema for returns, the description fills the remaining gaps: auth/scope prerequisites and the buyer-vs-seller decision boundary. An agent has everything needed to select and invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every filter, sort field, and the USDC raw-unit convention are already documented in the schema. The description only summarizes 'filterable by event, performer, and amount,' adding little beyond what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — browsing the live offer book of listings open on XP — and situates it in the resale + primary order book. This clearly separates it from the singular sibling get_open_listing and from the buyer-side search_events/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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives trigger examples ('what's open near me this weekend'), names when NOT to use it (casual ticket buyers; this is the seller-side/power-user surface), and routes to two concrete alternatives with the condition that selects them.
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 ListingADestructiveInspect
From XP's connected resale + primary 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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Required. True to submit the offer; False to preview the computed total without placing the offer. | |
| amount_cents | Yes | 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. | |
| idempotency_key | No | Optional client-generated UUID to prevent duplicate bids on retry. | |
| listing_identifier | Yes | Public listing identifier from list_open_listings. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses the preview-then-confirm two-phase flow, that only confirm=True returns success=true, the required auth and write:bids scope, and that real money is at risk. The destructiveHint=true annotation is reinforced rather than merely repeated, giving the agent genuinely new 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, followed by sequencing, constraints, and alternatives in a tight logical order. Despite its length, every sentence carries operational weight (preview contract, auth scope, sibling routing).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full schema descriptions, and annotations all present, the description still adds the safety-critical pieces an agent needs: the mandatory preview step, scope requirements, and the money-at-risk warning. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the schema already documents each parameter thoroughly. The description adds cross-parameter semantics not in the schema: confirm=False previews a fee-inclusive total with no bid placed, and only confirm=True yields a successful submission.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('make an offer on an open XP listing') and immediately distinguishes itself from buy-now and browse tooling. An agent can tell it apart from siblings like buy_listing_now, accept_offer, and create_standing_bid 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('when the user wants to make an offer on an open XP listing'), explicit when-not ('Do not use for browse / discovery'), and names concrete alternatives ('use search_events and get_ticket_listings' for buy-now). It also prescribes the required two-phase sequencing, leaving nothing 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.
| Name | Required | Description | Default |
|---|---|---|---|
| muted | No | True to mute (hide it from the user's marketplace feed), False to unmute. | |
| listing_identifier | Yes | Listing identifier from list_open_listings or get_open_listing. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 OfferADestructiveInspect
From XP's connected resale + primary 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. Do not use for casual ticket buyers; this is the seller-side and power-user marketplace surface. For standard ticket purchases, use search_events and get_ticket_listings.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Required. True to reject the offer; False to preview without rejecting. | |
| identifier | Yes | Public listing identifier from list_my_listings or get_my_listing_status. | |
| offer_uuid | Yes | Offer UUID from get_my_listing_status open_offers. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, and the description builds on that with the crucial detail that only confirm=True submissions return success=true, plus the required auth and write:listings scope. This is exactly the behavioral context an agent needs before mutating state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information is front-loaded and mostly tight, but the 'Do not use without the two-phase preview-then-confirm flow' sentence restates the earlier confirm=False/confirm=True instruction, adding mild redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained. Auth scope, destructive nature, two-phase flow, alternatives, and audience restrictions 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented, giving a baseline of 3. The description adds real nuance by tying confirm to the two-phase preview/confirm semantics and clarifying that confirm=False is a non-mutating preview, which slightly exceeds the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (reject) and resource (a specific bid/offer on the seller's listing) on the XP live offer book, and clearly distinguishes itself from accept_offer and buyer-side tools. An agent can tell what this does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (authenticated seller rejecting a bid), when not to use (casual ticket buyers; the standard purchase path), and names alternatives (search_events, get_ticket_listings). The two-phase preview-then-confirm flow is spelled out as a hard requirement.
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 OfferADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | False (default) previews. True closes the offer to new fills. | |
| standing_bid_id | Yes | Standing offer id from list_my_standing_bids. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 EventsARead-onlyInspect
Use when the user wants to find live events on XP — concerts, sports, theater — by performer, team, venue, city, or keyword (e.g. 'tickets to the season opener', 'shows near me this weekend'). Surfaces the connected order book of resale + primary inventory in one feed. Do not use for scores, news, standings, or non-ticketed listings; use a web tool for those.
| Name | Required | Description | Default |
|---|---|---|---|
| cbsa | No | Metro area filter (synonyms: city, near me, area). ISO US CBSA code or name. | |
| genre | No | Genre filter. | |
| limit | No | Maximum number of events to return. | |
| query | Yes | Natural language event search query. | |
| max_date | No | Filter events on or before this date (YYYY-MM-DD). For relative phrases like 'this weekend' or 'next month', resolve against _meta.context.today. | |
| min_date | No | Filter events on or after this date (YYYY-MM-DD). For relative phrases like 'this weekend' or 'next month', resolve against _meta.context.today. | |
| include_scores | No | Include similarity scores for debugging. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds genuine behavioral context beyond that: results merge resale and primary inventory into a single connected order-book feed, which tells the agent what the returned listings represent. It still omits ranking/pagination behavior and how the default limit of 100 is applied, keeping it 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the usage trigger, then the differentiator, then the exclusion. Every clause carries routing information; none restates the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value description is unnecessary. For a 7-parameter, one-required search tool, the description covers the selection conditions, the result-set composition, and the boundary cases that route an agent elsewhere. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself is unusually informative (CBSA synonyms, date resolution against _meta.context.today, limit bounds), so the baseline would be 3. The description adds marginal value on top by enumerating what belongs in `query` (performer, team, venue, city, keyword) versus what belongs in structured filters, and by clarifying that multi-word natural-language phrases like 'shows near me this weekend' are valid input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find/search) and resource (live events) plus the domain (concerts, sports, theater) and the facets it accepts (performer, team, venue, city, keyword). The 'by X, Y, Z' enumeration and concrete example queries let an agent distinguish it from search_market, search_performers, or search_venues without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the trigger as an agent-facing condition ('Use when the user wants to find live events...'), gives two realistic utterance examples, and names the exclusions and the fallback ('Do not use for scores, news, standings, or non-ticketed listings; use a web tool for those'). Both when-to-use and when-not-to-use are covered with the alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_marketSearch the MarketARead-onlyInspect
Use when the user is shopping and might make an offer rather than pay the asking price. Searches XP events and returns both sides of the connected order book per event: the fee-inclusive marketplace get-in price from resale + primary inventory, and whether fans are selling into that event, with their cheapest ask. Prefer this over search_events whenever price matters, e.g. 'tickets to the season opener' or 'cheap seats near me' when the user might make an offer. Do not use for scores, news, or standings.
| Name | Required | Description | Default |
|---|---|---|---|
| cbsa | No | Metro area filter (synonyms: city, near me, area). | |
| genre | No | Genre filter. | |
| limit | No | Maximum number of events to return. | |
| query | Yes | Natural language event search query. | |
| max_date | No | Filter events on or before this date (YYYY-MM-DD). For relative phrases like 'next month', resolve against _meta.context.today. | |
| min_date | No | Filter events on or after this date (YYYY-MM-DD). For relative phrases like 'this weekend', resolve against _meta.context.today. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-destructive, open-world profile, and the description goes further by explaining the dual-sided order book semantics, fee-inclusive pricing, and ask-side availability. It doesn't mention rate limits or result cap behavior, but the added output-context is valuable beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the usage condition, then the return content, then the routing guidance and exclusion. Every sentence earns its place, though the third clause is fairly dense and slightly redundant with the opening 'might make an offer' phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return-value documentation isn't required, and the description still summarizes the payload well. Annotations cover safety, so 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter (cbsa, genre, limit, query, min/max_date) is already documented in the schema. The description adds no per-parameter meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (searches XP events) and precisely what it returns (both sides of the connected order book, fee-inclusive get-in price, whether fans are selling with cheapest ask). It is immediately distinguishable from the sibling search_events tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit trigger ('when the user is shopping and might make an offer rather than pay asking price'), a named preferred alternative ('Prefer this over search_events whenever price matters'), concrete examples, and an explicit exclusion ('Do not use for scores, news, or standings').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_performersSearch PerformersARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| genre | No | Optional genre filter. | |
| limit | No | Max performers to return. | |
| query | Yes | Natural language performer search query. | |
| sport | No | Optional sport filter (NBA, NFL, etc.). | |
| include_score | No | Include similarity scores for debugging. | |
| min_similarity | No | Minimum similarity score for the semantic match. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, openWorldHint, non-destructive) cover the safety profile, so the bar is lower. The description adds value: it says it returns performer cards, not events, and that results come from the XP catalog, plus the pairing workflow with search_events. It doesn't mention result ordering, empty-result behavior, or pagination, but the output schema exists to cover 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then triggers, then return semantics, then sibling routing and exclusion. Every sentence earns its place, no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, triggers, return type, and sibling routing well. The output schema handles return structure. Slight gap: no mention of what happens with filters like sport/genre or no results, but nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with all six params documented, so baseline is 3. The description adds no parameter-level detail (e.g. what a good query string looks like, or how min_similarity interacts with results), so it neither compensates nor detracts from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: find a performer (artist/team/comedian) on the XP marketplace by name, and explicitly contrasts with search_events ('not events'). An agent can distinguish it from siblings without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit trigger cases (user names a performer like 'Taylor Swift' or 'Lakers season opener'), names the alternative search_events with its qualifying condition, and states an exclusion ('Do not use for general events near me queries'). This is a complete when-to-use, when-not, and alternative mapping.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_venuesSearch VenuesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Optional city filter (synonyms: near me, area). | |
| limit | No | Maximum venues to return. | |
| metro | No | Optional metro area filter (synonyms: city, near me, area). | |
| query | Yes | Venue name or search term. | |
| state | No | Optional state abbreviation (e.g. NY, CA). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so the safety profile is covered. The description adds genuine behavioral context by clarifying the result domain ('venue records, not tickets') and the price-question exclusion. It does not discuss limit/pagination behavior, but that is minor given the limit parameter and 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences, front-loaded with the usage trigger, then scope, then the exclusion. No filler; every clause carries routing or scope information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, rich annotations, and 100% schema coverage, the description only needs to supply routing and scope — which it does fully. An agent has everything required to select and invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented, including the city/metro synonym notes. The description loosely echoes the searchable facets (name, city, area) but adds no syntax, format, or disambiguation beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('search venues') and immediately bounds the resource: venue records from the XP marketplace catalog, not tickets. This clearly separates it from siblings like search_events and get_venue_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit trigger conditions with concrete example phrasings ('venues near me', 'arenas in Brooklyn') plus a named exclusion and the alternative to use instead (get_ticket_listings). Both when-to-use and when-not-to-use are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
40 tool updates
- First observed
accept_offer - First observed
auth_status - First observed
buy_listing_now - First observed
buy_tickets - First observed
cancel_my_listing - First observed
cancel_my_offer - First observed
check_listing - First observed
create_listing - First observed
create_standing_bid - First observed
get_event_details - First observed
get_market_read - First observed
get_my_bids - First observed
get_my_context - First observed
get_my_listing_status - First observed
get_my_orders - First observed
get_my_referral_kickbacks - First observed
get_my_tickets - First observed
get_my_wallet - First observed
get_open_listing - First observed
get_order_status - First observed
get_price_history - First observed
get_recent_sales - First observed
get_seat_map - First observed
get_standing_bid - First observed
get_ticket_listings - First observed
get_user_account - First observed
get_venue_details - First observed
list_muted_listings - First observed
list_my_favorites - First observed
list_my_listings - First observed
list_my_standing_bids - First observed
list_open_listings - First observed
make_offer_on_listing - First observed
mute_listing - First observed
reject_offer - First observed
rescind_standing_bid - First observed
search_events - First observed
search_market - First observed
search_performers - First observed
search_venues
Related MCP Connectors
Live event ticket market data: prices, inventory, demand and seat maps, with screens and alerts.
Agent-native commerce: real quotes, reversible holds, and a whole business you own.
Structured B2B supply search, quoting, sandbox orders and fulfillment status for agents.
Agent-to-agent marketplace with escrow-protected trades via MCP tools.
Related MCP Servers
- MIT
- AlicenseAqualityAmaintenanceGive 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.27107 npmMIT No Attribution
- AlicenseAqualityDmaintenanceEnables AI agents to search, inspect, and purchase physical goods on an escrow-secured marketplace, including listing search, agent reputation checks, and offer creation.51,134 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to autonomously discover services, negotiate binding quotes, make idempotent purchases, and receive cryptographically verifiable deliverables.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.