get_inventory
Retrieve your complete Habitica inventory including items, eggs, food, hatching potions, and special items.
Instructions
Get full inventory (items, eggs, food, hatching potions, special).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- index.js:243-248 (schema)Tool registration/schema for 'get_inventory' – defines name, description, and empty inputSchema (no params).
// Inventory / pets / mounts / equip { name: "get_inventory", description: "Get full inventory (items, eggs, food, hatching potions, special).", inputSchema: { type: "object", properties: {} }, }, - index.js:430-430 (handler)Handler for 'get_inventory' – calls GET /user and returns data?.items (the user's inventory including eggs, food, hatching potions, special items).
get_inventory: async () => json((await api("GET", "/user")).data?.items), - index.js:58-367 (registration)The 'tools' array containing all tool definitions including 'get_inventory', used by ListToolsRequestSchema handler (line 480).
const tools = [ { name: "get_user_profile", description: "Get the authenticated user's full profile (stats, prefs, items, party, etc).", inputSchema: { type: "object", properties: {} }, }, { name: "get_stats", description: "Get user stats only (HP, MP, XP, level, gold, class).", inputSchema: { type: "object", properties: {} }, }, { name: "get_tasks", description: "List tasks. Optionally filter by type.", inputSchema: { type: "object", properties: { type: { type: "string", enum: ["habits", "dailys", "todos", "rewards", "completedTodos"], description: "Optional task-type filter.", }, }, }, }, { name: "get_task", description: "Get a single task by id.", inputSchema: { type: "object", properties: { taskId: { type: "string" } }, required: ["taskId"], }, }, { name: "create_task", description: "Create a habit, daily, todo, or reward.", inputSchema: { type: "object", properties: { type: { type: "string", enum: ["habit", "daily", "todo", "reward"] }, text: { type: "string", description: "Title." }, notes: { type: "string", description: "Notes / description." }, difficulty: { type: "number", enum: [0.1, 1, 1.5, 2], description: "0.1=trivial, 1=easy, 1.5=medium, 2=hard.", }, priority: { type: "number", enum: [0.1, 1, 1.5, 2], description: "0.1=low, 1=med, 1.5=high, 2=urgent.", }, date: { type: "string", description: "Due date for todos (ISO)." }, value: { type: "number", description: "Cost in gold for rewards." }, checklist: { type: "array", items: { type: "object", properties: { text: { type: "string" }, completed: { type: "boolean", default: false }, }, required: ["text"], }, }, }, required: ["type", "text"], }, }, { name: "update_task", description: "Update fields on a task (text, notes, difficulty, priority, etc).", inputSchema: { type: "object", properties: { taskId: { type: "string" }, text: { type: "string" }, notes: { type: "string" }, difficulty: { type: "number", enum: [0.1, 1, 1.5, 2] }, priority: { type: "number", enum: [0.1, 1, 1.5, 2] }, date: { type: "string" }, }, required: ["taskId"], }, }, { name: "score_task", description: "Score a task. direction='up' completes a todo/daily or marks a + habit; 'down' is for negative habits.", inputSchema: { type: "object", properties: { taskId: { type: "string" }, direction: { type: "string", enum: ["up", "down"], default: "up" }, }, required: ["taskId"], }, }, { name: "delete_task", description: "Delete a task by id.", inputSchema: { type: "object", properties: { taskId: { type: "string" } }, required: ["taskId"], }, }, // Checklist { name: "get_task_checklist", description: "Get checklist items for a task.", inputSchema: { type: "object", properties: { taskId: { type: "string" } }, required: ["taskId"], }, }, { name: "add_checklist_item", description: "Add a checklist item to a task.", inputSchema: { type: "object", properties: { taskId: { type: "string" }, text: { type: "string" }, }, required: ["taskId", "text"], }, }, { name: "update_checklist_item", description: "Update text/completed on a checklist item.", inputSchema: { type: "object", properties: { taskId: { type: "string" }, itemId: { type: "string" }, text: { type: "string" }, completed: { type: "boolean" }, }, required: ["taskId", "itemId"], }, }, { name: "score_checklist_item", description: "Toggle a checklist item complete/incomplete.", inputSchema: { type: "object", properties: { taskId: { type: "string" }, itemId: { type: "string" }, }, required: ["taskId", "itemId"], }, }, { name: "delete_checklist_item", description: "Delete a checklist item.", inputSchema: { type: "object", properties: { taskId: { type: "string" }, itemId: { type: "string" }, }, required: ["taskId", "itemId"], }, }, // Tags { name: "get_tags", description: "Get all tags.", inputSchema: { type: "object", properties: {} }, }, { name: "create_tag", description: "Create a tag.", inputSchema: { type: "object", properties: { name: { type: "string" } }, required: ["name"], }, }, // Inventory / pets / mounts / equip { name: "get_inventory", description: "Get full inventory (items, eggs, food, hatching potions, special).", inputSchema: { type: "object", properties: {} }, }, { name: "get_pets", description: "Get owned pets map.", inputSchema: { type: "object", properties: {} }, }, { name: "get_mounts", description: "Get owned mounts map.", inputSchema: { type: "object", properties: {} }, }, { name: "feed_pet", description: "Feed a pet a piece of food.", inputSchema: { type: "object", properties: { pet: { type: "string", description: "Pet key, e.g. Wolf-Base." }, food: { type: "string", description: "Food key, e.g. Meat." }, }, required: ["pet", "food"], }, }, { name: "hatch_pet", description: "Hatch a pet from an egg + hatching potion.", inputSchema: { type: "object", properties: { egg: { type: "string" }, hatchingPotion: { type: "string" }, }, required: ["egg", "hatchingPotion"], }, }, { name: "equip_item", description: "Equip a pet, mount, costume piece, or battle gear.", inputSchema: { type: "object", properties: { type: { type: "string", enum: ["pet", "mount", "costume", "equipped"] }, key: { type: "string" }, }, required: ["type", "key"], }, }, // Rewards / shop / spells { name: "buy_reward", description: "Buy a custom reward by key.", inputSchema: { type: "object", properties: { key: { type: "string" } }, required: ["key"], }, }, { name: "get_shop", description: "Get items in a shop (default: market).", inputSchema: { type: "object", properties: { shopType: { type: "string", enum: ["market", "questShop", "timeTravelersShop", "seasonalShop"], default: "market", }, }, }, }, { name: "buy_item", description: "Buy an item from a shop.", inputSchema: { type: "object", properties: { itemKey: { type: "string" }, quantity: { type: "number", default: 1 }, }, required: ["itemKey"], }, }, { name: "cast_spell", description: "Cast a class spell, optionally on a target task or party member.", inputSchema: { type: "object", properties: { spellId: { type: "string" }, targetId: { type: "string" }, }, required: ["spellId"], }, }, // Notifications { name: "get_notifications", description: "Get unread notifications.", inputSchema: { type: "object", properties: {} }, }, { name: "read_notification", description: "Mark a notification as read.", inputSchema: { type: "object", properties: { notificationId: { type: "string" } }, required: ["notificationId"], }, }, // Cron { name: "run_cron", description: "Run the daily cron (advance day, apply damage from missed dailies). Normally auto-runs on first action of the day.", inputSchema: { type: "object", properties: {} }, }, ]; - index.js:53-54 (helper)Helper functions: 'ok' wraps text content; 'json' pretty-prints object as text. Used by the get_inventory handler.
const ok = (text) => ({ content: [{ type: "text", text }] }); const json = (obj) => ok(JSON.stringify(obj, null, 2)); - index.js:23-51 (helper)The 'api' helper that performs HTTP requests to the Habitica API. Used by get_inventory to call GET /user.
async function api(method, path, body) { const url = `${API_BASE}${path}`; const headers = { "x-api-user": USER_ID, "x-api-key": API_TOKEN, "x-client": `${USER_ID}-${APP_ID}`, "Content-Type": "application/json", }; const res = await fetch(url, { method, headers, body: body === undefined ? undefined : JSON.stringify(body), }); const text = await res.text(); let payload; try { payload = text ? JSON.parse(text) : {}; } catch { payload = { raw: text }; } if (!res.ok) { const msg = payload?.message || payload?.error || res.statusText; throw new McpError( ErrorCode.InternalError, `Habitica API ${res.status}: ${msg}`, ); } return payload; }