Skip to main content
Glama

interaction_upsert

Idempotent

Create-or-update a interaction keyed on source_ref.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "contact_id": "<contact_id>",
      "interaction_type": "<interaction_type>",
      "summary": "<summary>",
      "source_ref": "<source_ref>"
    },
    "name": "interaction_upsert"
  }
}

Input Schema

NameRequiredDescriptionDefault
summaryYes
contact_idYes
source_refYes
occurred_atNo
interaction_typeYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=false and idempotentHint=true; the description usefully explains *why* it is idempotent (source_ref is the identity key), which is real added context. It says nothing about merge semantics on match (which fields overwrite, what is preserved) or what comes back (created vs updated), leaving real behavioral gaps for a mutation.

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?

A single front-loaded sentence with the identity key placed where it matters and no filler. It is efficient, though the terseness comes at the cost of the missing semantics noted elsewhere rather than being a model of density.

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

Completeness2/5

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

This is a 5-parameter mutation with no output schema and no parameter documentation; the description covers the key but not required-field obligations, the effect of omitting occurred_at, or the shape of the result (does the caller get the record, a created/updated flag?). Too much is left for the agent to guess.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning, and it only identifies source_ref as the key. contact_id, summary, interaction_type and especially occurred_at (an integer with no unit, timezone, or default-when-omitted guidance) remain completely unexplained in both schema and description.

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

Purpose4/5

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

States a specific operation (create-or-update) on a specific resource (interaction) plus the identity key (source_ref), which distinguishes it from interaction_create and interaction_read by behavior. It does not explicitly name those siblings, but the 'upsert keyed on' phrasing makes the difference inferable.

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

Usage Guidelines3/5

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

Usage is only implied: the mention of keying on source_ref hints that this is the idempotent write path when an external reference exists. It never says 'use this instead of interaction_create when you have a source_ref' or what happens if the key is new versus existing, so the agent must infer the choice between the two write tools.

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