Skip to main content
Glama

Dayze — Life Context

Update Contact (CRM write)

update_person

MUTATES one owned Dayze contact by person_id. A context_tags-only patch is supported; send the full desired tag array (a repeat is a no-op). For personal-write OAuth send request_id, a unique string for each new write; reuse it for an exact retry. Fields left out are untouched. undo_contact_change(change_id) reverts a change. Requires context.write; share tokens cannot write. ($0.10; API key required)

Input Schema

NameRequiredDescriptionDefault
nameNoRename contact (also refreshes URL slug). Prefer this over create+merge for spelling fixes
tierNoRelationship priority. VIP stays in inner_circle even when not favorited
notesNoReplaces people.notes (does not append). Empty or null clears
walletsNoPHI-930: full list of ENS (.eth) / SNS (.sol) names and/or addresses for this contact. Merged into social_handles (legacy ens/ens_address kept); empty array clears wallet keys only.
birthdayNoYYYY, YYYY-MM, YYYY-MM-DD, or MM-DD / --MM-DD (year unknown; 02-29 ok). Null/empty clears
person_idYesUUID of a person the authenticated user owns
request_idNoRequired on personal-write OAuth. Unique for a new write; reuse for an exact retry.
is_favoriteNoFavorite flag. Favorites (and VIP) appear in get_context_pack inner_circle
context_tagsNoContexts such as Work, Personal, Family, plus custom tags
relationshipNoRelationship label (friend, sister, …). Empty or null clears
relationshipsNoWho they are to the user, in primary-first order (for example Friend + Client)
idempotency_keyNoAlias for request_id.
preserve_old_name_as_aliasNoWhen renaming, keep the previous name as a former_name alias (default true)

Output Schema

NameRequiredDescriptionDefault
hintNoWhere the not_applied fields are changed instead (the Dayze profile).
personYesA Dayze person or contact record.
accountNoThe Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.
changedYesChanged fields with before and after values.
is_selfNoTrue when the person is the user's own card (Me).
change_idNoPass to undo_contact_change to revert this change, birthday and birthday_precision included.
provenanceNoWhich connector wrote the record and which connected Dayze account received it.
not_appliedNo
former_name_aliasNoAfter a rename that keeps the old name (preserve_old_name_as_alias, default true): alias, saved, and reason when it could not be kept.
life_state_rebuiltYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedOutput schema / properties / hint
      Added value: +{
      +  "description": "Where the not_applied fields are changed instead (the Dayze profile).",
      +  "type": "string"
      +}
    • addedOutput schema / properties / is_self
      Added value: +{
      +  "description": "True when the person is the user's own card (Me).",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / not_applied
      Added value: +{
      +  "items": {
      +    "description": "On Me, a profile-mirrored field (name, birthday) that was not saved.",
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / wallets
      Added value: +{
      +  "description": "PHI-930: full list of ENS (.eth) / SNS (.sol) names and/or addresses for this contact. Merged into social_handles (legacy ens/ens_address kept); empty array clears wallet keys only.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "address": {
      +        "description": "Optional raw 0x or Solana address",
      +        "type": "string"
      +      },
      +      "chain": {
      +        "enum": [
      +          "eth",
      +          "base",
      +          "sol"
      +        ],
      +        "type": "string"
      +      },
      +      "name": {
      +        "description": "ENS or SNS name (e.g. zzuper.eth)",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / request_id / description
      Previous value: -"Client idempotency key (retries return original result)."New value: +"Required on personal-write OAuth. Unique for a new write; reuse for an exact retry."
  4. 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"
      +}
  5. Changed1 schema field changed
    • addedOutput schema / properties / change_id
      Added value: +{
      +  "description": "Pass to undo_contact_change to revert this change, birthday and birthday_precision included.",
      +  "type": "string"
      +}
  6. Changed2 schema fields changed
    • changedInput schema / properties / birthday / description
      Previous value: -"YYYY, YYYY-MM, YYYY-MM-DD, or MM-DD / --MM-DD (year unknown). Null/empty clears"New value: +"YYYY, YYYY-MM, YYYY-MM-DD, or MM-DD / --MM-DD (year unknown; 02-29 ok). Null/empty clears"
    • addedOutput schema / properties / former_name_alias
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "After a rename that keeps the old name (preserve_old_name_as_alias, default true): alias, saved, and reason when it could not be kept.",
      +  "type": "object"
      +}
  7. Changed2 schema fields changed
    • addedInput schema / properties / context_tags
      Added value: +{
      +  "description": "Contexts such as Work, Personal, Family, plus custom tags",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / relationships
      Added value: +{
      +  "description": "Who they are to the user, in primary-first order (for example Friend + Client)",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  8. Changed1 schema field changed
    • addedInput schema / properties / preserve_old_name_as_alias
      Added value: +{
      +  "description": "When renaming, keep the previous name as a former_name alias (default true)",
      +  "type": "boolean"
      +}
  9. Changed2 schema fields changed
    • changedInput schema / properties / birthday / description
      Previous value: -"YYYY, YYYY-MM, or YYYY-MM-DD. Null/empty clears"New value: +"YYYY, YYYY-MM, YYYY-MM-DD, or MM-DD / --MM-DD (year unknown). Null/empty clears"
    • addedInput schema / properties / name
      Added value: +{
      +  "description": "Rename contact (also refreshes URL slug). Prefer this over create+merge for spelling fixes",
      +  "type": "string"
      +}
  10. Changed2 schema fields changed
    • 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"
      +}
  11. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "changed": {
      +      "additionalProperties": true,
      +      "description": "Changed fields with before and after values.",
      +      "type": "object"
      +    },
      +    "life_state_rebuilt": {
      +      "type": "boolean"
      +    },
      +    "person": {
      +      "additionalProperties": true,
      +      "description": "A Dayze person or contact record.",
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "person",
      +    "changed",
      +    "life_state_rebuilt"
      +  ],
      +  "type": "object"
      +}
  12. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare the write/safety profile; the description adds substantial behavioral context beyond them: partial-patch semantics (fields left out are untouched), tag no-op on repeat, idempotency/retry via request_id, the revert path through undo_contact_change, the context.write scope requirement, share-token exclusion, and cost/API-key needs.

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?

Front-loads the core mutation fact and packs distinct facts per clause with little waste. It is somewhat dense (auth, idempotency, undo, and cost all in one block), but each sentence carries unique 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?

An output schema exists so return values need not be explained, and the description covers the remaining agent needs for a mutation tool: patch semantics, idempotency, permissions, revert path, and cost. Nothing required 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.

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, but the description adds operational meaning beyond the schema: context_tags must be sent as the full desired array (repeat is a no-op) and omitted fields are untouched. request_id semantics are largely duplicated from the schema, so this is a modest lift above baseline.

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?

Opens with a specific verb and resource ("MUTATES one owned Dayze contact") plus the scoping key (by person_id), which cleanly separates it from create_person, delete_person, and merge_people in the sibling list.

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?

Gives concrete operating conditions: context_tags-only patch is allowed, request_id is needed on personal-write OAuth, and share tokens cannot write. It also routes the agent to undo_contact_change for reverts, though it does not explicitly contrast against merge_people or add_person_alias.

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.