Skip to main content
Glama

Get contacts

get_contacts
Read-only

Search and list your contacts (the "Contacts" page, /app/contacts). In LinkedNav a contact and a lead are the same record; the same records appear inside a campaign as its "Prospects" — pass campaignId to list a campaign's prospects. Supports text search, list/campaign filtering, Intent Score, connected, opportunity, and follow-up filters.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
limitNoMax contacts to return (default 50, max 500). Use page to paginate.
listIdNoFilter to a specific list ID. Obtain list IDs via get_lists.
searchNoSearch by name, company, title, or email
hasEmailNoFilter contacts that have or do not have an email
hasPhoneNoFilter contacts that have or do not have a phone number
icpScoreNoExact Intent Score (1-10). Shown in the app as the "Intent Score" column (Hot=8-10, Warm=5-7, Low=1-4).
connectedNoFilter leads that are connected in at least one campaign
campaignIdNoFilter to a campaign's prospects (contacts) by campaign ID
minIcpScoreNoMinimum Intent Score (1-10) — use this for "show my hot/high-intent leads". Shown in the app as the "Intent Score" filter: Hot=8-10, Warm=5-7, Low=1-4.
opportunityNoFilter leads flagged as Opportunities (the "Opportunity" badge in Contacts/Unibox, set by campaign auto-reply analysis)
followUpSentNoFilter leads that have at least one campaign follow-up sent
invitedSinceNoOnly people a campaign sent a connection invite to at or after this time (ISO date or date-time, e.g. "2026-10-18" or "2026-10-18T00:00:00-04:00"), newest invite first — use it for "who did I invite today / this week". With campaignId, invites from that campaign.
sourcePostUrlNoFilter contacts/leads imported from a specific LinkedIn post URL
signalEngagerTypeNoFilter social/signal leads by commenter or reactor source

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / invitedSince
      Added value: +{
      +  "description": "Only people a campaign sent a connection invite to at or after this time (ISO date or date-time, e.g. \"2026-10-18\" or \"2026-10-18T00:00:00-04:00\"), newest invite first — use it for \"who did I invite today / this week\". With campaignId, invites from that campaign.",
      +  "type": "string"
      +}
  2. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: the aliasing of contact/lead/prospect records and how campaignId changes what the result set represents. It omits pagination/result-shape behavior, which the schema covers for page/limit.

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?

Three sentences, front-loaded with the core action and surface, then the disambiguating alias rule, then the filter summary. No redundancy and every sentence carries a distinct payload.

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?

For a 15-parameter read tool with zero required params, full schema coverage, and annotations covering safety, the description supplies the one thing structured fields cannot: the record-aliasing model. It does not explain result shape or pagination semantics, but with no output schema that is a minor residual gap rather than a blocker.

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?

Schema description coverage is 100% and each parameter already carries its own explanation, including examples and interpretation hints (Intent Score bands, invite timing). The description only summarizes filter categories at a high level, adding little syntax or value beyond what the schema provides, so baseline 3 applies.

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?

States a specific verb (search and list) plus resource (contacts) and pins it to the concrete app surface (/app/contacts). The clarification that a contact, lead, and campaign 'Prospect' are the same record is genuinely disambiguating domain knowledge that an agent cannot infer from the schema or sibling names.

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?

Gives clear context for use and explicitly routes the campaign-prospect case to the campaignId parameter, and enumerates the supported filter families. It never names the close alternatives (get_contact, get_list_contacts, count_people, search_people) or states when not to use this tool, so it stops short of full routing guidance.

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.