Skip to main content
Glama

List contacts

list_contacts
Read-onlyIdempotent

Search and list contacts from MailFathom's address book by name or address, filter by origin, and paginate with a cursor. Reads local data only.

Instructions

Lists people from MailFathom's own contact book, ordered by name, with the addresses each of them uses. Reads local state only: it never contacts a mail server and changes nothing. Narrow the page with search, which matches text anywhere in a name or an address without regard to case, and with origin. Returns at most 200 contacts per call and 50 by default, with an opaque cursor for the next page; there is no way to ask for the whole book in one call. To resolve one address to the person using it, call get_contact with that address rather than searching for it here.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cursorNoThe nextCursor value from a previous call, to read the following page. It stays valid when search or origin changes, because the book is walked in one order whatever narrows it.
originNoReturn only contacts of this origin: asserted for the people somebody wrote down, collected for the addresses this deployment picked up from mail that arrived. Omit to list both.
searchNoReturn only contacts carrying this text in their name or in one of their addresses. Matched anywhere in the value and without regard to case, up to 320 characters. Wildcard characters match themselves. Omit to list the whole book, which an empty string does too.
pageSizeNoHow many contacts to return, from 1 to 200. Omit to take the default of 50. A value outside the range is refused rather than clamped.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
contactsYesThe contacts on this page, ordered by name and then by identifier. Empty when nobody matched.
nextCursorNoAn opaque cursor for the next page. Pass it back unchanged as cursor. Null means this page ended the walk. It stays valid when the search or the origin filter changes, because the book is walked in one order whatever narrows it, and no filter makes continuing from it skip or repeat a contact. A rename does: the cursor is a position in the order rather than a snapshot of it, so somebody renamed between two pages may be served twice or not at all.
Install Server

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, but the description adds valuable context beyond that: 'Reads local state only: it never contacts a mail server and changes nothing.' It also discloses pagination limits (max 200, default 50) and the opaque cursor behavior, which are not inferable from annotations.

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 a single paragraph that front-loads the purpose, then covers behavioral traits, pagination, and alternatives. Every sentence earns its place—no fluff or repetition. It is detailed but appropriately sized for a multi-parameter paginated list tool.

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?

Given the tool's complexity (4 params, pagination, search semantics, origin filter) and the presence of an output schema, the description covers all essential aspects: read-only local state, ordering, pagination bounds, search and origin filtering, and the alternative to use get_contact for single-address resolution. It is complete without needing to explain return values the schema already covers.

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 input schema already describes all four parameters in detail (100% coverage), so the baseline is 3. The description adds extra context by explaining how search and origin narrow the page, and mentions the default page size. It does not describe the cursor or pageSize in depth, but the schema does that well, so the description provides marginal added value.

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 ('Lists') and resource ('people from MailFathom's own contact book'), and adds ordering and return scope ('ordered by name, with the addresses each of them uses'). This clearly distinguishes it from siblings like get_contact, which resolves a single address, and list_emails, which lists emails rather than contacts.

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?

The description explicitly states when to use this tool versus a sibling: 'To resolve one address to the person using it, call get_contact with that address rather than searching for it here.' It also explains how to narrow results with search and origin, and warns that pagination is required because there is no way to get the whole book in one call.

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

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Krzysztof318/MailFathom'

If you have feedback or need assistance with the MCP directory API, please join our Discord server