Skip to main content
Glama

Dayze — Life Context

Update Inventory Item

update_inventory_item

Patch one owned Inventory item, found by inventory_id or by nickname: what the user calls it ("MacBook", "work laptop"), matched to exactly one of their active items by nickname, name or model, so there is no need to look it up first; several matches are refused with the candidates and nothing changes. Fields you leave out are untouched. specs merge per key (null removes a key), so updating memory keeps storage. state records a new observation (observed_at, source, confidence) and never changes specs or notes; a key already observed more recently is kept. spec_template switches or clears (null) the template. A status like sold or donated moves it out of the active list; to archive, use archive_inventory_item. Never add device or account identifiers. ($0.10; API key required)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoWhat the user calls the item, e.g. "MacBook Pro 14 (2023)".
tagsNoReplaces the tag list.
brandNo
modelNo
notesNoFree text from the user.
specsNoStable facts, by the template's field names (computer.v1: nickname, manufacturer, model_name, model_identifier, year, primary_uses, capability_tags, product_family, form_factor, chip, cpu, architecture, performance_cores, efficiency_cores, total_cores, threads, gpu, gpu_cores, gpu_memory_bytes, neural_engine_cores, memory_bytes, memory, storage_devices, display, ports). Merged per key on update; null removes a key; other keys are kept as written. Only what the user or the device says, never inferred from a model name. Never device or account identifiers.
stateNoChanging facts, as one observation: observed_at (ISO, default now), source (e.g. user_reported, system_profiler), confidence (0-1), and values such as os { name, version, build }, available_storage_bytes, battery, security { sip, gatekeeper, filevault }, services { bluebubbles: { installed_version, running, configured, blockers, checked_at } }. Merged per key; a key observed more recently is kept. Never changes specs or notes. Never device or account identifiers.
statusNoDefault owned. To archive, use archive_inventory_item.
subtypeNoSpecific kind: laptop, sweatshirt, guitar. Alias: item_type.
categoryNoelectronics | instruments | clothing | shoes | bags | accessories | jewelry | watches | collectibles | sports | health | home | tools | vehicles | furniture | other. Computers, phones and cameras are electronics; synths are instruments. Defaults to the spec_template's category, else other.
currencyNoISO 4217, e.g. USD, SGD. Default USD.
locationNoWhere it is kept.
nicknameNoIn place of inventory_id: what the user calls the item ("MacBook", "work laptop"), matched to exactly one of their active items by nickname, name or model. Several matches are refused with the candidates. To rename it, set specs.nickname.
conditionNo
item_typeNoAlias for subtype (the stored column).
request_idNoClient idempotency key (retries return original result).
inventory_idNoThe item id from add_inventory_item, get_inventory or search_inventory.
acquired_dateNoYYYY-MM-DD it came into the user's life (gift, inheritance). add_inventory_item also stores it as purchase_date when none is given.
acquired_fromNoShop or person it came from.
current_valueNoAlias for estimated_value (the stored column).
purchase_dateNoYYYY-MM-DD
spec_templateNoWhich typed fields specs uses. Templates are listed in docs/MCP_LIFE_GRAPH.md. null (update) clears it.
purchase_priceNo
estimated_valueNoWhat it is worth now. Alias: current_value.
idempotency_keyNoAlias for request_id.
acquisition_typeNopurchase | gift | inheritance | …
reference_numberNoManufacturer reference or model number (e.g. a watch reference).
subtype_confidenceNo0-1, when the subtype is a guess.
specs_schema_versionNoLayout of specs and state. Only 1 (the default).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
itemNoInventory item record. With specs: spec_template, specs, state (a timestamped snapshot), state_freshness and capability_summary.
accountNoThe Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.
changedNo
messageNo
provenanceNoWhich connector wrote the record and which connected Dayze account received it.
state_noteNo
inventory_idNo
resolved_fromNoPHI-448: present when nickname found the item: the nickname sent and matched_on (nickname, name or model).
changed_fieldsNoColumns set, and the specs / state keys written.
idempotent_replayNo
state_not_appliedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / status / description
      Previous value: -"wishlist | ordered | owned | listed_for_sale | sold | returned | lost | disposed | donated. Default owned. To archive, use archive_inventory_item."New value: +"Default owned. To archive, use archive_inventory_item."
    • addedInput schema / properties / status / enum
      Added value: +[
      +  "wishlist",
      +  "ordered",
      +  "owned",
      +  "listed_for_sale",
      +  "sold",
      +  "returned",
      +  "lost",
      +  "disposed",
      +  "donated"
      +]
  2. Changed2 schema fields changed
    • addedOutput schema / properties / account
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.",
      +  "properties": {
      +    "display_name": {
      +      "description": "Account display name.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "handle": {
      +      "description": "Account handle, e.g. @goh.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "note": {
      +      "description": "How to disclose the account to the user.",
      +      "type": "string"
      +    },
      +    "qa_fixture": {
      +      "description": "True for a known QA test account: its records are fixture data, not a real life.",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "handle",
      +    "display_name",
      +    "qa_fixture",
      +    "note"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / provenance
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Which connector wrote the record and which connected Dayze account received it.",
      +  "properties": {
      +    "account": {
      +      "additionalProperties": false,
      +      "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.",
      +      "properties": {
      +        "display_name": {
      +          "description": "Account display name.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "handle": {
      +          "description": "Account handle, e.g. @goh.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "note": {
      +          "description": "How to disclose the account to the user.",
      +          "type": "string"
      +        },
      +        "qa_fixture": {
      +          "description": "True for a known QA test account: its records are fixture data, not a real life.",
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "handle",
      +        "display_name",
      +        "qa_fixture",
      +        "note"
      +      ],
      +      "type": "object"
      +    },
      +    "channel": {
      +      "description": "Always mcp_connector.",
      +      "type": "string"
      +    },
      +    "connector": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "kind": {
      +          "description": "oauth or api_key.",
      +          "type": "string"
      +        },
      +        "name": {
      +          "description": "The connected app or API-key label shown to the account owner.",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "kind",
      +        "name"
      +      ],
      +      "type": "object"
      +    },
      +    "source": {
      +      "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "source",
      +    "channel",
      +    "connector",
      +    "account"
      +  ],
      +  "type": "object"
      +}
  3. Changed3 schema fields changed
    • addedInput schema / properties / nickname
      Added value: +{
      +  "description": "In place of inventory_id: what the user calls the item (\"MacBook\", \"work laptop\"), matched to exactly one of their active items by nickname, name or model. Several matches are refused with the candidates. To rename it, set specs.nickname.",
      +  "type": "string"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "inventory_id"
      -]
    • addedOutput schema / properties / resolved_from
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "PHI-448: present when nickname found the item: the nickname sent and matched_on (nickname, name or model).",
      +  "type": "object"
      +}
  4. Changed30 schema fields changed
    • addedInput schema / properties / acquired_date
      Added value: +{
      +  "description": "YYYY-MM-DD it came into the user's life (gift, inheritance). add_inventory_item also stores it as purchase_date when none is given.",
      +  "type": "string"
      +}
    • addedInput schema / properties / acquired_from
      Added value: +{
      +  "description": "Shop or person it came from.",
      +  "type": "string"
      +}
    • addedInput schema / properties / acquisition_type
      Added value: +{
      +  "description": "purchase | gift | inheritance | …",
      +  "type": "string"
      +}
    • changedInput schema / properties / category / description
      Previous value: -"Broad type: clothing, instruments, electronics, …"New value: +"electronics | instruments | clothing | shoes | bags | accessories | jewelry | watches | collectibles | sports | health | home | tools | vehicles | furniture | other. Computers, phones and cameras are electronics; synths are instruments. Defaults to the spec_template's category, else other."
    • addedInput schema / properties / condition / enum
      Added value: +[
      +  "new",
      +  "excellent",
      +  "good",
      +  "worn",
      +  "needs_repair",
      +  "retired"
      +]
    • addedInput schema / properties / currency
      Added value: +{
      +  "description": "ISO 4217, e.g. USD, SGD. Default USD.",
      +  "type": "string"
      +}
    • addedInput schema / properties / current_value
      Added value: +{
      +  "description": "Alias for estimated_value (the stored column).",
      +  "type": "number"
      +}
    • addedInput schema / properties / estimated_value / description
      Added value: +"What it is worth now. Alias: current_value."
    • addedInput schema / properties / inventory_id / description
      Added value: +"The item id from add_inventory_item, get_inventory or search_inventory."
    • changedInput schema / properties / item_type / description
      Previous value: -"Alias for subtype."New value: +"Alias for subtype (the stored column)."
    • addedInput schema / properties / location / description
      Added value: +"Where it is kept."
    • changedInput schema / properties / name / description
      Previous value: -"What the user naturally calls the item."New value: +"What the user calls the item, e.g. \"MacBook Pro 14 (2023)\"."
    • addedInput schema / properties / notes / description
      Added value: +"Free text from the user."
    • addedInput schema / properties / purchase_date
      Added value: +{
      +  "description": "YYYY-MM-DD",
      +  "type": "string"
      +}
    • addedInput schema / properties / reference_number / description
      Added value: +"Manufacturer reference or model number (e.g. a watch reference)."
    • removedInput schema / properties / serial_number
      Removed value: -{
      -  "type": "string"
      -}
    • addedInput schema / properties / spec_template
      Added value: +{
      +  "description": "Which typed fields specs uses. Templates are listed in docs/MCP_LIFE_GRAPH.md. null (update) clears it.",
      +  "enum": [
      +    "computer.v1",
      +    "phone.v1",
      +    "camera.v1",
      +    "synth.v1"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / specs
      Added value: +{
      +  "description": "Stable facts, by the template's field names (computer.v1: nickname, manufacturer, model_name, model_identifier, year, primary_uses, capability_tags, product_family, form_factor, chip, cpu, architecture, performance_cores, efficiency_cores, total_cores, threads, gpu, gpu_cores, gpu_memory_bytes, neural_engine_cores, memory_bytes, memory, storage_devices, display, ports). Merged per key on update; null removes a key; other keys are kept as written. Only what the user or the device says, never inferred from a model name. Never device or account identifiers.",
      +  "type": "object"
      +}
    • addedInput schema / properties / specs_schema_version
      Added value: +{
      +  "description": "Layout of specs and state. Only 1 (the default).",
      +  "type": "integer"
      +}
    • addedInput schema / properties / state
      Added value: +{
      +  "description": "Changing facts, as one observation: observed_at (ISO, default now), source (e.g. user_reported, system_profiler), confidence (0-1), and values such as os { name, version, build }, available_storage_bytes, battery, security { sip, gatekeeper, filevault }, services { bluebubbles: { installed_version, running, configured, blockers, checked_at } }. Merged per key; a key observed more recently is kept. Never changes specs or notes. Never device or account identifiers.",
      +  "type": "object"
      +}
    • addedInput schema / properties / status / description
      Added value: +"wishlist | ordered | owned | listed_for_sale | sold | returned | lost | disposed | donated. Default owned. To archive, use archive_inventory_item."
    • changedInput schema / properties / subtype / description
      Previous value: -"Specific subtype (sweatshirt, jacket, guitar). Alias: item_type."New value: +"Specific kind: laptop, sweatshirt, guitar. Alias: item_type."
    • changedInput schema / properties / subtype_confidence / description
      Previous value: -"0–1 confidence when subtype is uncertain (agent_inferred)."New value: +"0-1, when the subtype is a guess."
    • changedInput schema / properties / tags / description
      Previous value: -"Replace tags array (sanitized against category mismatches)."New value: +"Replaces the tag list."
    • addedOutput schema / properties / changed_fields
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Columns set, and the specs / state keys written.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / idempotent_replay
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / inventory_id
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / item / description
      Previous value: -"Inventory item record."New value: +"Inventory item record. With specs: spec_template, specs, state (a timestamped snapshot), state_freshness and capability_summary."
    • addedOutput schema / properties / state_not_applied
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / state_note
      Added value: +{
      +  "type": "string"
      +}
  5. Changed5 schema fields changed
    • changedInput schema / properties / category / description
      Previous value: -"Broad type: clothing, shoes, bags, jewelry, …"New value: +"Broad type: clothing, instruments, electronics, …"
    • addedInput schema / properties / idempotency_key
      Added value: +{
      +  "description": "Alias for request_id.",
      +  "type": "string"
      +}
    • addedInput schema / properties / request_id
      Added value: +{
      +  "description": "Client idempotency key (retries return original result).",
      +  "type": "string"
      +}
    • changedInput schema / properties / subtype / description
      Previous value: -"Specific subtype (sweatshirt, jacket, T-shirt). Alias: item_type."New value: +"Specific subtype (sweatshirt, jacket, guitar). Alias: item_type."
    • addedInput schema / properties / subtype_confidence
      Added value: +{
      +  "description": "0–1 confidence when subtype is uncertain (agent_inferred).",
      +  "type": "number"
      +}
  6. Changed5 schema fields changed
    • addedInput schema / properties / category / description
      Added value: +"Broad type: clothing, shoes, bags, jewelry, …"
    • addedInput schema / properties / item_type
      Added value: +{
      +  "description": "Alias for subtype.",
      +  "type": "string"
      +}
    • addedInput schema / properties / name / description
      Added value: +"What the user naturally calls the item."
    • addedInput schema / properties / subtype
      Added value: +{
      +  "description": "Specific subtype (sweatshirt, jacket, T-shirt). Alias: item_type.",
      +  "type": "string"
      +}
    • addedInput schema / properties / tags
      Added value: +{
      +  "description": "Replace tags array (sanitized against category mismatches).",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  7. Changed13 schema fields changed
    • changedInput schema / additionalProperties
      Previous value: -trueNew value: +false
    • addedInput schema / properties / brand
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / category
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / condition
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / estimated_value
      Added value: +{
      +  "type": "number"
      +}
    • addedInput schema / properties / location
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / model
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / name
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / notes
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / purchase_price
      Added value: +{
      +  "type": "number"
      +}
    • addedInput schema / properties / reference_number
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / serial_number
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / status
      Added value: +{
      +  "type": "string"
      +}
  8. Added

TDQS

A4.8/5.0
Behavior5/5

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

Adds substantial behavior beyond annotations: omitted fields are untouched, specs merge per key with null removal, state is recorded as an observation and never changes specs or notes, newer observations win, and status changes move an item out of the active list. It also discloses cost and API-key requirements.

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

Conciseness4/5

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

The purpose is front-loaded and the dense semicolon-heavy structure fits a complex update tool, but the paragraph is long and could be slightly more scannable. Most clauses earn their place by carrying operational detail.

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

Completeness5/5

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

Given the output schema, annotations, and high schema coverage, the description is complete for correct invocation. It covers lookup, partial-update semantics, merge behavior, status side effects, archiving alternative, and cost/auth constraints.

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

Parameters4/5

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

Schema coverage is already 86%, so the baseline is 3, but the description adds cross-parameter meaning: nickname matching behavior, specs merge semantics, state observation semantics, spec_template switching or clearing, and status effects. It does not individually clarify every one of the 29 parameters, but it meaningfully enriches the most complex ones.

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

Purpose5/5

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

States a specific verb and resource: 'Patch one owned Inventory item.' It clearly distinguishes the tool from archive_inventory_item and explains the two lookup paths, inventory_id or nickname, so an agent can identify the operation immediately.

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

Usage Guidelines5/5

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

Explicitly says when to use nickname instead of looking up an id, what happens on multiple matches, and when to use the sibling archive_inventory_item instead. It also gives a clear exclusion: never add device or account identifiers.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.