Skip to main content
Glama

YouSpot

Import contacts

import_contacts_from_file

Import every contact or company from a file the user uploaded — a CSV or spreadsheet export, a .vcf of contacts, or a zip. Use this whenever they want more than a couple of records created from a file: it reads the whole file at once, so never read a contact list with read_file and create the records one at a time. Find the file first with search_graph_objects (type 'file') and pass its object_id, or pass part of the filename as name. Pass a description of what the file holds when the user gave one — it is what tells the column mapper that 'Ref' is a phone number.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoPart of the filename, when the object_id is unknown.
object_idNoThe file's graph object_id (from search_graph_objects).
descriptionNoThe user's own description of what the file holds.
target_typeNoWhat each row is. Defaults to contact.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Beyond the minimal readOnlyHint=false annotation, the description adds meaningful behavioral context: the tool reads the whole file at once and uses a column mapper that is influenced by the description parameter. It doesn't cover failure modes or return value behavior, but the essential behavioral traits for invoking it correctly are present.

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?

The description is dense but not padded; each sentence contributes purpose, usage timing, lookup workflow, or parameter behavior. It could be tightened slightly, but it is well structured and front-loaded with the core purpose.

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

Completeness4/5

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

Given the fully documented schema, no output schema, and minimal annotations, the description covers the important operational context: file types, when to use, how to identify the file, and how to supply a helpful description. A small gap is lack of guidance about duplicate handling or post-import confirmation, but it is not critical for selecting and invoking the tool correctly.

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?

The schema already documents all four parameters with 100% coverage, so the baseline is 3. The description adds value by clarifying when to pass object_id versus name and by explaining that the description parameter feeds the column mapper, which is genuinely helpful beyond the schema.

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 opens with a specific verb and resource: 'Import every contact or company from a file the user uploaded.' It also names supported file types and explicitly distinguishes this tool from reading a contact list with read_file and creating records one at a time, making sibling differentiation clear.

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?

It explicitly says when to use the tool ('whenever they want more than a couple of records created from a file') and when not to use an alternative approach ('never read a contact list with read_file and create the records one at a time'). It also gives a concrete workflow: find the file with search_graph_objects and pass object_id, or pass part of the filename as name.

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.

TDQS

A4/5.0
Disambiguation5/5

Each tool targets a distinct resource and action, with clear boundaries even within overlapping domains like LinkedIn (search vs. free-form query vs. profile vs. summary) and graph deletion (soft single, bulk soft, permanent single). Descriptions explicitly cross-reference related tools to prevent misselection.

Naming Consistency4/5

The vast majority follow a consistent verb_noun pattern (get_, list_, search_, create_, delete_, etc.). A few noun-phrase exceptions like linkedin_analytics, mutual_connections, similar_objects, and what_needs_attention deviate slightly, but they are still descriptive and do not create confusion.

Tool Count2/5

At 66 tools this is far beyond the 25+ threshold considered too many, even though the server covers many integration domains. Each domain has a coherent subset, but the overall surface is heavy for agents to navigate and would benefit from consolidation or namespacing.

Completeness4/5

The set provides deep read/search coverage across Gmail, Slack, Calendar, LinkedIn, HubSpot, Obsidian, Twitter, and a graph store, with core write operations for calendar, drafts, Slack, and graph objects. Minor gaps exist—notably no calendar delete, no direct Gmail send to third parties (only drafts), and no LinkedIn post/message actions—but these appear deliberate and do not block typical workflows.