Browse the docs

Tools: Suggestions

suggest_change

Propose a change for a person to approve instead of making it. Use it when you aren't sure a fact is right, when the change is consequential (a deal's stage or amount), or when your access only allows suggesting. Give the operation you would call and its exact input, a one-sentence reason, and the evidence you saw. The input is validated now; nothing changes until someone approves.

GroupSuggestions
Scopecrm:suggest (included in crm:write)
Who can call itAgents and people with this scope.
KindWrite. Recorded in the change history with who made it.
RetriesPass idempotency_key (MCP) or the Idempotency-Key header (REST); a retry with the same key within 24 hours returns the first result.
WidgetIn hosts that support MCP Apps, the result shows where the write landed (the changed record, the pipeline, or the updated list).

Parameters

ParameterTypeRequiredNotes
operationupsert_company \upsert_person \create_deal \
inputobjectyesExactly what you would pass to that operation.
reasonstringyesWhy, in one or two sentences.. max 2000 characters
evidencearray of object { source, excerpt?, url? }nodefault [], max 10 items
evidence[].sourcestringyesWhere you saw it, e.g. 'email from jo@acme.com, 3 Oct' or 'acme.com/about'.. max 200 characters
evidence[].excerptstringnoThe words that support the change, quoted.. max 2000 characters
evidence[].urlURLno

Call it over MCP

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "suggest_change",
    "arguments": {
      "operation": "upsert_company",
      "input": {},
      "reason": "…",
      "idempotency_key": "log-call-acme-2026-11-02"
    }
  }
}

Send it to https://api.tandemcrm.app/mcp (streamable HTTP). Most people never write this by hand: their agent picks the tool from its description.

Call it over REST

curl -X POST https://api.tandemcrm.app/v1/ops/suggest_change \
  -H "Authorization: Bearer $TANDEM_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: log-call-acme-2026-11-02" \
  -d '{"operation":"upsert_company","input":{},"reason":"…"}'

Input schema

The JSON Schema the MCP server advertises for this tool (over MCP it also accepts idempotency_key):

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "operation": {
      "type": "string",
      "enum": [
        "upsert_company",
        "upsert_person",
        "create_deal",
        "update_deal",
        "set_deal_contact",
        "set_custom_fields",
        "log_activity",
        "record_signal",
        "create_task"
      ]
    },
    "input": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "Exactly what you would pass to that operation."
    },
    "reason": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "Why, in one or two sentences."
    },
    "evidence": {
      "default": [],
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "Where you saw it, e.g. 'email from jo@acme.com, 3 Oct' or 'acme.com/about'."
          },
          "excerpt": {
            "description": "The words that support the change, quoted.",
            "type": "string",
            "maxLength": 2000
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "source"
        ]
      }
    }
  },
  "required": [
    "operation",
    "input",
    "reason"
  ]
}

This page as Markdown · All docs in one file