Skip to main content
Glama

Promote contact

promote_contact
Idempotent

Promote a collected contact to an asserted record, unlocking updates. Changes local state only, leaving mail untouched.

Instructions

Takes on one person MailFathom collected from arriving mail, so the record becomes one the owner asserted rather than one the deployment inferred. This is the only path between the two origins and it runs one way; it is also what unlocks update_contact on a record that answered contactWasCollected. Nothing about the person is rewritten. Writes to local state only, and touches no mail. A contact that was already asserted answers alreadyAsserted. The answer carries the outcome alone and never the record; read the person with get_contact.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
contactIdYesThe contactId of the collected person to take on, as a listing or an earlier read returned it.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
stateYesHow the write ended. written means the book holds the record; notFound means no contact of that identifier is in the book; addressHeldByAnotherContact means one of the addresses already belongs to somebody else, named by addressHolderContactId; contactWasCollected means the record came from mail that arrived rather than from somebody writing it down, so promote_contact it before amending it; alreadyAsserted means a promotion had nothing left to do.
contactNoThe record as the book now holds it, or null. Only a write whose record you supplied publishes one: create_contact, update_contact, add_contact_address, and remove_contact_address answer with the record when they succeed, while promote_contact answers with the outcome alone and is read back with get_contact.
addressHolderContactIdNoThe identifier of one contact that already holds an address this write claimed, or null when that is not what stopped it. Read that contact with get_contact to see who it is; a record may clash with more than one person, and this names one of them.
Install Server

TDQS

A4.7/5.0
Behavior5/5

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

The description adds substantial behavioral detail beyond the annotations: it states the outcome is one-way, rewrites nothing about the person, writes only to local state, touches no mail, and returns only an outcome, not the record. Annotations only indicate readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the description provides critical side-effect and return-value context that is not captured elsewhere.

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 dense but every sentence earns its place: it explains the purpose, the uniqueness of the path, the effect on update_contact, the scope of side effects, and the return behavior. It is front-loaded with the main action and avoids jargon or fluff, making it both concise and informative.

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?

For a tool with one parameter and an output schema, the description provides complete context: it explains the state transition, the prerequisite (collected contact), the exclusivity, the side-effect limitations, and how to retrieve the record afterward (via get_contact). The output schema handles return values, so no additional explanation is needed. The description fully equips an agent to use 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 describes the contactId parameter with full coverage (100%), including how it is returned from listings or reads. The description reinforces this by clarifying it's the ID of a collected person and adds context on its origin. While the schema does the heavy lifting, the description's mention of 'as a listing or an earlier read returned it' adds useful practical guidance, so it earns a 4 rather than a baseline 3.

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 clearly states the tool's function: it promotes a collected contact to an asserted one, with specific verbs and resource ('takes on one person'). It also explicitly distinguishes this from other operations by noting it is the only path between the two origins and one-way, and mentions its relationship to update_contact.

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?

The description provides clear context for when to use the tool: when wanting to assert a collected contact. It also notes that it unlocks update_contact and that it writes only to local state, implying it's not for mail operations. However, it doesn't explicitly state 'do not use if the contact is already asserted' (though it mentions that such contacts answer alreadyAsserted), nor does it name alternative tools for other scenarios. Overall, usage guidance is strong but lacks explicit exclusions.

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