Skip to main content
Glama
nubiia-dev
by nubiia-dev

list_contacts

Fetch Holded contacts with cursor-based pagination, optional field projection, and summary-only responses to reduce payload size.

Instructions

List contacts (Holded API v2). Cursor-paginated: pass the previous response nextCursor as cursor. Response fields are snake_case; amounts are strings with decimal comma.

Input Schema

NameRequiredDescriptionDefault
limitNoMax items per page (server-paginated; use limit to control page size)
cursorNoCursor from a previous response nextCursor
fieldsNoProject only these fields per item (e.g. ["id", "name", "email"]). Reduces response size.
summaryNoReturn only count and pagination metadata without items (default: false)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv2.0.3
    • addedInput schema / properties / cursor
      Added value: +{
      +  "description": "Cursor from a previous response nextCursor",
      +  "type": "string"
      +}
    • removedInput schema / properties / customId
      Removed value: -{
      -  "description": "Filter by custom ID(s)",
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • changedInput schema / properties / fields / description
      Previous value: -"Select specific fields to return (e.g., [\"id\", \"name\", \"email\"]). Reduces response size by 70-90%. If not provided, returns default fields: id, customId, name, email"New value: +"Project only these fields per item (e.g. [\"id\", \"name\", \"email\"]). Reduces response size."
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum number of items to return (default: 50, max: 500)"New value: +"Max items per page (server-paginated; use limit to control page size)"
    • removedInput schema / properties / mobile
      Removed value: -{
      -  "description": "Filter by exact mobile number match",
      -  "type": "string"
      -}
    • removedInput schema / properties / page
      Removed value: -{
      -  "description": "Page number for pagination (optional)",
      -  "type": "number"
      -}
    • removedInput schema / properties / phone
      Removed value: -{
      -  "description": "Filter by exact phone number match",
      -  "type": "string"
      -}
  2. First observedv1.6.0

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose real behavioural traits: cursor-based pagination, snake_case response fields, and amounts serialised as strings with decimal comma. It still omits ordering, default page size, and any error/permission behaviour, so it stops short of full disclosure.

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 short sentences, none wasted: identity first, pagination mechanic second, response-format caveat third. Front-loaded and appropriately sized.

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?

No output schema and no annotations mean the description must cover return shape, and it does flag field casing and amount formatting. It is slightly thin on what a contact record contains and has no note on default limit, but overall sufficient to call the tool correctly.

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%, so limit, cursor, fields and summary are already documented in structured data; the description only restates the cursor contract. Baseline 3 applies since the schema does the heavy lifting.

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 verb and resource ('List contacts') plus the backing API version, which is enough to distinguish it from create_contact/get_contact/update_contact/delete_contact by name alone. It does not explicitly address near-neighbours like list_contact_groups or list_contact_attachments, but the resource is unambiguous.

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 self-evident for a list tool, and the description gives procedural guidance ('pass the previous response nextCursor as cursor'). However, it offers no explicit when-to-use/when-not guidance versus related siblings such as list_contact_attachments or list_contact_groups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools