Skip to main content
Glama

Propose updates

propose_updates
Read-only

Flagship source-to-updates flow. Pass ANY source text — a transcript, an email, notes, or a freeform request describing changes — and get context to reason over: matched accounts/contacts/opportunities, the active workspace schema, and recent history for each matched record. USE THE CONTEXT to assemble ATOMIC proposed updates, then call review_proposed_updates with ALL of them for field-by-field approval (it returns a review receipt); after the user chooses, call commit_reviewed_updates with that receipt and only the selected proposal IDs. matched_entities ALREADY resolves the people/companies/deals in the source (with ids, state and recent history) — reference those ids directly; do NOT call get_context or the search_* tools to re-find records you already have here. Ignore junk candidate names (filler words, roles, the rep/vendor). When the source came from a STORED touch (a recorded meeting's transcript or a logged call read from Capable), ALSO pass source_touch_id: the touch's own linked account/contact/opportunity are pinned into matched_entities (pinned:true) and are the authoritative subject — trust them over name-matched rows when the two disagree, and use source_touch.participants' captured emails/names, never the transcript's spellings, when proposing new contacts. Do NOT call write tools yourself: that skips the user's approval. Never invent ids. For lowercase names or scripts without capitalization, supply candidate_names copied from the source. Entity matching is heuristic; entity_resolution reports unresolved and ambiguous candidates — resolve ambiguity before proposing a write. text may be omitted when source_touch_id names a touch with a stored transcript (returned in full as source_touch.transcript).

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

Example: [paste a call transcript, email, or notes and ask] Pull out anything that needs to be updated in the CRM.

Input Schema

TableJSON 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_idNoWhen 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.

Output Schema

TableJSON 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. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces and extends this: proposing is the read-only step, writes are gated behind review/commit. It discloses non-obvious behavior beyond annotations — that matched_entities already resolves and includes ids/state/history, that source_touch_id pins authoritative records (pinned:true) which should override name-matched rows, and that entity matching is heuristic with unresolved/ambiguous candidates reported by entity_resolution.

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?

It is front-loaded with the core purpose and the workflow sequence, and most sentences carry distinct operational information (precedence rules, don't-re-find warnings, deprecation of the transcript alias). However it is a dense wall of text with heavy capitalization emphasis that could be tightened without losing meaning.

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?

With an output schema present, return values need not be explained, and the description still covers the full flow, downstream handoffs, edge cases (stored-touch transcripts, ungrounded ids), and the distinction between this tool and the write tools. Nothing an agent needs 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. The description adds genuine meaning beyond the schema: it explains source_touch_id's pinning/precedence semantics, why candidate_names should be supplied for lowercase/uncased-script names, and that text may be omitted when source_touch_id names a touch with a stored transcript (returned as source_touch.transcript).

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+resource and scope up front: a 'source-to-updates flow' that takes ANY source text and returns reasoning context (matched accounts/contacts/opportunities, workspace schema, recent history). It clearly distinguishes itself from siblings review_proposed_updates, commit_reviewed_updates, get_context, and the search_* tools.

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?

Explicit when-to-use ('After any meaningful conversation, email, or note about a relationship'), plus explicit when-not and alternatives: do NOT call get_context or search_* to re-find records already resolved, and do NOT call write tools yourself. It names the downstream sequence (review_proposed_updates with ALL proposals, then commit_reviewed_updates with the receipt and selected IDs).

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