Inboxapp
Server Details
Inboxapp lets you message contacts and manage conversations across X and LinkedIn.
Connect your X and LinkedIn accounts to handle your social conversations from one place, making it easier to stay in touch with the people who matter to you.
Use Inboxapp to:
Message contacts on X and LinkedIn.
Triage your inbox: see who is waiting on a reply and which conversations need attention first.
Stay on top of follow-ups and spot conversations that have gone cold.
Search past conversations and c
- Status
- Healthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 38 tools
Tools are cleanly partitioned by resource prefix (messages_, threads_, contacts_, statuses_, tags_) and each action within a resource serves a distinct purpose. Minor overlap exists between messages_get and messages_history, and between contacts_addTag/removeTag and the tags_* resource, but descriptions generally keep them separable.
A consistent resource_action pattern joined by underscores is used throughout (messages_send, threads_typing, contacts_addTag). The main deviation is casing of compound actions/resources (accountLinks_get, team_getMember, addTag vs messages_unsend), but the overall scheme remains predictable.
38 tools is on the heavy side, but the server genuinely spans many resources (messages, threads, contacts, tags, statuses, team, platforms, etc.), averaging ~3.5 tools per resource. It is defensible for a broad messaging/CRM platform yet larger than necessary.
Core messaging lifecycle is well covered (send/get/list/edit/unsend/react/history) and statuses/tags have full CRUD. However there are notable gaps: no contacts_create/delete, no threads_create, no relationship list/disconnect, no accountLinks create/delete, and only minimal team operations.
Available Tools
38 toolsaccountLinks_getGet account linkCRead-onlyIdempotentInspect
Get account link
| Name | Required | Description | Default |
|---|---|---|---|
| accountLinkId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered by structured data. The description adds nothing beyond that – no note on whether the link must exist, what happens on a missing ID, or any auth requirement, so it earns little credit against the lower annotated bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At four words the text is not padded, but this is under-specification rather than conciseness – there is no front-loaded purpose, scope, or routing information. Brevity here reflects missing content, not efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool the annotations cover the safety profile, but with 0% parameter coverage and no output schema the description leaves the agent without any grounding on the required identifier or what is returned. It is inadequate even for a one-parameter lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage for the single required parameter is 0%; the description likewise says nothing about accountLinkId. The schema conveys only type (string) and a Cuid2 pattern, and the description does not compensate by explaining the required identifier format or source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of the alternative accountLinks_list for listing links. The only usage signal is the implicit 'retrieve a single link by ID' conveyed by the name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accountLinks_listList account linksCRead-onlyIdempotentInspect
List account links
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, from 1 to 100. Defaults to 50. | |
| cursor | No | The previous page's `nextCursor`. Opaque, and valid only with the filters it was issued for. | |
| status | No | Repeat the key to match any of several. | |
| platform | No | Repeat the key to match any of several. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered by structured data. The description adds nothing beyond that — no mention of filtering behavior, pagination semantics, or what a returned link represents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single four-word phrase with no waste, but it is under-specification rather than genuine conciseness — there is no front-loaded content to speak of.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The rich schema and annotations carry most of the load, and there is no output schema to explain. Still, a bare fragment leaves an agent without any framing for what an account link is or how this enumeration differs from the single-item sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, cursor, status, and platform are all fully documented in the schema itself. The description contributes no parameter meaning, which earns the baseline 3 given the high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus accountLinks_get or platforms_list. Nothing indicates that this is the paginated, filterable enumeration of all account links, so an agent must infer usage purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
colors_listList colorsCRead-onlyIdempotentInspect
List colors
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds no behavioral context whatsoever — no return format, no pagination, no ordering — so it contributes nothing beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only three words, so it is certainly not bloated, but this is under-specification rather than genuine conciseness — the single phrase earns its place only by restating the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, non-destructive list tool with annotations covering safety and no output schema, the definition is minimally viable. It does not explain what a "color" object contains or how results are ordered/returned, but the simplicity of the operation limits the practical impact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There are no parameter semantics for the description to clarify or for the schema to omit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no mention of alternatives among the ~38 sibling tools. For a trivially simple list tool this is less costly, but the description still provides zero routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contacts_addTagAdd tag to contactBIdempotentInspect
Add tag to contact
Adding a tag the contact already has succeeds.
| Name | Required | Description | Default |
|---|---|---|---|
| tagRef | Yes | A tag, by ID or by name. Names match ignoring case and accents. When a value is one tag's ID and another's name, the ID wins. | |
| contactId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false, and the second sentence ('Adding a tag the contact already has succeeds') largely restates that idempotency rather than adding new behavior. It does confirm observable semantics concretely, but omits mutation side effects, auth requirements, and any return indication.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action; there is no filler. The second sentence is mildly redundant against the idempotentHint annotation but still readable and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation with no output schema and annotations covering the safety/idempotency profile, the description is minimally adequate. It leaves the contactId parameter and any permission or error behavior unexplained, which matters for a write operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: tagRef is richly documented in the schema, but contactId has no description and the tool description adds nothing about either parameter (no ID format, no name-vs-ID resolution detail). With half the parameters undocumented, the description fails to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb+resource (add tag to contact) that matches the tool name and distinguishes it from siblings like contacts_removeTag and tags_create. It is clear but does not explicitly name or contrast with any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus contacts_removeTag, contacts_update, or tags_create, and no prerequisites (e.g., tag must exist, permissions). The only contextual sentence concerns repeated calls, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contacts_getGet contactDRead-onlyIdempotentInspect
Get contact
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Related resources to embed next to their ID field, one path per key, at most 4. | |
| contactId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. However, the description adds nothing beyond that — no indication of what a failed lookup does, whether it 404s on unknown contactId, or what expand does behaviorally.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words is terse, but this is under-specification rather than genuine conciseness — there is no content to front-load or trim. Brevity here costs the agent information rather than saving it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is the only place to explain what a retrieved contact looks like, yet it says nothing about return shape, expanded fields, or error behavior. For a retrieval tool it is completely inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: expand carries an inline description, but the required contactId (a Cuid2 pattern ref) is undocumented in both schema and description. The description provides zero additional meaning for either parameter, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all — no mention of how this differs from contacts_list, contacts_update, or contacts_addTag. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contacts_listFind contactsARead-onlyIdempotentInspect
Find contacts
Finds contacts by the platform identity of one of their profiles: a platform with platformId or username.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, from 1 to 100. Defaults to 50. | |
| cursor | No | The previous page's `nextCursor`. Opaque, and valid only with the filters it was issued for. | |
| expand | No | Related resources to embed next to their ID field, one path per key, at most 4. | |
| platform | Yes | ||
| username | No | Contacts with a profile of this username, without its display prefix. One username may match several contacts. Give this or the other identity filter, repeating the key for up to 100. No match is an empty page. | |
| platformId | No | Contacts with a profile of this platform ID. Give this or the other identity filter, repeating the key for up to 100. No match is an empty page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds the identity-scoped lookup behavior, but says nothing about result volume, ordering, or the fact that unmatched identities return an empty page (that detail lives only in the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded: the purpose sentence comes immediately. The title text 'Find contacts' is duplicated verbatim at the top, which is minor waste but the rest earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with a rich schema and full annotation coverage, the description covers the core lookup semantics. Pagination and expand behavior are delegated to well-written schema descriptions, and no output schema exists to explain, so remaining gaps are small.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already explains limit, cursor, expand, username and platformId in detail. The description adds only that the identity filter is a platform paired with one of the two identity keys, which is marginal beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find) and resource (contacts) and narrows the scope to lookup by platform identity, which separates it from contacts_get (by ID) and contacts_update. It does not name a sibling explicitly, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the tool applies — you have a platform plus a platformId or username — but never states when to prefer it over contacts_get or other lookup paths, nor any prerequisite such as the team needing the platform enabled. Usage is inferable, not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contacts_removeTagRemove tag from contactBIdempotentInspect
Remove tag from contact
Removing a tag the contact doesn't have succeeds.
| Name | Required | Description | Default |
|---|---|---|---|
| tagRef | Yes | A tag, by ID or by name. Names match ignoring case and accents. When a value is one tag's ID and another's name, the ID wins. | |
| contactId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the mutation/idempotency profile is largely covered. The sentence 'Removing a tag the contact doesn't have succeeds' usefully confirms that a no-op does not raise an error, but it mostly restates the idempotentHint rather than adding new behavioral context such as auth requirements or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short lines with no filler, and the core action is front-loaded ahead of the edge-case note. The second sentence is slightly awkwardly phrased but earns its place by clarifying the no-op outcome.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation with no output schema and good annotation coverage, the description is minimally adequate. It omits any note on the contactId identifier format (a Cuid2), permissions, or what the tool returns, leaving a modest gap for an agent to fill.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: tagRef is well documented in the schema (ID-or-name, case/accent-insensitive, ID wins), but contactId has no description at all and the description text adds nothing about either parameter. The description does not compensate for the undocumented contactId, which is a required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Remove tag from contact'), which is unambiguous and pairs naturally against the sibling contacts_addTag. It does not explicitly name the sibling or scope the operation beyond the name, but an agent can identify the tool's job immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite or permission note, and no mention of alternatives such as contacts_update. The only additional sentence addresses behavior on a missing tag, not usage selection, so the agent must infer context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contacts_updateUpdate contactDDestructiveIdempotentInspect
Update contact
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| status | No | ||
| contactId | Yes | ||
| valuation | No | ||
| assigneeId | No | The default assignee of this contact's threads that have none of their own. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=true, so the safety/mutation profile is covered structurally. The description adds nothing beyond that, e.g. what gets overwritten, whether omitted fields are cleared, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words is technically concise but reflects under-specification rather than economy; there is no information to front-load and nothing an agent can act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no output schema, one required param, and 20% schema coverage, the description is wholly inadequate. An agent cannot infer which fields are updatable, what a null means, or what the operation returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% across 5 parameters (contactId, notes, status, valuation, assigneeId), and the description provides no parameter meaning at all. It does not compensate for the coverage gap, leaving notes/valuation/assigneeId semantics entirely to sparse schema hints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative-routing guidance. Among many contacts_* siblings, nothing tells the agent when update is the right choice versus tags, statuses, or reads.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
events_listReplay eventsARead-onlyIdempotentInspect
Replay events
Reads events in sequence order. A page can hold fewer than limit events when some are filtered out; continue from lastSeq while hasMore is true.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Only these event types. Repeat the key to match any of several. | |
| limit | No | Events to read, from 1 to 1000. Defaults to 100. | |
| afterSeq | No | Exclusive. A webhook's `seq` resumes right after it. Omit to start at the oldest retained event. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description adds genuinely non-obvious behavior: a page can hold fewer than `limit` events because of filtering. That pagination caveat is real value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the core behavior front-loaded. The leading repetition of the title 'Replay events' is the only wasted tokens.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description partially compensates by naming the `hasMore` and `lastSeq` response fields used to drive pagination, which is exactly what an agent needs to iterate correctly. The lingering afterSeq-vs-lastSeq naming ambiguity is the only gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so `type`, `limit`, and `afterSeq` are already fully documented and the baseline is 3. The description adds the sequence-ordering guarantee but no new format/syntax detail, and it references a `lastSeq` field that does not match the schema's `afterSeq` cursor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Reads events in sequence order'), which is clearer than the tautological title 'Replay events'. No sibling tool covers events, so there is no differentiation problem to solve, but also no explicit scoping against the rest of the API surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Pagination usage is implied ('continue from `lastSeq` while `hasMore` is true'), but there is no explicit when-to-use/when-not guidance or mention of alternatives such as polling vs webhooks. The guidance is functional but partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
messages_attachmentGet attachmentBRead-onlyIdempotentInspect
Get attachment
200 with a fresh URL once ready, 202 while the media is pending or processing. A card index is invalidRequest.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| messageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent and openWorld, so the bar is lower, and the description adds real behavioral context beyond them: the 200-with-fresh-URL vs 202-while-processing contract and the card-index error case. It stops short of saying whether the URL expires or requires authentication to fetch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded, with status semantics stated immediately. The only waste is restating the title 'Get attachment' as the opening line, which duplicates the title field.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does explain the response status contract, which is the most important thing an agent needs. However, it leaves the parameter meanings and the shape/lifetime of the returned URL unspecified for a two-required-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and neither parameter is documented in the schema. The description only obliquely clarifies 'index' by describing the card-index failure mode; messageId is never explained, so the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get attachment') and the payload is clarified as a URL-bearing media fetch. It does not need to distinguish itself from siblings since no other attachment tool exists, but it also never states explicitly that it returns a media URL for one attachment of a message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied. The 202 case tells the agent that polling/retrying is expected while media is pending, and the invalidRequest note tells it not to call with a card index, but there is no explicit when-to-use guidance or pointer to alternatives such as messages_get for metadata.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
messages_editEdit messageBIdempotentInspect
Edit message
Edits the message on the platform. Needs message:edit, within the platform's edit window.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| messageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false, openWorldHint=true), so the bar is lower. The description still adds real value beyond them: the required `message:edit` permission and the platform-imposed edit window that can cause the call to fail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the action front-loaded and the permission/window constraints following. The only waste is the leading line duplicating the title verbatim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation with no output schema and two undocumented required parameters, the description covers auth and timing but says nothing about error behavior when the edit window has closed or whether the prior content is lost. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two required parameters, so the description must carry the burden and largely fails to. It never mentions `messageId` or clarifies whether `content` replaces or appends to the existing body.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource ('Edits the message on the platform'), but the opening line 'Edit message' merely restates the title and name. It offers no differentiation from adjacent siblings like messages_unsend or messages_send, which also mutate an existing message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives two implicit usage conditions: the caller must hold the `message:edit` scope, and the edit must occur inside the platform's edit window. That is genuine when-to-use context, but there is no comparison to alternative tools for changing or retracting a message.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
messages_getGet messageDRead-onlyIdempotentInspect
Get message
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Related resources to embed next to their ID field, one path per key, at most 4. | |
| messageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered by structured data. The description adds nothing beyond that – no note on what the expand parameter embeds, no error/not-found behavior, no mention of what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words is technically concise but here reflects under-specification rather than efficient communication. There is no front-loaded detail because there is no detail at all.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with no output schema, the description should at least sketch the returned message shape or the effect of expand. With annotations covering safety but the description empty, an agent lacks the context to use the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%; 'expand' is documented in the schema but 'messageId' has no description. The description provides no compensating detail about the ID format or how expand changes the response, so it adds no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this tool versus messages_list, messages_history, or threads_get, nor any prerequisites or exclusions. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
messages_historyGet message historyBRead-onlyIdempotentInspect
Get message history
Every version of the message's content, from its edits.
| Name | Required | Description | Default |
|---|---|---|---|
| messageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds that the result is the set of content versions produced by edits, but says nothing about ordering, retention limits, or whether the requirement is an existing message.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely tight and front-loaded: the action is stated first, then the scope. The second line is a fragment and mildly redundant with the title, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema, the description conveys the general shape of the result (versions from edits) but omits ordering and pagination behavior, and gives no help on the required id. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required messageId parameter; the only hint is the Cuid2 pattern. The description adds no meaning about what the id refers to, its format, or whether it must belong to the calling user's workspace, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get message history) and the second line clarifies scope: every version of the content, derived from edits. That implicitly separates it from messages_get, which returns the current message. It stops just short of naming that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no alternatives named. The agent must infer from the scope phrase that this is for edit history rather than current content, but nothing routes it against siblings like messages_get or messages_edit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
messages_listList messagesCRead-onlyIdempotentInspect
List messages
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, from 1 to 100. Defaults to 50. | |
| order | No | Sort direction by `createdAt`. Defaults to `desc`, newest first. | |
| cursor | No | The previous page's `nextCursor`. Opaque, and valid only with the filters it was issued for. | |
| expand | No | Related resources to embed next to their ID field, one path per key, at most 4. | |
| threadId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered by structured data. The description adds nothing beyond that – no mention of pagination, ordering defaults, or expansion behavior, which are the behaviors an agent would actually need context on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words are technically concise but this is under-specification rather than economy of language. The sentence does not front-load scope, filters, or pagination semantics, so there is nothing useful being kept short.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a paginated list tool with a required threadId, an opaque cursor, ordering, and an expand parameter, plus no output schema. The description provides none of the context needed to call it correctly, leaving the entire burden on the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (80%): limit, order, cursor, and expand all carry inline descriptions. Per the rubric, a high-coverage schema establishes a baseline of 3 even when the tool description contributes no parameter meaning, and here it contributes none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus messages_get (single message) or messages_history (edit/event history). The scope (all messages in a thread, paginated) is only inferable from the schema's threadId and cursor, not from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
messages_reactAdd reactionDIdempotentInspect
Add reaction
| Name | Required | Description | Default |
|---|---|---|---|
| emoji | Yes | Exactly one emoji. | |
| messageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing on top of that: it does not mention that reactions are idempotent, whether duplicates overwrite, whose reaction is added, or any auth requirement. For a mutation tool the description contributes essentially zero behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two words and, while trivially front-loaded, it is under-specified rather than concise. There is no wasted language because there is almost no language at all.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-required-parameter mutation tool with no output schema and an inverse sibling (messages_unreact), two words are completely inadequate. Nothing about preconditions, idempotency behavior, or the required messageId format is conveyed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: emoji carries a description ("Exactly one emoji.") while messageId is a bare Cuid2 $ref with no explanation. The description supplies none of the missing semantics — neither the format of messageId nor the constraint that emoji must be a single character. It does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool, what preconditions exist (e.g. the message must exist and be reachable), or how it relates to messages_unreact. The agent is left to infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
messages_sendSend messageBInspect
Send message
201 for a new send. A replay of an Idempotency-Key returns the original result with 200.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| content | Yes | Up to the platform's `limits.characters`. Longer content fails with `contentRejected`. | |
| idempotencyKey | No | Makes retries safe: a replay with the same key and body returns the original message. Scoped to the team. | |
| replyToMessageId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, so the safety profile is covered. The description adds real behavioral value beyond that: the 201-on-new-send / 200-on-Idempotency-Key-replay response contract. The only tension is that this replay semantics reads as idempotent while idempotentHint=false; the description is defensible because the key is optional, but it is worth noting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the status-code contract is front-loaded after the purpose line. It is efficiently sized, though its brevity is partly a symptom of under-specification rather than disciplined economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the success path's status codes but omits anything about failure modes (recipientUnavailable, profileAmbiguous, contentRejected are only in schema sub-descriptions), rate limits, or thread-creation behavior. For a mutating send with no output schema, this is adequate but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% across 4 parameters, and the description explains none of them (target, content, idempotencyKey, replyToMessageId). A tool where half the parameters are undocumented in the schema needs the description to compensate, and this one does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Send message,' which is a specific verb+resource, but it is a verbatim restatement of the title rather than an elaboration of what is being sent or where. It does nothing to distinguish this tool from messages_edit, messages_unsend, or threads_typing, leaving the agent to infer the boundary from names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no named alternatives. The agent is given no signal about when to send via a thread target vs. a contact target vs. a profile target, nor when to prefer messages_send over messages_edit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
messages_unreactRemove reactionDIdempotentInspect
Remove reaction
| Name | Required | Description | Default |
|---|---|---|---|
| emoji | Yes | Exactly one emoji. | |
| messageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so basic behavioral profile exists in structured data. The description adds nothing beyond that — no mention that removal is idempotent, requires prior reaction state, or has permission implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words, but this is under-specification rather than effective conciseness. There is no front-loaded useful content to justify the brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and two required parameters, the description should carry more weight. It omits what happens if the reaction does not exist, what success looks like, and any permission requirements — completely inadequate for an openWorld mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%; the emoji parameter carries 'Exactly one emoji.' but messageId has no description at all. The tool description provides no compensating detail about what messageId should reference or the format constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all. The obvious counterpart, messages_react, exists in the sibling list, yet the description never states that this is the inverse operation or when to prefer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
messages_unsendDelete messageDDestructiveIdempotentInspect
Delete message
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | `self` deletes for the account link only, which needs `message:delete:self`. `all` unsends for every participant, which needs `message:unsend`. | |
| messageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered by structured data. The description adds nothing beyond that — it does not explain the self-vs-all scope consequences, auth requirements, or irreversibility, so it contributes no behavioral context of its own.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words is short, but this is under-specification rather than genuine conciseness — there is no front-loaded information to be concise about. The brevity leaves the minimum viable definition unmet.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, open-world mutation with no output schema, the description is completely inadequate. It omits scope semantics (self vs all), permission requirements, and the fact that the operation cannot be undone, all of which an agent needs before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: the scope enum is documented in the schema, but messageId has no description, and the tool description adds no parameter meaning at all. With half the parameters undocumented and zero compensatory text, the description fails to help the agent supply correct arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like messages_edit or threads_delete, and no stated preconditions. The description provides no usage context whatsoever, leaving the agent to infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
platforms_listList platformsBRead-onlyIdempotentInspect
List platforms
Each platform's capabilities and limits. An account link's capabilities can only narrow its platform's.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds a genuine semantic fact — that an account link's `capabilities` can only narrow its platform's — but says nothing about result shape, pagination, or freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely short and front-loaded, with the resource stated first. The second sentence earns its place by explaining the capability-narrowing relationship, though it is a sentence fragment that reads more like a schema comment than prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema, the description is functional but thin: it never indicates what a platform entry contains beyond the vague "capabilities and limits", which matters because there is no output schema to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. Schema coverage is 100% and the schema is an empty object, matching the description's claim of an unfiltered listing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List platforms") and adds a domain gloss that each platform carries capabilities and limits. It is distinguishable from siblings like accountLinks_list or colors_list by resource name, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance: it does not say whether this is a prerequisite step before creating/linking accounts, whether results are cacheable, or when to reach for it instead of accountLinks_list. The second sentence is domain context, not invocation guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
relationships_connectSend connection requestBInspect
Send connection request
Invites a profile to connect with the account link. Needs profile:connect.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| target | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=true, so the mutation/open-world profile is covered. The description adds one thing annotations cannot express — the required `profile:connect` scope — which is genuinely useful, but it says nothing about send limits, failure modes, or that notes are a one-shot resource (all of which only appear inside the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler beyond the opening line, which duplicates the title verbatim rather than stating something new. Efficient, though the wasted first line costs it a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent, open-world write tool with no output schema, an agent gets the permission requirement but little else from the description; the surrounding mechanics (target selection, note exhaustion, refusal errors) live only in the schema. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the reported coverage signal is 0%, the schema itself carries rich inline documentation for both `target` variants (thread/contact/profile, with errors like recipientUnavailable and profileAmbiguous) and for `note` (character limits, connectionRefused). The description adds no parameter meaning beyond the `profile:connect` scope, so the schema is doing nearly all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and object: 'Invites a profile to connect with the account link,' which is clearer than the tautological title. It does not distinguish itself from write-side siblings like messages_send or contacts_update, but no sibling offers an invite/connect capability, so an agent can still place it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no routing to alternatives. The single prerequisite callout ('Needs `profile:connect`') is a permission fact, not usage guidance for choosing this tool over the messaging or contact tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statuses_createCreate statusCInspect
Create status
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| color | No | Null for no color. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose the safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=false), so the write/mutation nature is covered structurally. The description adds nothing further — no note about uniqueness constraints, validation failures, or what a created status returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is minimal but this reflects under-specification rather than tight editing; there is a single sentence with no information density. Brevity here is a deficit, not a virtue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description should at minimum convey the required input and the effect of creation. Instead it conveys none of this, leaving the required 'name' parameter and the creation semantics entirely to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: the required 'name' parameter has no description in either the schema or the description, while 'color' is fully documented in the schema. With low coverage the description should compensate for the undocumented required field, and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to create a status versus updating an existing one, nor any mention of prerequisites such as needing a unique name or an existing workspace. The agent gets no routing help among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statuses_deleteDelete statusCDestructiveIdempotentInspect
Delete status
| Name | Required | Description | Default |
|---|---|---|---|
| statusRef | Yes | A status, by ID or by name. Names match ignoring case and accents. When a value is one status's ID and another's name, the ID wins. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is fully covered by structured data. The description adds no behavioral context whatsoever — nothing about permissions, cascade effects on messages using the status, or reversibility — so it earns no credit above the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words is maximally terse, but this is under-specification rather than conciseness — there is no substance to be front-loaded. It fails to earn its place as a description at all.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation, an agent needs to know the consequences (e.g., what happens to contacts or messages referencing the deleted status). Annotations cover the safety flags and the schema covers the parameter, but the description supplies none of the operational context a delete tool warrants.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the statusRef parameter is thoroughly documented (ID-or-name resolution, case/accent-insensitive matching, ID precedence). With the schema doing the heavy lifting and the description contributing nothing extra, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives (e.g., statuses_update for modification vs. deletion). The agent must infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statuses_getGet statusCRead-onlyIdempotentInspect
Get status
| Name | Required | Description | Default |
|---|---|---|---|
| statusRef | Yes | A status, by ID or by name. Names match ignoring case and accents. When a value is one status's ID and another's name, the ID wins. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds no behavioral context whatsoever — not the return shape, not what happens on a missing statusRef, nothing beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words is not conciseness but under-specification; the text is far too thin to earn its place. There is nothing to front-load because nothing is said.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter getter whose schema documents the parameter fully and whose annotations cover safety, the description's burden is small. Still, with no output schema it could state what a status object contains, and it never routes the agent away from statuses_list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema itself explains the ID-vs-name resolution rule and case/accent-insensitive matching thoroughly. The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of statuses_list as the alternative for enumerating statuses, and no prerequisites. The only implied usage is that it fetches one status, which an agent could infer from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statuses_listList statusesCRead-onlyIdempotentInspect
List statuses
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered by structured fields. The description adds nothing beyond that, offering no return shape, volume, or ordering context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The phrase is compact but only because it is under-specified. Conciseness should not come at the cost of all substance; a single restated title earns nothing here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description should convey what a status looks like or how results are returned. For a zero-param list tool this is low complexity, but the description is still too thin to be complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to document. Baseline 4 applies; the empty schema needs no compensating prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no mention of alternatives (statuses_get for a single status, statuses_create/update/delete for mutations), and no conditions. An agent must infer from the name alone that this returns all statuses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statuses_updateUpdate statusDIdempotentInspect
Update status
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| color | No | Null for no color. | |
| statusRef | Yes | A status, by ID or by name. Names match ignoring case and accents. When a value is one status's ID and another's name, the ID wins. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=false, which covers the safety profile for a mutation. The description adds nothing beyond those structured hints: it does not say which fields are mutated, whether omitted fields are preserved or cleared, or how conflicts are resolved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single three-word phrase. It is short, but this is under-specification rather than effective conciseness — there is no front-loaded intent, scope, or constraint worth the token cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation tool with no output schema and one undocumented parameter, the description supplies none of the context an agent needs to invoke it correctly. It is inadequate even at minimum-viable level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so the schema documents statusRef and color but leaves "name" bare. The description contributes zero parameter meaning, so it does not compensate for that coverage gap nor explain the partial-update semantics an agent would need to know.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance whatsoever on when to use this tool versus the other status tools, no mention of prerequisites (e.g., that the status must already exist, obtained via statuses_get or statuses_list), and no indication of what happens on failure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tags_createCreate tagCInspect
Create tag
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| color | No | A color name from `GET /colors`, case-insensitive, or a 6-digit hex value. Stored as hex. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing — no mention of uniqueness constraints on name, what happens on duplicate, or the color default behavior. With annotations present the bar is lower, but zero added context still warrants a low score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but this is under-specification rather than conciseness. A two-word phrase cannot front-load anything because it contains no substantive information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and only 50% parameter documentation, the description leaves key facts unstated: whether names must be unique, that color defaults to a random palette entry, and what the response contains. It is close to the minimum viable but still inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%; color is well documented in the schema but name has no description beyond minLength. The description does not compensate by clarifying name constraints (uniqueness, format) or the color default/hex conversion, so it adds no meaning over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no alternatives named. The agent gets no help distinguishing this from tags_update, tags_list, or tags_delete, nor any note about prerequisites such as needing a valid color source.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tags_deleteDelete tagADestructiveIdempotentInspect
Delete tag
Also removes it from every contact.
| Name | Required | Description | Default |
|---|---|---|---|
| tagRef | Yes | A tag, by ID or by name. Names match ignoring case and accents. When a value is one tag's ID and another's name, the ID wins. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is largely covered. The description adds the one piece the annotations cannot express: that the deletion cascades to every contact's tag assignment, which is meaningful blast-radius information. It stops short of stating irreversibility or whether the tag can be recreated with the same ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clauses, zero waste, with the primary action stated first and the consequential side effect immediately after. Nothing is padded or restated from the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool whose annotations carry the safety hints and whose schema fully documents the parameter, the definition covers the essentials plus the cascade behavior. It could add whether the deletion is permanent/recoverable, but no output schema exists to explain results and none is strictly needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the tagRef documentation is unusually thorough (ID or name, case/accent-insensitive matching, ID precedence). The description adds nothing about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete tag') and immediately clarifies the cascade: it removes the tag from every contact. That cascade note is what separates it from the sibling contacts_removeTag, which affects a single contact, so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives (contacts_removeTag for a single contact, tags_update for renaming) and no stated prerequisites such as required permissions. Usage is only implied by the verb; the agent must infer the when from the tool family.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tags_getGet tagCRead-onlyIdempotentInspect
Get tag
| Name | Required | Description | Default |
|---|---|---|---|
| tagRef | Yes | A tag, by ID or by name. Names match ignoring case and accents. When a value is one tag's ID and another's name, the ID wins. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered structurally. The description adds nothing beyond that — no mention of error behavior for a missing tag, no resolution-failure context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but shortness here reflects under-specification rather than efficiency — there is no front-loaded content because there is no content. A two-word phrase cannot earn its place when it duplicates the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should clarify what a 'tag' object contains or what happens on a failed lookup; it does neither. Annotations cover safety but not the return contract or failure modes an agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the tagRef property already documents ID-or-name resolution, case/accent-insensitive matching, and the ID-wins tiebreak. The description contributes no additional parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance whatsoever on when to use this versus tags_list (to find tags) or contacts_get. An agent gets no signal about prerequisites or the case where the tag does not exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tags_listList tagsCRead-onlyIdempotentInspect
List tags
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, covering the full safety profile for a zero-param read. The description adds nothing on top of that — no return shape, no scope, no ordering — so it earns no credit beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words with zero waste, but the terseness reflects under-specification rather than disciplined compression. Everything present is front-loaded and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param list tool with full annotation coverage and no output schema, the minimal description is barely adequate — the agent knows it lists tags but not scope, ordering, or pagination behavior. Nothing is actively misleading, but nothing meaningful is added either.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4; there are no parameter semantics the description could clarify or omit. No penalty is warranted since the schema is empty and self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of when to prefer tags_get over tags_list, and no prerequisites or pagination/filtering notes. An agent gets no routing help among the many tag and list siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tags_updateUpdate tagDIdempotentInspect
Update tag
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| color | No | A color name from `GET /colors`, case-insensitive, or a 6-digit hex value. Stored as hex. | |
| tagRef | Yes | A tag, by ID or by name. Names match ignoring case and accents. When a value is one tag's ID and another's name, the ID wins. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing on top of that — no mention that omitted fields are left unchanged, no note that name changes affect lookups by name, and no error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words are technically minimal, but this is under-specification rather than conciseness — the fragment conveys no actionable content. There is nothing to front-load because nothing is stated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with three parameters, one required, no output schema, and partial schema coverage, the description provides none of the context an agent needs — which fields change, whether the update is partial or full, or what the result is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, not high enough to default to the baseline of 3. The schema itself documents tagRef and color well, but 'name' carries no description, and the tool description supplies no semantics such as partial-update behavior for those fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this instead of tags_create or tags_delete, no prerequisites, and no statement of what happens when a tagRef doesn't resolve. The agent is left to infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
team_getGet teamCRead-onlyIdempotentInspect
Get team
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered elsewhere. The description adds nothing beyond that — no scope of the returned team, no auth assumptions, no note that it is scoped to the authenticated user.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words are certainly short, but this is under-specification rather than conciseness — the text is a tautological echo of the name rather than a front-loaded statement of behavior. Every word is 'earned' only in the trivial sense that there is nothing more to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters and no output schema, the description must carry the full burden of explaining what is returned and under what scope. It does neither, leaving ambiguity about whether this returns the caller's team, the team of a given entity, or a global team object.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics for the description to compensate for. Baseline 4 applies; nothing is missing or contradictory on the parameter side.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of the closely related siblings (team_getMember, team_listMembers, team_listMembers). The agent is left to infer that this retrieves the current team rather than a member or member list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
team_getMemberGet memberCRead-onlyIdempotentInspect
Get member
| Name | Required | Description | Default |
|---|---|---|---|
| memberId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false. The description adds nothing beyond these structured hints – no error behavior, return semantics, or scoping context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
"Get member" is two words and is under-specified rather than concise. It lacks the structure needed to front-load purpose, usage, or parameter context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-by-id tool with rich annotations but no output schema, the description should at least clarify what is returned or how it differs from team_get/team_listMembers. It does neither, leaving key context missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required parameter memberId has no description. The description does not mention the parameter, its Cuid2 format, or its meaning, so it fails to compensate for the coverage gap, though the simple parameter name limits the harm.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use guidance, no alternatives, and no prerequisites. An agent has no help deciding between this tool and team_get or team_listMembers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
team_listMembersList membersCRead-onlyIdempotentInspect
List members
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, from 1 to 100. Defaults to 50. | |
| cursor | No | The previous page's `nextCursor`. Opaque, and valid only with the filters it was issued for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered by structured data. The description adds nothing on top of that – no pagination behavior, no auth requirements, no scope of what members are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two words is not conciseness so much as under-specification; the description is trivially short because it carries no content. There is nothing to front-load because nothing is said.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paginated list endpoint with no output schema, the description should at minimum indicate what is returned and how pagination works. It is essentially absent, leaving the agent to infer everything from the two schema fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit and cursor are already fully documented in the schema, including default and cursor semantics. The description contributes no additional parameter meaning, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives like team_getMember, and no indication of when listing is preferable to fetching a single member. The agent gets no routing information at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
threads_deleteDelete threadBDestructiveIdempotentInspect
Delete thread
Deletes the conversation on the platform when it can, and always in Inboxapp. The response's scope says which happened.
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds real value beyond that by disclosing that deletion may succeed on the platform only 'when it can' but always happens in Inboxapp, and that a `scope` field reports which occurred. It does not discuss auth or reversibility, but the added nuance is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded. The opening line merely restates the title, which is minor redundancy, but overall there is little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with annotation coverage but no output schema, the description adequately signals partial deletion behavior. However, it references a `scope` response field without defining its possible values or explaining threadId, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single required threadId parameter is undocumented in both schema and description. The description does not explain the parameter's format or source, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource (delete thread/conversation) and clarifies that deletion targets both the platform and Inboxapp. It is clear what the tool does, though it does not explicitly contrast itself with siblings like threads_update or statuses_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives, nor any prerequisites or when-not-to-use conditions. Usage is only implied by the verb 'delete'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
threads_getGet threadCRead-onlyIdempotentInspect
Get thread
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Related resources to embed next to their ID field, one path per key, at most 4. | |
| threadId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered by structured data. The description adds nothing about what the thread object contains, whether it includes participants, or any rate limits, so it fails to enrich the behavioral picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is extremely short and front-loaded, but that brevity reflects under-specification rather than effective conciseness. Every sentence earns its place only because there is only one sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a required parameter and an optional expand parameter, a single two-word description is inadequate. The annotations cover safety, but the description should clarify the thread resource and when to expand related resources.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, with the expand parameter fully documented in the schema. The description offers no explanation of the required threadId format (Cuid2 pattern) or the expand semantics beyond what the schema already states, so it does not compensate for the uncovered parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this tool versus threads_list, threads_update, or messages_list. An agent must infer usage from the name alone, with no exclusions or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
threads_listList threadsBRead-onlyIdempotentInspect
List threads
Threads in inbox order, filtered by folder and by contact CRM state.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Searches profile display names, usernames and the activity preview. Results follow `order`, not relevance. | |
| tag | No | Threads whose contact has one of these tags. Repeat the key to match any of several. | |
| limit | No | Page size, from 1 to 100. Defaults to 50. | |
| order | No | Sort direction by inbox order: `activity.at`, or `createdAt` for a thread with no activity. A reminder or an accepted message request moves a thread up until its next message, without changing `activity.at`. Defaults to `desc`, newest first. | |
| cursor | No | The previous page's `nextCursor`. Opaque, and valid only with the filters it was issued for. | |
| expand | No | Related resources to embed next to their ID field, one path per key, at most 4. | |
| folder | No | Defaults to `inbox`, threads that are neither archived nor requests. `noReply` is the `inbox` threads whose latest activity is inbound. `requests` holds unarchived threads where `isRequest` is true. `archived` includes requests. `all` spans every folder. Every other filter narrows the folder. | |
| status | No | Threads whose contact has one of these statuses. Repeat the key to match any of several. | |
| platform | No | Repeat the key to match any of several. | |
| contactId | No | Threads with these contacts. With `accountLinkId`, finds the thread between an account and a contact. Repeat the key to match any of several. | |
| assigneeId | No | Threads whose `assigneeId`, the thread's own assignee or else its contact's, is one of these members. Repeat the key to match any of several. | |
| campaignId | No | Threads these campaigns sent a message in. Campaign sends archive the thread, so pair it with `folder=archived` or `all`. Repeat the key to match any of several. | |
| unassigned | No | `true` keeps threads with no assignee, including through their contact. Not combinable with `assigneeId`. | |
| accountLinkId | No | Threads of these account links. Repeat the key to match any of several. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context about default inbox ordering and folder/CRM filtering, but it omits pagination behavior, return shape, and any auth or rate-limit notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with the core action stated first and the filtering/order context immediately after. The repeated first line "List threads" duplicates the title, so it does not fully earn its place, but there is no other excess wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter list tool with no output schema, the description is very sparse. Annotations cover safety and the schema covers parameters, but the description does not mention pagination, default page size, cursor behavior, or the basic shape of the returned thread list, leaving it only minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the 14 parameters are already thoroughly documented in the schema. The description adds only "filtered by folder and by contact CRM state", which does not meaningfully expand on the schema's detailed folder, contactId, status, tag, and other filter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "List threads", then adds scope with "Threads in inbox order, filtered by folder and by contact CRM state." This distinguishes it from thread mutation or single-thread tools like threads_get/update/delete, but it does not explicitly name or compare against any sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use guidance, prerequisites, or alternatives. It implies that the tool is for listing threads with folder and CRM-state filters, but it never says when to choose threads_list over threads_get or messages_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
threads_typingSend typing indicatorAInspect
Send typing indicator
Shows the account link as typing in the conversation. At most one per thread every 2.5 seconds; extra calls return skipped.
| Name | Required | Description | Default |
|---|---|---|---|
| threadId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is mostly covered. The description adds an important operational constraint beyond annotations: at most one call per thread every 2.5 seconds, and extra calls return 'skipped'. It does not describe the normal successful return value, which keeps it from being a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences and front-loads the core purpose before the rate-limit detail. Every sentence earns its place, with no redundant restatement of the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple fire-and-forget typing indicator, the description covers the main purpose and an important rate-limit behavior. However, it leaves threadId semantics undocumented and does not clarify normal return behavior, which is relevant because no output schema exists. It is adequate but incomplete for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, threadId, and schema description coverage is 0%. The description says 'per thread' and 'conversation', which loosely connects threadId to a conversation, but it does not explain the expected format (CUID2), where to obtain the ID, or any constraints. With low schema coverage, the description does not compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Send typing indicator') and immediately explains the visible effect ('Shows the account link as typing in the conversation'). This distinguishes it from all sibling tools, which deal with messages, threads, or account links rather than live typing status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose and by the rate-limit note, but the description does not explicitly say when to call this versus alternatives like messages_send or threads_update. There are no stated prerequisites or exclusions, so the agent must infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
threads_updateUpdate threadCIdempotentInspect
Update thread
| Name | Required | Description | Default |
|---|---|---|---|
| unread | No | Marks the thread read or unread for the team owner. Also applied on the platform when the account link has `thread:read:mutate`. | |
| archived | No | Also applied on the platform when the account link has `thread:archive:mutate`. | |
| threadId | Yes | ||
| assigneeId | No | The thread's own assignee. Null falls back to the contact's default. | |
| typingIndicators | No | Whether Inboxapp sends typing indicators to the platform while someone composes in this thread. `teamDefault` follows the team's setting. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing at all beyond that — no mention of the platform-side mutation behavior, permission requirements, or null-fallback semantics for assigneeId that the schema hints at.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two words, which is under-specification rather than effective conciseness. There is no front-loaded detail to evaluate because no detail exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with side effects on both the team-owner state and the connected platform, plus conditional permission-based behavior, a two-word description is completely inadequate. No output schema exists to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, which is high, so the schema already documents most parameters (including the platform permission coupling and assigneeId null fallback). The description adds no parameter meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as threads_get, threads_list, or threads_delete. The agent is left to infer the appropriate context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
38 tool updates
- First observed
accountLinks_get - First observed
accountLinks_list - First observed
colors_list - First observed
contacts_addTag - First observed
contacts_get - First observed
contacts_list - First observed
contacts_removeTag - First observed
contacts_update - First observed
events_list - First observed
messages_attachment - First observed
messages_edit - First observed
messages_get - First observed
messages_history - First observed
messages_list - First observed
messages_react - First observed
messages_send - First observed
messages_unreact - First observed
messages_unsend - First observed
platforms_list - First observed
relationships_connect - First observed
statuses_create - First observed
statuses_delete - First observed
statuses_get - First observed
statuses_list - First observed
statuses_update - First observed
tags_create - First observed
tags_delete - First observed
tags_get - First observed
tags_list - First observed
tags_update - First observed
team_get - First observed
team_getMember - First observed
team_listMembers - First observed
threads_delete - First observed
threads_get - First observed
threads_list - First observed
threads_typing - First observed
threads_update
Publisher details
- Operator
- Inboxapp.com · Publisher source
- Operator website
- https://inboxapp.com
- Vendor relationship
- Not applicable
- Documentation
- https://docs.inboxapp.com/get-started/ai-tools
- Trust center
- Not available
- Restrictions
- Not available
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1611 npm1MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs117 npm54 PyPIMIT
- AlicenseAqualityCmaintenanceRevnuvo Company Intelligence tells AI agents what changed at a company, with evidence. It observes company websites, technologies, and DNS over time and returns timestamped, confidence-aware changes, signals, and monitoring.9MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.