Skip to main content
Glama

nitro_import_contacts

Inline max 100 contacts returns contact_ids. CSV upload/finalize; contact list read-back requires options.list_ids. Limits: status guardrail or GET /v1/my/imports/spec. New contacts with email subscribe both channels; phone-only do not. Existing subscriptions stay unchanged; added email subscribes, added phone does not. CSV resource=leads creates inventory without verification or consent; read with nitro_query(entity:leads,filters.import_id).

Input Schema

NameRequiredDescriptionDefault
parserNodefault
uploadNoReserve upload; PUT CSV; finalize signed_id.
columnsNo
dry_runNo
optionsNoImport options.
recordsNo
resourceNoInline contacts or CSV contacts/leads.contacts
import_idNo
signed_idNoUploaded CSV signed ID.
idempotency_keyNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / options / description
      Previous value: -"Import options, including list_ids."New value: +"Import options."
    • addedInput schema / properties / options / properties / start_flows
      Added value: +{
      +  "type": "boolean"
      +}
  2. First observed

TDQS

B3.4/5.0
Behavior4/5

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

Beyond the annotations, it discloses real side effects: new contacts with email subscribe both channels while phone-only do not, existing subscriptions stay unchanged, and CSV resource=leads creates unverified inventory. That is valuable context the annotations don't provide. It stops short of explaining dry_run semantics or idempotency behavior, keeping it out of the top band.

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

Conciseness2/5

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

It is compact but written as telegraphic fragments ('CSV upload/finalize', 'Limits: status guardrail or GET /v1/my/imports/spec') with no clear lead sentence, opening instead on a second-order detail (inline max 100). Density comes at the cost of readability.

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

Completeness3/5

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

For a 10-parameter, nested, no-output-schema import tool, it covers the two main workflows and side effects but omits dry-run behavior, idempotency, and what CSV finalize returns. Adequate but with clear holes an agent would want filled.

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

Parameters3/5

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

With only 40% schema coverage across 10 parameters, the description partially compensates by explaining options.list_ids, the resource enum, the upload flow and the 100-record inline cap. It leaves dry_run, idempotency_key, parser, columns, and import_id unexplained, so meaningful gaps remain.

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?

The description identifies the operation and its two modes (inline records vs CSV upload/finalize) and the lead-vs-contact resource distinction, which an agent can map onto the tool name. It lacks a clean front-loaded 'Import contacts' statement, but the specific mechanics still distinguish it from siblings like nitro_search_contacts.

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?

It gives some conditional guidance ('contact list read-back requires options.list_ids', 'read with nitro_query(entity:leads,filters.import_id)') and points at GET /v1/my/imports/spec for limits. However, it never says when to pick this over nitro_ingest or nitro_manage_audience, so sibling routing is only implied.

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