Skip to main content
Glama
matthewdtowles

iwantmymtg-mcp

update_inventory

Update quantities for one or more Magic: The Gathering inventory items by card ID and finish, with batch support. Requires API key.

Instructions

Update quantities for one or more existing inventory rows. Accepts a batch. Use remove_inventory to delete a row entirely. Requires IWMM_API_KEY.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
itemsYes

Implementation Reference

  • The updateInventoryTool definition containing the 'update_inventory' tool. The handler calls apiFetch with PATCH method on /api/v1/inventory, performing the actual update logic.
    export const updateInventoryTool = {
      name: "update_inventory",
      description:
        "Update quantities for one or more existing inventory rows. Accepts a batch. Use remove_inventory to delete a row entirely. Requires IWMM_API_KEY.",
      inputSchema: z.object({ items: z.array(inventoryItem).min(1) }),
      handler: (input: { items: z.infer<typeof inventoryItem>[] }) =>
        apiFetch({ path: "/api/v1/inventory", method: "PATCH", body: input.items, authenticated: true }),
    };
  • The inventoryItem Zod schema used as input validation for update_inventory. Defines cardId (UUID), quantity (int >= 0), and isFoil (boolean).
    const inventoryItem = z.object({
      cardId: z.string().uuid().describe("Internal IWMM card UUID. Get from search_cards or get_card."),
      quantity: z.number().int().min(0).describe("Total quantity for this card+finish. 0 removes the row."),
      isFoil: z.boolean().describe("Whether this is the foil variant. Foil and non-foil are tracked as separate rows."),
    });
  • The inputSchema for update_inventory: a Zod object wrapping an array of inventoryItem with at least 1 item.
    export const updateInventoryTool = {
      name: "update_inventory",
      description:
        "Update quantities for one or more existing inventory rows. Accepts a batch. Use remove_inventory to delete a row entirely. Requires IWMM_API_KEY.",
      inputSchema: z.object({ items: z.array(inventoryItem).min(1) }),
  • src/tools/index.ts:8-8 (registration)
    Import of updateInventoryTool from ./inventory.js into the tools registry.
    updateInventoryTool,
  • Registration of updateInventoryTool in the tools array, making it available as a named MCP tool.
    updateInventoryTool,
Behavior2/5

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

No annotations provided, so description carries burden. Only discloses auth requirement (IWMM_API_KEY) and batch capability. Missing idempotency, error handling, or rate limit info.

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

Conciseness5/5

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

Three efficient sentences, front-loaded with purpose, clear structure, no filler words.

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

Completeness3/5

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

Covers purpose, alternative, and auth, but lacks behavioral traits like partial failure or idempotency. Adequate for a simple batch update but could be more complete without annotations.

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

Parameters2/5

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

Schema has detailed parameter descriptions, but tool description adds no parameter guidance. With 0% coverage, description fails to compensate; the batch hint is minimal.

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

Purpose5/5

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

The description clearly states the verb (update), resource (inventory rows), and scope (batch). It distinguishes from remove_inventory for deletion, providing clear purpose.

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

Usage Guidelines4/5

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

Explicitly mentions remove_inventory as alternative for deletion and states the API key requirement. Lacks when-not-to-use details but sufficient for the tool's specificity.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/matthewdtowles/iwantmymtg-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server