Skip to main content
Glama

Save many contacts

crm_save_contacts
Idempotent

Create or update up to 100 contacts in one call, each exactly like crm_save_contact (matched by email; without an email a new contact is made). Each one succeeds or fails on its own; the reply lists which, and you pay only for the ones saved. Costs $0.01 per record saved; nothing if none are found.

Input Schema

NameRequiredDescriptionDefault
contactsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond annotations, the description discloses important behavioral traits: per-record independent success/failure, a reply listing which records succeeded, billing only for saved records, a concrete cost of $0.01 per saved record, and no charge if none are found. It also explains the email-matching upsert logic and the no-email-means-create rule.

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

Conciseness5/5

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

The description is three tight sentences, front-loaded with the main action and limit, followed by failure semantics and cost. Every sentence adds distinct value with no filler or repetition.

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?

For a batch upsert tool with annotations covering safety and idempotency, the description supplies the essential missing context: maximum batch size, matching logic, per-record failure behavior, and cost model. Return behavior is summarized by 'the reply lists which', which is sufficient without an output schema.

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?

With schema description coverage at 0% for the top-level parameter, the description compensates by stating the array is limited to 100 contacts and that each is processed like crm_save_contact, matched by email, with new contacts created when no email is present. It does not detail the nested field semantics, but the schema itself enumerates those fields and types.

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 (create or update) and resource (up to 100 contacts in one call) and explicitly distinguishes itself from the singular sibling by saying 'each exactly like crm_save_contact'. An agent can immediately tell this is the bulk upsert variant.

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 references the singular sibling ('each exactly like crm_save_contact') and implies bulk usage via 'up to 100 contacts in one call', giving clear context for when to use it. However, it stops short of explicitly saying when to prefer this over crm_save_contact or crm_update_contact for a single contact.

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