Skip to main content
Glama

Propose updates

propose_updates
Read-only

Read matched records, schema and history; assemble ONE complete plan of records, people, links, activity and requested tasks, then call review_proposed_updates without preliminary confirmation. Use create keys and {$ref:key} links; never save parents for ids or call write tools directly. Ask once in app OR chat; corrections replace the pending plan via replaces_receipt. After saving, propose only new changes to returned records. Reuse matched_entities ids/state/history without re-fetching get_context/search_*; ignore junk and never invent ids. Resolve entity_resolution ambiguities before review. For stored work pass source_touch_id; pinned:true links outrank heuristic matches. Pass source candidate_names for lowercase/uncased names.

When to use: After any meaningful conversation, email, or note about a relationship. Pass the text in text.

Example: Extract CRM changes from these call notes.

Input Schema

NameRequiredDescriptionDefault
textNoAny source text: a transcript, an email, meeting notes, or a freeform request.
transcriptNoDeprecated alias for `text`, kept for the old transcript-only signature; used only when `text` is omitted — prefer `text`.
source_typeNoWhat the source text is (transcript, email, note, request, other); defaults to transcript and is echoed back as source_type.
candidate_namesNoEntity names copied from the source, especially lowercase or uncased-script names. These are match candidates, not authoritative identities; names absent from the source are ignored.
source_touch_idNoStored touch id for a recorded meeting or logged call; pins its linked records into the match. Use source_touch.participants for captured names/emails. Text is optional if this touch has a stored transcript, returned in full as source_touch.transcript.

Output Schema

NameRequiredDescriptionDefault
guidanceNo
workspaceNo
source_typeNo
source_touchNo
source_lengthNo
recent_historyNo
source_excerptNo
matched_entitiesNo
entity_resolutionNo
matched_account_statesNo
extracted_candidate_namesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / source_touch_id / description
      Previous value: -"When the text is the transcript/summary of a stored touch (recorded meeting, logged call), its touch id — pins the touch's linked records into the match."New value: +"Stored touch id for a recorded meeting or logged call; pins its linked records into the match. Use source_touch.participants for captured names/emails. Text is optional if this touch has a stored transcript, returned in full as source_touch.transcript."
  2. Changed1 schema field changed
    • removedInput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
  3. Changed1 schema field changed
    • removedInput schema / properties / source_touch_id / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
  4. Changed24 schema fields changed
    • removedOutput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • removedOutput schema / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / entity_resolution / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / entity_resolution / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / matched_account_states / items / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / matched_account_states / items / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / matched_entities / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / matched_entities / properties / accounts / items / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / matched_entities / properties / accounts / items / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / matched_entities / properties / contacts / items / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / matched_entities / properties / contacts / items / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / matched_entities / properties / opportunities / items / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / matched_entities / properties / opportunities / items / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / matched_entities / properties / records / items / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / matched_entities / properties / records / items / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / recent_history / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / recent_history / properties / notes / items / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / recent_history / properties / notes / items / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / recent_history / properties / touches / items / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / recent_history / properties / touches / items / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / source_touch / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / source_touch / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / workspace / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / workspace / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
  5. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the read-only and non-destructive annotations, it discloses important workflow behavior: the plan should be assembled once and sent to review without preliminary confirmation; corrections replace the pending plan via replaces_receipt; matched_entities data should be reused without re-fetching; junk should be ignored and ids never invented. It also explains source_touch_id pinning, that pinned links outrank heuristic matches, and that candidate_names are match candidates rather than authoritative identities.

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

Conciseness3/5

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

The core action is front-loaded, and nearly every sentence contains operational guidance, but the description is a dense run-on paragraph mixing workflow rules, ID conventions, matching heuristics, and usage triggers. It would be more effective if the 'When to use' guidance were moved forward and the technical instructions were separated into clearer clauses.

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

Completeness4/5

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

Given the complex planning workflow, the 100% schema coverage, the annotations, and the output schema, the description is largely complete: it covers the review handoff, pending-plan replacement, id reuse, ambiguity resolution, and source-touch pinning. It leaves some gaps around the exact boundary with commit_reviewed_updates and around what happens when there is nothing to propose.

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 100%, so the baseline is 3, but the description adds meaningful usage guidance for parameters: pass source text in `text`, use source_touch_id for stored work, and pass candidate_names for lowercase or uncased names. It does not describe the deprecated `transcript` alias, but the schema covers that detail.

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 states a specific verb and resource: read matched records/schema/history, assemble one complete plan of records, people, links, activity, and requested tasks, then hand off to review_proposed_updates. It clearly distinguishes this from directly calling write tools and from the subsequent review step, so an agent can tell what this tool is for without opening the schema.

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?

It gives an explicit trigger ('After any meaningful conversation, email, or note about a relationship') and instructs the agent to pass text in `text`, plus says to call review_proposed_updates without preliminary confirmation. It also says to propose only new changes after saving and not to call write tools directly, but it never explicitly contrasts this with update_record or commit_reviewed_updates, leaving part of the routing to inference.

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.

Resources