Skip to main content
Glama

Server Details

Search customer feedback, topics, people and companies in Modem, and run the Modem Agent.

Ownership verified
Status
Healthy
Uptime
80.6% over 22 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.6/5.0

Scored across 15 tools

Disambiguation4/5

Tools are generally organized around distinct entity-action pairs (companies, people, topics, agent runs), so most are easy to tell apart. The main ambiguity is between update_topic and bulk_update_topics, which are the same action differentiated only by single vs. multiple, and search_modem vs. modem_agent_invoke require reading the descriptions to see the read-only distinction.

Naming Consistency4/5

Names mostly follow a snake_case verb_noun pattern (create_companies, update_people, merge_topics, search_modem). Minor inconsistencies keep it from a 5: update_topic is singular while the parallel update tools are plural, modem_agent_invoke lacks the run noun used by its siblings, and modem_skills is a noun rather than an action.

Tool Count5/5

Fifteen tools is at the upper end of the ideal range, but the count is justified by the server's dual scope: managing Modem entities (companies, people, topics) and controlling durable agent runs. The parallel merge/update variants cover different entity types, and modem_skills is a needed onboarding aid rather than redundant surface.

Completeness3/5

The agent-run lifecycle is complete (invoke, get, cancel, send_message) and search_modem provides broad read access, but the entity write surface has gaps. There is no create_people or create_topic, and no delete operation for companies, people, or topics, though merging and archiving partially compensate.

Available Tools

15 tools
add_people_to_companyAdd People to CompanyB
Idempotent
Inspect

Associate one or more people with a company. Before your first call, read the skill: modem_skills({ name: "write-tools" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
companyIdYes
personIdsYes

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already provide readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the description doesn't need to restate safety. However, the description adds no behavioral context beyond the hint to read the skill, which is not about tool behavior. For a mutation tool, it could disclose idempotency implications or error cases, but it doesn't, so it falls short of the higher bar.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that states the core purpose, followed by a direct instruction to read a skill. It's concise and front-loaded with the primary action, with no unnecessary fluff, but it could be clearer about the skill's role.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (2 params, no output schema, no nested objects), so the description covers the basic action and points to a skill for further details, which is adequate. However, it doesn't clarify what happens after the call (e.g., whether it returns anything) or any side effects, and given the instruction to read a skill, it somewhat relies on external context, making it minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, meaning it only provides types and patterns but no semantic meaning. The description explicitly mentions 'one or more people' and 'a company', which clarifies that personIds is an array (at least one) and companyId is a single ID, adding value beyond the schema. It doesn't explain the ID format, but the patterns are self-explanatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Associate' and the resource 'one or more people with a company', which aligns with the tool name and title. It is distinct from siblings like merge_companies or update_people, though it doesn't explicitly name them, making it clear but not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'Before your first call, read the skill: modem_skills(...)', which implies a prerequisite for using the tool, giving some usage guidance. However, it doesn't provide explicit when-to-use or when-not-to-use conditions, nor does it contrast with alternative tools like merge_people or update_companies, so it's only minimally helpful.

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

bulk_update_topicsBulk Update TopicsA
DestructiveIdempotent
Inspect

Update multiple topics at once (e.g. archive or re-prioritize a set of topics). Before your first call, read the skill: modem_skills({ name: "write-tools" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
archivedNoSet to true to archive topics, false to unarchive them.
priorityNoUpdate all topics to this priority. Valid values: very_low, low, default, high, very_high.
topicIdsYes
archivedReasonNoOptional reason for archiving. Only used when archived=true.

TDQS

A4/5.0
Behavior3/5

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

Annotations already mark this as destructive and not read-only, while the description adds context by naming archive and re-prioritize as example operations. It does not describe the nature of the destructive effects or whether changes are reversible, but it does not contradict 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with the core behavior front-loaded and an actionable prerequisite included in the second sentence. Every part earns its place; there is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The essential batch semantics and required pre-read skill are covered, and annotations already supply safety and idempotency context. It does not discuss return values or partial-failure behavior, but the schema and annotations cover most operational needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides descriptions for archived, priority, and archivedReason (75% coverage), and the description's examples map onto those same parameters. The description adds no new parameter-level semantics beyond what the schema already exposes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise verb and resource: 'Update multiple topics at once.' It also gives concrete example uses ('archive or re-prioritize a set of topics') and the plural scope clearly distinguishes it from the sibling update_topic tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear usage context by indicating batch operation over multiple topics and instructs the agent to read the 'write-tools' skill before the first call. It does not explicitly name alternatives or state when not to use it, so it falls short of a 5.

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

create_companiesCreate CompaniesCInspect

Create one or more companies in the organization. Before your first call, read the skill: modem_skills({ name: "write-tools" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
companiesYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, and the description does not contradict them. The description adds the bulk-creation trait and a required skill precondition, but does not discuss duplicate behavior, permissions, or side effects. This is modest context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with the core action front-loaded and the skill prerequisite placed second. There is no filler or redundant restatement of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and one parameter with zero schema descriptions, so the description needed to carry more weight. It omits parameter semantics, error or duplicate handling, and any distinction from update/merge siblings. The skill link is helpful but does not fill these gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning for the 'name' or 'domain' fields, including format, uniqueness, or validation. The phrase 'one or more companies' merely restates what the schema already encodes via minItems/maxItems. No parameter semantics are conveyed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Create one or more companies in the organization.' The phrase 'one or more' clarifies bulk capability. It does not explicitly contrast with update_companies or merge_companies, but the create verb inherently distinguishes them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 update_companies or merge_companies. The instruction to read the write-tools skill is a prerequisite, not a tool-selection guideline. The agent is left to infer when creation is appropriate.

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

merge_companiesMerge CompaniesA
Destructive
Inspect

Merge one or more source companies into a target company. Before your first call, read the skill: modem_skills({ name: "write-tools" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
targetCompanyIdYes
sourceCompanyIdsYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already carry destructiveHint=true and readOnlyHint=false, and the description does not contradict them. It adds no details about whether source companies are deleted, reversibility, or permissions; the only addition is the prerequisite to read the write-tools skill, which is useful but not a disclosure of merge behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with the core operation front-loaded and a single actionable prerequisite following. No filler or redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive multi-source merge with no output schema, the description alone lacks the consequences of merging, but it explicitly directs the agent to read the write-tools skill before first use. That reference makes the definition actionable and fairly complete in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must carry the semantic load, and it does convey which parameter is the target and which are sources, plus 'one or more' cardinality. However, it adds little beyond the property names and minItems in the schema, and does not elaborate on ID formats or parameter-specific constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the action ('Merge'), the object ('companies'), and the relationship ('source companies into a target company'). This is specific enough to distinguish it from sibling tools like merge_people and merge_topics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear operation and a prerequisite (read the write-tools skill), but it does not explicitly say when to use this over merge_people/update_companies or what conditions exclude it. The skill reference is a procedural instruction, not a usage-alternative explanation.

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

merge_peopleMerge PeopleB
Destructive
Inspect

Merge one or more source people into a target person. Before your first call, read the skill: modem_skills({ name: "write-tools" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
targetPersonIdYes
sourcePersonIdsYes

TDQS

B3.4/5.0
Behavior2/5

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

The annotations already declare destructiveHint=true and readOnlyHint=false. The description does not add behavioral specifics beyond the annotation, such as whether source people are deleted, whether the merge is reversible, or what side effects occur on related data. It simply restates the merging action without enriching the agent's understanding of what gets destroyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is delivered in one clear sentence, followed by a concise prerequisite instruction. There is no redundancy or filler; every sentence earns its place. The core behavior is front-loaded before the skill instruction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation tool with no output schema and minimal parameter descriptions, the description should clarify side effects, return behavior, and any constraints. It only provides the merge concept and a skill reference. An agent would still need to inspect the skill or infer critical details about what happens to source records.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry semantic weight. It does clarify the roles of 'source' and 'target' and notes 'one or more' source people, which aligns with sourcePersonIds' minItems: 1. However, it does not explain ID formats, uniqueness expectations, or what happens if a source person equals the target person. Basic semantics are present but not comprehensive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Merge'), a clear resource ('people'), and the relationship between source and target persons: 'Merge one or more source people into a target person.' This clearly differentiates it from sibling tools like merge_companies and merge_topics by resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a prerequisite for first use ('read the skill: modem_skills(...)') but does not explicitly state when to use this tool versus alternatives such as merge_companies, merge_topics, or update_people. Usage is only implied by the tool name and resource type. There are no exclusions or alternative routing.

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

merge_topicsMerge TopicsA
Destructive
Inspect

Merge one or more source topics into a target topic. Before your first call, read the skill: modem_skills({ name: "write-tools" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
targetTopicIdYesID of the topic to merge into. Must not be in the sourceTopicIds array.
sourceTopicIdsYesIDs of topics to merge into the target. Must not include the target topic ID.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the agent knows this is a mutating, non-idempotent operation. The description adds no further behavioral context (e.g., whether source topics are deleted, side effects, or return value), but does not contradict 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence stating the operation, followed by a necessary prerequisite (reading the skill). There is no redundant wording, and the key action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no output schema, the description is minimal. It references a skill that presumably provides deeper guidance, which adds some context, but it does not clarify the outcome for source topics, potential errors, or response format. The annotation covers the destructive nature, but more detail would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides complete descriptions for both parameters (targetTopicId and sourceTopicIds), including the constraint that they must not overlap. The description adds no additional semantic detail beyond the schema, so a baseline score of 3 is appropriate given 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: merge one or more source topics into a target topic. It identifies the specific resource (topics) and the verb (merge), which distinguishes it from sibling merge tools for companies and people, and from update_topic.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like update_topic or bulk_update_topics. It only states a prerequisite to read a skill before the first call, but does not explain the selection context or exclusions.

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

modem_agent_cancel_runCancel Agent RunA
DestructiveIdempotent
Inspect

Cooperatively cancel one exact durable Modem agent run. Completed external actions are not reversed.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesRun ID returned by modem_agent_invoke or modem_agent_send_message.
conversation_idYesConversation ID returned by modem_agent_invoke.

TDQS

A3.8/5.0
Behavior4/5

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

The description goes beyond annotations with 'cooperatively' and especially 'completed external actions are not reversed,' which is critical for an agent deciding whether to cancel. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded action, no redundancy. The key caveat is included.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Definitions clear with both params documented, plus the critical non-reversal caveat. Missing only explicit routing to siblings and return expectations, which are not essential for a destructive cancel action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters with clear descriptions (IDs returned by modem_agent_invoke). Description adds no new parameter-level meaning beyond 'exact' run targeting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('cancel') and identifies the exact target ('one exact durable Modem agent run'). It is clearly distinguished from sibling tools like modem_agent_get_run or modem_agent_invoke.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives, no prerequisites or conditions for cancellation, and no mention of what to check before invoking. The caveat about external actions is behavioral, not usage routing.

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

modem_agent_get_runGet Agent RunA
Read-onlyIdempotent
Inspect

Get the current status and terminal result of a durable Modem agent run.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesRun ID returned by modem_agent_invoke or modem_agent_send_message.
conversation_idYesConversation ID returned by modem_agent_invoke.

TDQS

A3.8/5.0
Behavior3/5

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 clear. The description adds 'durable' and 'terminal result', which slightly extends context, but it does not specify response behavior, failure modes, or what 'terminal' means in practice. It provides some value beyond annotations but does not go deep.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the verb, resource, and key qualifiers without any filler. Every word contributes meaning, making it highly efficient for agent parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two well-documented parameters and comprehensive annotations, the description is nearly complete. It does not explain what 'terminal result' entails or the response format, but with no output schema, these details are less critical. The core usage is fully covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both run_id and conversation_id fully described in the input schema. The description adds no additional parameter context, so it meets the baseline for schema-heavy definitions but offers no extra semantic enrichment.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('current status and terminal result of a durable Modem agent run'), clearly distinguishing it from sibling tools like modem_agent_invoke, modem_agent_send_message, and modem_agent_cancel_run. The purpose is unambiguous and the scope is well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (to retrieve status after a run has been invoked) but does not explicitly state when to use it vs. alternatives, nor does it mention that it complements invoke/send_message or that cancel_run is for termination. The guidance is not misleading but relies on the tool name and context for full clarity.

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

modem_agent_invokeRun Modem AgentA
DestructiveIdempotent
Inspect

Start a durable Modem agent conversation. Returns immediately with conversation_id and run_id; poll modem_agent_get_run for the result. Before your first call, read the skill: modem_skills({ name: "agent-runs" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesNatural-language prompt for the Modem agent.
idempotency_keyYesStable retry key. Reuse only for the exact same prompt.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark idempotentHint and destructiveHint, and the description adds the useful async behavior ('Returns immediately... poll ... for the result') plus a prerequisite skill read. It does not contradict any annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: what it does, how to get the result, and the required prerequisite. The most important behavior is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter async invocation with no output schema, the description covers the start behavior, polling path, and prerequisite skill. It could optionally mention how to continue or cancel the conversation, but nothing essential to making the first correct call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both prompt and idempotency_key are already documented in the schema. The description adds no additional parameter semantics beyond the stable-retry-key concept implied by idempotency_key.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Start a durable Modem agent conversation'), notes it returns immediately with conversation_id and run_id, and distinguishes itself from the polling sibling modem_agent_get_run. This makes its role clear relative to the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit context: use this to start a conversation, poll modem_agent_get_run for the result, and read modem_skills before the first call. It does not formally enumerate when not to use it or contrast with modem_agent_send_message/cancel_run, but the start-vs-poll workflow is clear.

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

modem_agent_send_messageSend Agent MessageA
DestructiveIdempotent
Inspect

Start a durable follow-up turn in an existing MCP conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesFollow-up prompt for the Modem agent.
conversation_idYesExisting MCP conversation ID.
idempotency_keyYesStable retry key for this follow-up.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already convey mutation (readOnlyHint=false), idempotency, open-world side effects, and destructiveness. The description adds 'durable' to suggest persistent execution, but it does not explain what state changes are made, what destructive effects may occur, or how the agent should observe progress. Given annotations carry the safety profile, this is acceptable but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It states the core action and scope immediately while leaving detailed parameter semantics to the schema, which is appropriately concise for a tool with good annotation coverage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the sibling tools include modem_agent_get_run and modem_agent_cancel_run, the description could usefully mention that this starts a run and that results can be checked with get_run. There is no output schema, so the agent is left to infer the return behavior. The term 'durable' hints at asynchronous execution, but the definition does not fully explain follow-up mechanics or retry behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides complete, meaningful descriptions for all three parameters (prompt, conversation_id, idempotency_key), so schema coverage is 100%. The description adds no additional parameter-level meaning beyond what the schema already documents, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('start') and a distinct resource/operation ('a durable follow-up turn in an existing MCP conversation'), which clearly communicates the tool's function. It implicitly separates itself from siblings like modem_agent_get_run, modem_agent_cancel_run, and search_modem, though it does not explicitly name the alternative for starting a new conversation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'in an existing MCP conversation' provides clear contextual guidance that this tool is for follow-up turns, not initial invocations or status checks. However, it does not explicitly name alternatives or state when-not-to-use conditions, so it stops short of full routing guidance.

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

modem_skillsModem SkillsA
Read-onlyIdempotent
Inspect

Skills that teach you how to use THIS Modem MCP server's tools. Call before your first search_modem, modem_agent_invoke, or write-tool call, or when unsure which Modem tool to use. Pass name for the full skill, one of search-modem, agent-runs, write-tools. Omit name to list them with descriptions. This is not the Skills page in dashboard settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoA skill from this server's catalog, e.g. "search-modem". Not a path or an outside skill name. Omit to list the catalog.

TDQS

A4.8/5.0
Behavior4/5

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

The annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description only needs to add behavioral context. It does: passing `name` returns the full skill; omitting `name` lists the catalog with descriptions. It also clarifies that `name` takes values from the server's catalog rather than arbitrary paths. A small gap is not describing the response format of the listing, but annotations lower the burden and the behavior is otherwise clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence earns its place: purpose, when to call, how to pass parameters, what omission does, and a critical disambiguation from the dashboard. It is front-loaded with the most important usage guidance and contains no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, optional-parameter meta-tool with strong annotations and no output schema, this description is complete. An agent knows when to call, what to pass, what happens when it omits the parameter, and what the tool is not. No further information is needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents `name` at 100% coverage, but the description adds meaning beyond it by enumerating the valid values (`search-modem`, `agent-runs`, `write-tools`) and by explicitly stating the omission behavior. This transforms an optional string parameter into a well-understood selector and effectively substitutes for a missing enum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource ('skills that teach you how to use THIS Modem MCP server's tools') and the exact actions: call to list or retrieve a skill. It distinguishes itself from the dashboard Settings page and from a generic skills reference, and the explicit skill-name examples leave no ambiguity about what this tool returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states exactly when to invoke the tool: before the first search_modem, modem_agent_invoke, or write-tool call, or whenever unsure which Modem tool to use. It also provides an exclusion ('This is not the Skills page in dashboard settings'), preventing a common confusion. This is explicit, actionable guidance with no inference required.

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

search_modemSearch ModemA
Read-onlyIdempotent
Inspect

Answer a natural-language question about your Modem data and get matching rows back. Read-only. It does not run the full Modem agent or spend agent credits. Send a question, or send only the cursor from a previous result to fetch its next page. Topic priority in the rows is an integer: very_low (-100), low (-50), default (0), high (50), very_high (100). Before your first call, read the skill: modem_skills({ name: "search-modem" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size. When set, the engine pages the result server-side and returns a cursor when more rows exist.
cursorNoOpaque continuation token from a previous response. Fetches the next page of the same result set without re-running the search.
columnsNoRequested row shape — the columns each returned row must carry, validated against them (see the schema field on the result). Without it the engine returns a sensible default shape for the question — consistent for common intents, but not validated or guaranteed; pass this whenever you need a SPECIFIC, validated, and stable shape. A cursor continuation reuses the first page’s columns, so it stays stable regardless.
questionNoNatural-language data question. Required unless cursor is provided. Returns matching rows without invoking the paid Modem agent.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description adds meaningful non-obvious behavior: the tool does not invoke the paid agent, cursor pagination does not re-run the search, and topic priority values map to specific integers. These details go beyond the structured annotations and help the agent predict behavior accurately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: purpose first, then read-only/exclusion, then usage mechanics, priority detail, and skill prerequisite. Every sentence contributes distinct information, and there is no filler or repetition of the tool title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even without an output schema, the description explains what comes back—matching rows, pagination via cursor, and priority values—and points to the required skill for deeper context. Combined with the rich parameter schema and annotations, the agent has enough information to invoke the tool correctly in a first attempt.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds value by explaining the question-or-cursor usage pattern and spelling out the priority integer mapping. It reinforces the schema's guidance on columns and pagination without repeating every schema detail, though it does not add much about limit or column validation beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Answer a natural-language question about your Modem data and get matching rows back.' It clearly differentiates itself from the agent tools by stating it is read-only and 'does not run the full Modem agent or spend agent credits.' This makes the tool's role unambiguous relative to siblings like modem_agent_invoke.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use context—natural-language data questions—and a clear exclusion: it does not run the full Modem agent or spend credits, so agents know not to use it when agent execution is needed. It also provides a prerequisite: 'Before your first call, read the skill: modem_skills({ name: "search-modem" })'.

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

update_companiesUpdate CompaniesB
DestructiveIdempotent
Inspect

Update fields on one or more existing companies. Before your first call, read the skill: modem_skills({ name: "write-tools" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
companiesYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=false, idempotentHint=true, and destructiveHint=true, so the description does not need to restate the mutation safety profile. It adds the useful prerequisite that the write-tools skill must be read first, but it does not clarify overwrite/merge semantics for omitted fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, action first, with no filler. The skill prerequisite is a necessary operational instruction and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The definition covers the prerequisite and basic purpose, but for a mutation tool with destructiveHint=true and no output schema it stays minimal: it omits update semantics, alternative routing, and any mention of what happens to values not supplied. It is adequate for a simple schema but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description should compensate by explaining the companies array, the required companyId, and field update semantics; it only adds 'one or more existing companies,' which the schema's minItems/maxItems already conveys. The nested connections and optional fields are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('update') and resource ('existing companies'), which makes the core action clear and separates it from create/merge siblings. It does not explicitly name or contrast any sibling, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'existing companies' implies this is for modifying already-created records rather than creating or merging, and the skill-reading instruction provides a clear prerequisite for use. However, it does not explicitly state when to prefer this over update_people, merge_companies, or other alternatives.

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

update_peopleUpdate PeopleB
DestructiveIdempotent
Inspect

Update fields on one or more existing people. Before your first call, read the skill: modem_skills({ name: "write-tools" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
peopleYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already establish that this is a write/destructive tool with idempotent behavior, so the description does not need to restate that. It adds a small amount of context by specifying 'existing people' and pointing to the write-tools skill, but it does not disclose what happens to omitted fields, null values, or failed updates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words: the first sentence states the operation and the second gives a concrete prerequisite. It is well-structured and front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema provides types and constraints, and annotations supply the safety profile, but the description leaves important semantics unstated, such as whether nested connections are replaced or merged and how null values behave. The pointer to the write-tools skill helps, but the description is not self-sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not elaborate on the people array, the required personId, or the meaning of fields like connections and primaryEmail. The phrase 'fields' is generic and adds no parameter-level semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action ('Update fields') and target resource ('existing people'), and the plural phrasing ('one or more') signals batch capability. This is enough to distinguish it from sibling tools like create_companies, merge_people, and add_people_to_company.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only explicit usage instruction is the prerequisite to read the write-tools skill before the first call. There is no guidance on when to choose this tool versus alternatives such as merge_people or update_companies, so the intended use case must be inferred from the name and opening sentence.

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

update_topicUpdate TopicA
DestructiveIdempotent
Inspect

Update a single topic (priority, lifecycle state, archived status, issue type, or keywords). Before your first call, read the skill: modem_skills({ name: "write-tools" }).

ParametersJSON Schema
NameRequiredDescriptionDefault
topicIdYes
archivedNoSet to true to archive the topic, false to unarchive it.
keywordsNoReplace the topic keywords/categories. Provide the full list of keywords.
priorityNoUpdate the topic priority. Valid values: very_low, low, default, high, very_high.
issueTypeNoUpdate the topic issue type classification. Valid values: bug_report, feature_request, complaint, praise, or null to clear.
archivedReasonNoOptional reason for archiving. Only used when archived=true.
lifecycleStateNoUpdate the topic lifecycle state. Valid values: open, in_progress, completed, dismissed. The unknown state is AI-assessed and cannot be set directly.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide the safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=true), so the description does not need to repeat those. It adds a non-annotation requirement: reading the 'write-tools' skill before first use. This is useful behavioral context beyond annotations, though it does not detail what destructive effects occur (e.g., whether archived status is reversible).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two terse sentences: the first captures the purpose and field scope, the second gives a critical prerequisite. There is no redundant filler, and the core action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 7 parameters and a detailed schema, the description covers the purpose, the fields, and a required skill check. There is no output schema, so return-value behavior is not explained, but that is a minor gap given the schema's richness and the annotations covering side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 86%, so the schema's per-parameter descriptions carry most of the meaning. The tool description merely lists the parameter names (priority, lifecycle state, etc.) without adding new semantics, format details, or cross-parameter constraints beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update') and resource ('a single topic'), and enumerates the specific fields (priority, lifecycle state, archived status, issue type, keywords). It distinguishes from siblings by explicitly noting 'single', which contrasts with bulk_update_topics, and the field list separates it from merge_topics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: it updates a single topic and lists which attributes can be changed. It also provides a prerequisite ('Before your first call, read the skill: modem_skills(...)'). However, it does not explicitly name alternatives like bulk_update_topics for multiple topics or update_people for other resources, so it stops short of full when/when-not guidance.

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.

  1. 1 tool update
    • Addedmodem_skills
  2. 14 tool updates
    • First observedadd_people_to_company
    • First observedbulk_update_topics
    • First observedcreate_companies
    • First observedmerge_companies
    • First observedmerge_people
    • First observedmerge_topics
    • First observedmodem_agent_cancel_run
    • First observedmodem_agent_get_run
    • First observedmodem_agent_invoke
    • First observedmodem_agent_send_message
    • First observedsearch_modem
    • First observedupdate_companies
    • First observedupdate_people
    • First observedupdate_topic

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Search your company's connected knowledge from any AI tool that speaks the Model Context Protocol. Supports querying across sources like Drive, SharePoint, Confluence, Slack, and Notion with permission filtering.
    0
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables to search, view, and interact with Intercom contacts and conversations, including sending customer-visible replies and internal notes.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources