Skip to main content
Glama

Discard Item

horizon_discard_item
DestructiveIdempotent

Permanently discards an owned item instance using an exact reviewed inventory revision to prevent replays, then returns the updated inventory. Use when a player explicitly requests this action.

Instructions

Discards Item using the reviewed inventory revision. Use when: the player explicitly requests this inventory action. Not for: automatic retries, client grants, changing instance IDs or revisions to force an uncertain action through. Requires: userId and the player's session: sign in with horizon_signin_email or horizon_signin_anonymous and pass its accessToken as sessionToken. An exact reviewed inventory revision and instance UUID. Side effects: Permanently removes this instance. The original source guards consumption; replay cannot recreate a discarded item and no recipient receipt is added. One HTTP attempt only. Returns: Complete {userId,revision,instances,limits,serverTime} inventory. Replace only the matching host/project/player cache. Instances carry server-generated UUIDs, properties, equipped and createdAt. Errors: 409 REVISION_CONFLICT or an uncertain response: use horizon_get_items and reconcile intent, never silently substitute a new revision and repeat. 404 ITEM_NOT_FOUND means this instance no longer exists. 422 ITEM_PROPERTY_NOT_ALLOWED/ITEM_PROPERTY_LIMIT_REACHED rejects the entire adjustment. 401 means the session is missing or expired: sign in again and retry with the new accessToken. 403 for a session means the token belongs to another user: pass the userId that signed in. Needs HORIZON_API_KEY. Every failure returns an error result (isError) with the HTTP status and body: a 401 that horizon_test_connection also returns means HORIZON_API_KEY is wrong, 429 means the account's per-minute rate limit was reached (wait a minute, then retry).

Input Schema

NameRequiredDescriptionDefault
userIdYesSigned-in player UUID matching the session
instanceIdYesExact owned item instance UUID from the reviewed inventory
sessionTokenYesPlayer accessToken sent only as Authorization Bearer
expectedRevisionYesExact reviewed revision; never refresh and substitute automatically

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.9.1

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses permanence and non-replayability, that no recipient receipt is added, that only one HTTP attempt is made, that the response replaces only the matching host/project/player cache, and it maps 409/404/422/401/403/429 to concrete meanings and remedies. The 'one HTTP attempt only' and rate-limit notes are the kind of operational detail annotations cannot express.

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

Conciseness4/5

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

Well front-loaded and labeled (purpose, Use when, Not for, Requires, Side effects, Returns, Errors), so an agent can scan to the section it needs. It is long and the error enumeration is dense with mixed concerns (auth, rate limits, validation) that could be trimmed, but almost every sentence carries actionable information.

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

Completeness5/5

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

For a destructive, revision-guarded mutation with no output schema, the description covers everything an agent needs: the auth prerequisite and token plumbing, exact-revision semantics, permanence, the full return shape, and per-status recovery rules. Nothing essential to calling it correctly or recovering from failure is left unstated.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description still adds real meaning by tying expectedRevision to the reviewed revision ('never refresh and substitute automatically'), pinning instanceId to an exact owned instance from reviewed inventory, and explaining that sessionToken comes from horizon_signin_email/horizon_signin_anonymous and must be sent as a Bearer token. That exceeds what the schema's field descriptions convey.

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

Purpose4/5

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

States a specific verb and resource ('Discards Item') and immediately narrows the scope ('Permanently removes this instance'), so the agent knows this is a destructive inventory mutation rather than a read or an adjustment. It never names its nearest siblings (horizon_adjust_item, horizon_equip_item, horizon_get_items as the read counterpart), so differentiation is only inferable from behavior rather than stated.

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

Usage Guidelines4/5

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

The 'Use when' / 'Not for' pair is explicit and unusually useful, ruling out automatic retries and revision-forcing, which is exactly where an agent would otherwise go wrong. It also names horizon_get_items as the reconciliation path after a 409 or uncertain response. The positive condition ('the player explicitly requests this inventory action') is somewhat generic, but the exclusions carry the guidance.

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

Deploy Server

Other Tools