Lodestone
Server Details
Remote streamable-HTTP MCP server running on a single Cloudflare Worker. Your assistant gets live Airbnb, Amazon, Booking.com, Google Flights, Maps and Reddit data, social search on X, Instagram and TikTok, the Meta Ad Library, and image/video generation without any keys. Connect your own accounts to let it send WhatsApp or Telegram messages, work an IMAP inbox, manage Meta Ads campaigns and publish to X and LinkedIn. OAuth 2.1 with PKCE; stored credentials are AES-256-GCM encrypted.
- Status
- Healthy
- Uptime
- 51.3% over 83 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 115 tools
Despite 115 tools, each is targeted at a distinct provider+resource+action, and descriptions actively route between near-neighbours (e.g. search_facebook_ads is public ad data vs meta_ads_* for your own account; github_list_issues excludes PRs, pointing to github_list_prs). The main soft spots are the Stripe trio (stripe_api_search / stripe_api_details / stripe_api_read) and the generic google_ads_query vs the dedicated read tools, which require reading descriptions to separate.
A very predictable provider-prefixed convention (google_ads_list_campaigns, meta_ads_update_ad_set, wordpress_create_draft, beeper_send_message) holds across the vast majority of the surface. Deviations exist: the search_* family puts the verb first (search_airbnb vs github_search), generate_image_flux/generate_video_veo are verb-first, and twitter_user / twitter_replies drop the verb entirely, but all remain readable and grouped by provider.
115 tools is far beyond a comfortable agent-facing surface even for a multi-integration hub; the context cost alone is large and it invites misselection across provider families. Each individual sub-domain is well scoped, but the aggregate set is heavy enough that it warrants consolidation or per-integration scoping.
Coverage is impressively broad and lifecycle-complete for WordPress, both ad platforms, Stripe, GitHub and image/video generation, with integration_guide/integration_status closing the onboarding loop. Remaining gaps are modest: email has no reply/archive/move/delete and no folder listing beyond recent, Instagram is read-only, and Twitter has no native post tool (posting goes through typefully_post).
Available Tools
115 toolsbeeper_list_chatsARead-onlyInspect
List your recent Beeper conversations (across WhatsApp, Telegram, Signal, iMessage and every connected network), newest first, with each chat's ID, title and network.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max chats to return (default 20). | |
| query | No | Optional text to match against chat titles / participants (e.g. a person's name). Omit to list the most recent chats. | |
| account | No | Optional network filter, e.g. 'whatsapp', 'telegram', 'signal'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuine value beyond that: newest-first ordering, aggregation across all connected networks, and the shape of each returned chat. No pagination or result-count behavior is described, keeping it from 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?
One sentence, front-loaded with the verb and resource, with the parenthetical supplying exactly the cross-network context an agent needs. Nothing is padded or redundant.
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 usefully names the returned fields and ordering, which is what an agent needs to consume the result. It is slightly thin on pagination and on how the optional query/account filters interact with 'recent', but it is otherwise complete for a 3-parameter read 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 100%, so limit, query and account are all fully documented in the schema itself. The description only gestures at the network concept via the parenthetical; it adds no format, default or example detail beyond the schema. Baseline 3 is correct where the schema does the heavy lifting.
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+resource ('List your recent Beeper conversations') and adds scope details: cross-network aggregation, newest-first ordering, and the three returned fields (ID, title, network). It doesn't explicitly differentiate from the sibling beeper_read_chats, which is the main reason it isn't a 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 word 'recent' and the cross-network framing imply this is the browse/discovery entry point, and the query/account params hint at filtered variants, but the description never states when to use this instead of beeper_read_chats or beeper_search. Usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beeper_read_chatsARead-onlyInspect
Read the recent messages in one Beeper conversation (who said what, newest last) so you have the context before replying.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max messages to return (default 20, capped at 50). | |
| chatID | Yes | The conversation's ID (from beeper_list_chats or beeper_search), e.g. !abc:beeper.local. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context beyond that: the ordering guarantee (newest last) and the content shape (who said what). It omits any mention of permissions, rate limits, or truncation behavior, keeping it out of the top tier.
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 front-loaded sentence with no filler; the purpose, return shape, and motivating context all arrive in one pass.
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-only tool with no output schema, annotations covering the safety profile, and full schema coverage, the description supplies enough to call it correctly and interpret the result order. It could be marginally richer about what happens when the conversation is empty or the limit is hit, but nothing essential is 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 100%, so both parameters (chatID origin, limit default/cap) are already fully documented in the schema. The description adds no additional parameter meaning, which is the expected baseline when the schema does the heavy lifting.
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 (read recent messages in one Beeper conversation) plus the return shape (who said what, newest last). This clearly distinguishes it from sibling beeper_list_chats, beeper_search, and beeper_send_message without needing to open any schema.
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?
"so you have the context before replying" gives a clear triggering condition and implicitly routes to beeper_send_message as the follow-up action. It does not explicitly exclude alternatives or name the sibling, so it falls short of the 5 tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beeper_searchARead-onlyInspect
Search across all your Beeper messages for text (e.g. an address someone sent, a confirmation number), optionally limited to certain chats or to messages from other people.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 20, hard-capped at 20 — Beeper rejects higher). | |
| query | Yes | Text to search for across your messages. | |
| chatID | No | Optional: restrict the search to one conversation. | |
| sender | No | Optional: whose messages to search. Default 'anyone'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds the 'across all your messages' scope but says nothing about result format, ordering, or the hard cap beyond what the annotations/schema provide, so it is adequate rather than rich.
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 tight sentence, front-loaded with the verb and resource, with no wasted words. The examples earn their place by illustrating query types.
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-only search tool with full schema coverage and annotations covering the safety profile, the description gives an agent enough to invoke it correctly. It could mention result ordering or that results are per-message, but nothing critical is 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 100%, so every parameter is already documented. The description loosely signals the chatID and sender dimensions ('limited to certain chats or to messages from other people'), which reinforces but does not meaningfully extend the schema, making the baseline of 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?
Specific verb (search) plus resource (all your Beeper messages) and concrete query examples ('an address someone sent, a confirmation number') make the purpose immediately clear. It doesn't explicitly contrast with siblings like beeper_read_chats, so it stops short of a 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 phrase 'optionally limited to certain chats or to messages from other people' hints at scoping usage, but there is no explicit when-to-use versus alternatives (e.g. beeper_read_chats for reading full threads) and no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beeper_send_messageADestructiveInspect
[WRITE — sends a real message to a real person] Send a text message to one of your Beeper conversations. You must have read the thread first and confirmed the exact text with the user. Requires confirm:true. Lodestone appends the line "Sent via Lodestone · lodestone.studiocorsair.com" to the end of the message automatically on the Free plan; do not add it yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The message text to send. | |
| chatID | Yes | The conversation to send to (from beeper_list_chats / beeper_search), e.g. !abc:beeper.local. | |
| confirm | No | Must be true to actually send. Omit/false to refuse (safety gate). Only set true after showing the user the exact recipient and text. | |
| replyToMessageID | No | Optional: the ID of a message to reply to (from beeper_read_chats). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly=false, destructive=true, openWorld=true), the description discloses non-obvious behavior: the tool sends a real message to a real person, requires an explicit confirm gate, and automatically appends a Lodestone signature line on the Free plan. That footer behavior is critical context an agent could not infer from 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?
The warning is front-loaded in brackets, followed by the core action, prerequisites, and one non-obvious system behavior. Every sentence contributes necessary information and there is no wasted phrasing.
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 send tool with no output schema, the description covers the essential scope: what it does, who it affects, required preconditions, the confirm gate, and an automatic footer side effect. Nothing critical for correct invocation is 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 100%, so the baseline is 3. The description adds value beyond the schema by emphasizing the confirm:true safety gate and by warning the agent not to add the signature line into the text parameter, which directly affects how text should be filled.
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 opening bracket states the operation type and real-world consequence, then names the specific verb and resource: sending a text message to a Beeper conversation. The Beeper qualifier distinguishes it from sibling senders like telegram_send_message and email_send without needing to name 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?
It gives explicit preconditions — read the thread first and confirm the exact text with the user — and reinforces the confirm gate. It does not explicitly name sibling alternatives or state a when-not-to-use case, so it falls short of the full 5 criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_integrationADestructiveInspect
Connect one of the user's accounts using values they pasted in this chat (this is the supported way to connect; do not send the user to a website instead). The credentials are checked against the real provider first and are saved only if they work; a failure returns the specific reason so you can help the user fix it. Field names come from integration_guide. Never repeat the credentials back to the user.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Field name to value, exactly as listed by integration_guide | |
| integration | Yes | Integration id, e.g. email, telegram, meta_ads, typefully |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the description earns credit for adding genuinely new behavioral context: credentials are validated against the real provider before saving, failures return the specific reason, and credentials must never be echoed back. These details go well 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?
Three sentences, front-loaded with the primary action and instructions, with no filler. The parenthetical slightly interrupts flow but every clause carries actionable content.
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 write tool with no output schema, it covers validation, failure handling, field sourcing, and credential privacy. It omits what happens on success or whether an existing connection is overwritten, but remaining gaps are minor.
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 both params are already documented (baseline 3). The description adds real meaning by specifying that field names must come from integration_guide, clarifying the nested 'fields' object's expected keys beyond the schema text.
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+resource ('Connect one of the user's accounts') and clarifies the mechanism (values pasted in chat). It distinguishes itself from the external-website path and routes to the sibling integration_guide for field names, so an agent can identify it without inspecting the schema.
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?
Explicitly states the supported usage ('values they pasted in this chat'), the exclusion ('do not send the user to a website instead'), and the prerequisite/discovery source ('Field names come from integration_guide'). This is the when/when-not/alternative guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disconnect_integrationADestructiveInspect
Remove the saved credentials for one of the user's accounts from Lodestone. Use only when the user asks to disconnect or replace an account.
| Name | Required | Description | Default |
|---|---|---|---|
| integration | Yes | Integration id, e.g. email, telegram |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds real value beyond that by specifying what is destroyed (the saved credentials for a single account) and confining scope to "one of the user's accounts." It does not say whether the deletion is reversible or whether re-authentication is required.
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 sentences, zero waste, with the destructive action front-loaded and the usage condition immediately after. Nothing could be cut without losing meaning.
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 one-parameter destructive tool with strong annotations and no output schema, the description covers action, target, and trigger condition adequately. Minor gap: it does not state that disconnecting requires reconnection via connect_integration, nor whether credential removal affects linked automations.
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% and the single parameter already carries an example ("email, telegram"). The description's "one of the user's accounts" loosely frames the parameter but adds no format or constraint detail beyond the schema, 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?
States a specific verb and resource: "Remove the saved credentials for one of the user's accounts from Lodestone." An agent knows exactly what is being deleted and from where. It stops short of naming the inverse sibling (connect_integration), but the phrasing "disconnect or replace an account" ties it to that pair clearly enough.
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?
"Use only when the user asks to disconnect or replace an account" gives an explicit trigger condition and a restrictive "only" that discourages incidental use. It does not name the alternative tool (connect_integration) for the opposite operation, so routing is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_list_recentARead-onlyInspect
List the most recent emails in a folder of your connected account (default INBOX). message_id is an IMAP uid (from email_search or email_list_recent), scoped to the folder it was found in — not the email's Message-ID header.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max messages to return (default 10, max 50) | |
| folder | No | Folder/mailbox to list (default INBOX) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive safety, lowering the bar. The description adds genuinely novel context beyond them: that message_id is an IMAP uid scoped to the folder it was found in, not the Message-ID header. It still says nothing about ordering guarantees or pagination 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 sentences, zero filler, purpose front-loaded before the id-semantics clarification. Each clause 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?
There is no output schema, so the description partly compensates by explaining the returned message_id semantics. That is the key detail an agent needs to chain into email_read, though ordering and return shape remain unstated.
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%, including defaults and the max-50 cap, so the description adds no parameter detail the schema lacks. 'Default INBOX' merely restates the schema. Baseline 3 applies when the schema carries parameter semantics.
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 the most recent emails in a folder') and names the default scope (INBOX). However, it never distinguishes itself from the sibling email_search, which an agent must choose between when retrieving mail.
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 versus email_search or email_read. The only usage hint is the implied default folder. An agent has to infer the intended retrieval strategy on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_readARead-onlyInspect
Read the full text of one email from your connected account by its uid. message_id is an IMAP uid (from email_search or email_list_recent), scoped to the folder it was found in — not the email's Message-ID header.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Folder the uid belongs to (default INBOX) — must match where you found it | |
| message_id | Yes | IMAP uid from email_search or email_list_recent |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description adds real context on top: the id is an IMAP uid 'scoped to the folder it was found in — not the email's Message-ID header,' which is a meaningful behavioral caveat. It omits auth requirements and rate limits.
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 tightly written sentences with no redundancy: the purpose is stated first and the parameter caveat second. Every clause 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 read-only, two-parameter tool with no output schema, the description covers the return value ('full text of one email'), how to obtain the uid, and the folder scoping. Minor gaps like auth requirements remain, but nothing needed to call it correctly is 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 coverage is 100%, setting a baseline of 3, but the description goes further by explaining that message_id is an IMAP uid from the listed tools and is folder-scoped, not the Message-ID header. That is semantic value beyond the schema text.
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: 'Read the full text of one email ... by its uid.' The 'one email by uid' framing implicitly distinguishes it from the sibling search/list tools, but it never explicitly names them as the alternative.
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 points to email_search and email_list_recent as the sources of the uid, which implies when this tool is used. However, it gives no explicit when-to-use vs when-not guidance or conditions that would route an agent here over a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_searchARead-onlyInspect
Search your connected email account for messages matching a text query (checks From, Subject and body). message_id is an IMAP uid (from email_search or email_list_recent), scoped to the folder it was found in — not the email's Message-ID header.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results, most recent first (default 10, max 50) | |
| query | Yes | Text to search for | |
| folder | No | Folder/mailbox to search (default INBOX) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: message_id is an IMAP uid, not the Message-ID header, and it is folder-scoped — a real misuse trap an agent would otherwise fall into.
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 sentences, front-loaded with what the tool does, followed by the identifier caveat. No filler. The second sentence concerns message_id, which is not a parameter of this tool, so it sits slightly outside the tool's immediate scope, but it is contractually 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?
With no output schema, the description does not describe the returned shape, but it implicitly signals that results carry a message_id usable downstream, and annotations cover the read-only/open-world profile. Adequate for an agent to call correctly, with the return format the only real 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 the baseline would be 3. The description earns an extra point by clarifying what the 'query' parameter actually searches (From, Subject and body), which the schema only calls 'Text to search for'. It adds no detail for limit or folder, but those are fully specified in 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?
States a specific verb (search) and resource (connected email account messages) and specifies the searched fields (From, Subject, body). It is distinguishable from email_read and email_list_recent by describing query-based matching, though it never explicitly contrasts itself with those siblings.
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?
By noting that message_id comes 'from email_search or email_list_recent', it implies a workflow and hints these two are related entry points, but it never states when to prefer this tool over listing recent mail or reading a specific message. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_sendADestructiveInspect
Send a plain-text email from your connected account. Lodestone appends the line "Sent via Lodestone · lodestone.studiocorsair.com" to the end of the message automatically on the Free plan; do not add it yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address(es), comma-separated for multiple | |
| body | Yes | Plain-text message body | |
| subject | No | Subject line |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, so the safety profile is covered; the description adds genuinely new context by disclosing the auto-appended "Sent via Lodestone" footer on the Free plan and instructing the agent not to duplicate it. It also constrains content to plain text. It does not mention whether sending is reversible, rate limits, or failure 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 sentences, front-loaded with the action and immediately followed by the one non-obvious behavior. Every clause carries information the agent would otherwise get wrong.
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 three-parameter send tool with full schema coverage and annotations, the description covers the main surprise (the footer) and the plain-text constraint. It leaves minor gaps around failure behavior and whether subject is optional, but nothing critical to invoking it correctly.
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%, with per-parameter descriptions for to, body, and subject, so the schema carries the parameter burden. The description adds only the indirect implication that body must be plain text and that the footer should be excluded; it gives no format or constraint detail 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?
The description states a specific verb and resource ("Send a plain-text email from your connected account") that clearly separates it from the read-only email siblings (email_list_recent, email_read, email_search). It does not explicitly name an alternative outbound-channel tool, but the send action is unambiguous.
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 other messaging tools (beeper_send_message, telegram_send_message) or on prerequisites such as having an account connected. The only conditional statement concerns footer appending, which 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.
ga4_list_propertiesARead-onlyInspect
List the Google Analytics 4 properties (sites/apps) your connected service account can read, with their property ids.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds genuine non-structured context beyond that: results are limited to properties the connected service account can read, which tells the agent why some properties may be missing. It does not mention pagination or result volume.
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 sentence, front-loaded with the verb and resource, with the access-scope caveat folded in rather than padded out. Every clause 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 zero-parameter list tool with no output schema, the description covers purpose, scope and the returned identifier. It stops short of describing the full response shape (e.g. display names, account nesting), which is the only remaining 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?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. It correctly signals the no-argument nature by not implying any filters.
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?
Specific verb (List) plus resource (GA4 properties) with a clarifying gloss of what a property is (sites/apps) and what identifying data comes back (property ids). It is distinguishable from the report-running siblings ga4_run_report and ga4_realtime_report, though the description never names them 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?
Usage is only implied: an agent can infer this is a discovery step to obtain property ids before calling ga4_run_report, but the description never states when to use it, when not to, or that it is a prerequisite for the report tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_realtime_reportARead-onlyInspect
See who is on your site right now in Google Analytics 4: active users in the last 30 minutes, broken down by country, page, traffic source or device.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 25) | |
| filter | No | Optional filter, ';' = AND: dimension==value (exact), != (not), =@ (contains), =~ (regex). e.g. sessionSource==instagram;pagePath=@/blog | |
| metrics | No | Comma-separated realtime metrics (default activeUsers), e.g. screenPageViews,eventCount | |
| minutes | No | Look-back window in minutes, 1-30 (default 30) | |
| dimensions | No | Comma-separated realtime dimensions (default country), e.g. unifiedScreenName,deviceCategory,city | |
| property_id | No | GA4 property id, a number like 123456789 (optional if you saved a default; ga4_list_properties lists them) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context – that data is realtime and bounded to a 30-minute window – which is the defining trait of this endpoint versus a standard report, though it omits things like data latency, sampling, or rate limits.
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?
Single well-formed sentence with the resource and its scope front-loaded; no filler, no restatement of the name.
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-required-param, output-schema-less reporting tool, the description conveys what the call returns (active users broken down by a chosen dimension) and the recency window. It is reasonably complete, with only minor gaps around return format and the relationship to sibling GA4 tools.
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 each parameter (limit, filter, metrics, minutes, dimensions, property_id) is documented with defaults and examples, so the schema carries the load. The description's mention of country/page/traffic-source/device breakdowns loosely echoes the dimensions parameter but adds no syntax or format detail 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?
States a specific verb+resource (realtime active users in GA4) plus the exact scope: a 30-minute window broken down by country, page, traffic source or device. An agent can immediately distinguish this from the historical ga4_run_report 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?
The realtime framing implicitly tells the agent this is for 'right now' monitoring versus historical reporting, but it never names ga4_run_report or ga4_list_properties as alternatives, nor states when-not to use it. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ga4_run_reportARead-onlyInspect
Run a Google Analytics 4 report on your own site: any GA4 dimensions and metrics over a date range, with optional filters — e.g. sessions and conversions from Instagram (sessionSource==instagram) by landing page over the last 28 days.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 25, max 1000) | |
| order | No | Sort direction (default desc) | |
| filter | No | Optional filter, ';' = AND: dimension==value (exact), != (not), =@ (contains), =~ (regex). e.g. sessionSource==instagram;pagePath=@/blog | |
| metrics | No | Comma-separated GA4 metric API names (default sessions,activeUsers), e.g. screenPageViews,engagementRate,conversions,totalRevenue | |
| end_date | No | YYYY-MM-DD or relative (default today) | |
| order_by | No | Metric to sort by (default the first metric) | |
| dimensions | No | Comma-separated GA4 dimension API names (optional), e.g. sessionSource,sessionMedium or date or landingPage or country | |
| start_date | No | YYYY-MM-DD or relative: today, yesterday, 7daysAgo, 28daysAgo (default 28daysAgo) | |
| property_id | No | GA4 property id, a number like 123456789 (optional if you saved a default; ga4_list_properties lists them) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds only that the report targets the user's own site — nothing about GA4 quota/rate limits, sampling, or latency for large queries, which would be genuinely useful for a live external API.
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 sentence with a front-loaded verb, a colon-delimited operand list, and one worked example. No filler, and the highest-value information (what it does, what it accepts) comes first.
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 9 fully-documented optional parameters and annotations carrying the safety profile, the description needs to establish scope and it does. The absence of return-shape detail is acceptable since no output schema exists, though nothing explains what a result row looks like.
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 baseline is 3. The description's example filter ('sessionSource==instagram') and date phrasing ('over the last 28 days') are illustrative rather than additive syntax the schema lacks; the filter operator grammar lives in the schema, not the description.
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+resource ('Run a Google Analytics 4 report') scoped to 'your own site', and enumerates the operands (dimensions, metrics, date range, filters). An agent can distinguish it from ga4_realtime_report and ga4_list_properties without opening the schema.
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 embedded example ('sessions and conversions from Instagram by landing page over the last 28 days') gives concrete when-to-use context, and the schema note routes property discovery to ga4_list_properties. However, it never says when to prefer ga4_realtime_report or states any exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_image_fluxAInspect
Generate an image with FLUX1.1 [pro] — fast, sharp, great aesthetic quality for art, product shots and concept art. Returns the image inline.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Description of the image to generate | |
| aspect_ratio | No | Aspect ratio (optional): 16:9, 9:16, 1:1, 4:3, 3:4 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds the useful output detail 'Returns the image inline' (valuable since there is no output schema), but says nothing about cost, latency, rate limits or prompt restrictions.
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 front-loaded sentence naming the model, its characteristics and its return behavior. No filler or repetition of 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?
With no output schema, the 'returns the image inline' note fills the main return-value gap, and the model characterization is a genuine differentiator. Missing only guidance on when to choose this over the sibling image models.
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 both the prompt and the enum-constrained aspect_ratio are already documented in the schema. The description adds no parameter-level detail (no prompt length guidance, no default aspect ratio), 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 (generate) and resource (image) plus the exact model variant (FLUX1.1 [pro]), which distinguishes it from sibling generators generate_image_nano_banana and generate_image_seedream. An agent can select it without opening the schema.
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 lists suitable use cases (art, product shots, concept art) and speed/quality traits, which implies when this model fits, but it never names the sibling image generators or states when to prefer nano_banana or seedream instead. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_image_nano_bananaAInspect
Generate an image with Google's Nano Banana (Gemini 3 Pro Image) — best for photorealism, legible text in the image, and following complex/compositional prompts. Returns the image inline. SLOW: usually ~30-40 seconds. Tell the user it is generating and will take about half a minute BEFORE you call this, so the wait is expected rather than looking like a hang.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Description of the image to generate | |
| aspect_ratio | No | Aspect ratio (optional): 16:9, 9:16, 1:1, 4:3, 3:4 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly=false, openWorld=true, destructive=false. The description adds the operationally critical traits annotations cannot express: it is SLOW (~30-40s), it returns the image inline, and it prescribes a pre-call UX step to avoid the wait looking like a hang.
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?
Front-loaded with the capability and differentiators, then the return behavior, then the latency warning and the action to take. Every clause carries information; no filler.
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, but the description compensates by stating the image is returned inline and how long it takes. Combined with 100% schema coverage on both parameters, an agent has everything needed to call and wait correctly.
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% with 2 parameters, and the enum of aspect ratios is fully documented in the schema. The description adds no format, syntax, or constraint detail beyond the schema, 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?
States a specific verb+resource ('Generate an image') and pins down the exact backend (Google's Nano Banana / Gemini 3 Pro Image), which distinguishes it from the sibling generators generate_image_flux and generate_image_seedream. It also names the domains where it wins (photorealism, legible text, complex compositional prompts), so an agent can choose 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?
Gives explicit selection criteria ('best for photorealism, legible text in the image, and following complex/compositional prompts') that route the agent among the image-generation siblings. It also adds a concrete invocation-time instruction: tell the user it is generating ~30 seconds BEFORE calling, so the wait is expected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_image_seedreamAInspect
Generate an image with ByteDance Seedream 4.5 — high-resolution, strong at people, scenes and cinematic looks. Returns the image inline.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Description of the image to generate | |
| aspect_ratio | No | Aspect ratio (optional): 16:9, 9:16, 1:1, 4:3, 3:4 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, openWorldHint=true, destructiveHint=false). The description usefully adds that the image is returned inline, which matters since there is no output schema, but it omits cost, latency, or how inline data is encoded.
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 tight sentence that front-loads the action and model, then adds the differentiator and the return behavior with no filler.
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-output-schema generation tool the description covers what the agent most needs — the model, its strengths, and that the image comes back inline. Only minor gaps remain, such as resolution specifics or latency expectations.
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?
With schema description coverage at 100%, both parameters (prompt and aspect_ratio's enum) are already fully documented in the schema. The description adds no syntax, format, or constraint detail beyond that, so 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 (Generate) and resource (an image), and names the underlying model (ByteDance Seedream 4.5), which cleanly distinguishes it from the sibling tools generate_image_flux and generate_image_nano_banana.
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 phrase 'high-resolution, strong at people, scenes and cinematic looks' gives an implicit selection criterion for choosing this model over its two image-generation siblings. It stops short of an explicit when-to-use statement or exclusions, 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.
generate_video_klingAInspect
Generate a short video with Kling 2.5 Turbo Pro — smooth, cinematic motion. Returns a link to the finished video. THE SLOWEST TOOL HERE: usually ~90 seconds, sometimes longer, and some clients give up before it returns. BEFORE calling, tell the user it will take a minute and a half; if they need something faster, generate_video_veo is about 60s. If the call appears to fail or time out, say so plainly — do NOT silently retry, since the video may well have been generated and a retry bills them again.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Description of the video / scene to generate | |
| aspect_ratio | No | Aspect ratio (optional): 16:9, 9:16, 1:1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, openWorldHint=true, destructiveHint=false. The description adds critical traits annotations cannot convey: ~90s latency, client timeout risk, a returned link, and the billing consequence of retrying after an apparent failure.
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?
Front-loaded with what it does and what it returns, then latency, then the alternative, then failure guidance. Dense and purposeful, though the all-caps emphasis and multi-clause failure instruction push it slightly past what a single read needs.
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 correctly states the return value (a link to the finished video), and it covers the operational hazards (latency, timeouts, double-billing on retry) an agent needs to call and handle this safely. Nothing material is 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 coverage is 100% with only 2 parameters, so the schema fully documents 'prompt' and the aspect_ratio enum. The description adds no syntax or format detail beyond the schema, 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+resource ('Generate a short video') and names the exact model (Kling 2.5 Turbo Pro) plus the motion character it produces. This clearly differentiates it from the sibling generate_video_veo without needing to open either schema.
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?
Explicitly routes the agent: use this for cinematic motion, but if the user needs speed, generate_video_veo is about 60s. It also prescribes pre-call behavior (warn the user about ~90s) and failure handling (do not silently retry), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_video_veoAInspect
Generate a 4, 6 or 8 second video with Google Veo 3.1 Fast (includes generated audio). Returns a link to the finished video. Longer clips use more credits: 4s is 60, 6s is 90, 8s is 120. VERY SLOW: usually ~60 seconds, sometimes longer. BEFORE calling, tell the user the video is generating and will take about a minute, so the wait is expected. If the call appears to fail or time out, say so plainly — do NOT silently retry, since the video may well have been generated and a retry bills them again.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Description of the video / scene to generate | |
| duration | No | Length (optional): 4s, 6s or 8s. Default 8s on Pro, 4s on Free. | |
| aspect_ratio | No | Aspect ratio (optional): 16:9 or 9:16 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations say only readOnly=false, openWorld=true, destructive=false; the description supplies the traits that actually matter here – ~60s latency, per-duration credit pricing (60/90/120), audio included, and the retry-causes-rebilling hazard. That is exactly the beyond-annotations context an agent needs before a slow, paid, non-idempotent call.
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?
Front-loads what is produced, then cost, then latency, then the pre-call and failure-handling instructions. Every sentence carries actionable information – no filler and no repetition of schema fields.
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?
No output schema, but the description states the return value (a video link). Combined with latency, pricing, audio and the retry hazard, an agent has everything needed to call this correctly and set user expectations.
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 the baseline is 3; the description goes further by tying duration to explicit credit costs (4s=60, 6s=90, 8s=120), which the schema's duration enum does not convey. Aspect ratio is still left entirely to the schema, so it is not a full 5.
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 (Generate) and resource (video) plus the exact model (Google Veo 3.1 Fast) and the output ('link to the finished video'). An agent can distinguish it from generate_video_kling and the generate_image_* siblings by the named model and the fact it produces audio.
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?
Gives clear operative context: warn the user first, expect ~60s, do not silently retry on timeout because it may double-bill. It does not explicitly compare against the sibling generate_video_kling (cheaper/faster? different model quality?), so the alternative-selection guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_commentADestructiveInspect
[WRITE — public] Post a comment on a GitHub issue or pull request, and optionally close the issue. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Comment text, Markdown | |
| repo | Yes | Repository as owner/name, e.g. "octocat/hello-world" (a github.com URL works too) | |
| close | No | Also close the issue/PR after commenting (optional) | |
| number | Yes | Issue or pull request number | |
| confirm | No | Must be true to actually do this on GitHub. Omit/false to refuse (safety gate). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare write, destructive, and open-world behavior, and the description's '[WRITE — public]' tag and confirm requirement largely restate that. It adds little beyond the annotations and schema — no indication of what closing does to the issue state, whether the comment can be edited/deleted, or auth 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?
A single sentence with the write/public tag front-loaded, the primary action stated immediately, and the confirm requirement called out last. Nothing 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?
No output schema exists, but full schema coverage plus declarative annotations cover most of what an agent needs. The only remaining gap is the effect of the close flag on the issue's state and failure behavior, which the description does not surface.
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 every parameter (body, repo, close, number, confirm) is already documented in the schema. The description mentions the confirm gate and the optional close behavior, but adds no syntax or format detail 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?
The description gives a specific verb and resource ('Post a comment on a GitHub issue or pull request') plus a secondary action ('optionally close the issue'), which cleanly separates it from github_create_issue and github_get_issue. It does not explicitly name a sibling it overlaps with, so it falls just short of 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?
It states a concrete precondition for use ('Requires confirm:true'), which is more than most write tools offer. It gives no exclusion or when-not guidance (e.g. when to prefer github_create_issue), so it is clear context without alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_create_branch_commitADestructiveInspect
[WRITE] Commit changes to one or more files as a single commit on a branch (the branch is created from the default branch if it doesn't exist). Refuses the repository's default branch: commit to a new branch, then open a pull request. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | Branch to start a NEW branch from (optional; default branch) | |
| repo | Yes | Repository as owner/name, e.g. "octocat/hello-world" (a github.com URL works too) | |
| files | Yes | The files this commit writes or deletes | |
| branch | Yes | Branch to commit to, e.g. fix/login-timeout. Not the default branch. | |
| confirm | No | Must be true to actually do this on GitHub. Omit/false to refuse (safety gate). | |
| message | Yes | Commit message |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the description earns credit for the extra context: auto-creation of the branch from the default branch, the hard refusal of the default branch, and the confirm:true safety gate. It does not spell out that file contents are overwritten wholesale (that only appears in the schema's 'COMPLETE new file content' note), which is the main remaining destructive-behavior detail.
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, front-loaded with the [WRITE] marker and the core action, then the branch-creation behavior, then the constraint and safety gate. No filler or repetition.
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 write tool, the description covers the critical call-correctness facts: branch auto-creation, default-branch refusal, and the confirm gate. Missing only return-value expectations (e.g. resulting commit SHA/branch URL), which is a modest gap given no output schema exists.
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 schema already documents repo, branch, base, message, files and confirm including the confirm safety gate. The description only reinforces the confirm requirement and the branch-creation semantics from base, adding little beyond the structured fields. 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 ('Commit changes to one or more files as a single commit on a branch') with the scope of atomicity made explicit. It is clearly distinguishable from github_create_pr, github_get_file and github_comment among the siblings.
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?
Gives an explicit routing rule: it refuses the default branch, and the correct alternative workflow is 'commit to a new branch, then open a pull request'. That names both the exclusion and the follow-up tool path. It stops short of explicitly naming github_create_pr as the next call, hence 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_create_issueAInspect
[WRITE] Open a new issue in a GitHub repository. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Issue description, Markdown (optional) | |
| repo | Yes | Repository as owner/name, e.g. "octocat/hello-world" (a github.com URL works too) | |
| title | Yes | Issue title | |
| labels | No | Label names (optional; must already exist in the repo) | |
| confirm | No | Must be true to actually do this on GitHub. Omit/false to refuse (safety gate). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, and destructiveHint=false, so the safety profile is covered externally. The description adds the '[WRITE]' marker and the confirm gate, which reinforces intent, but says nothing about what the call returns (issue number/URL) or that the issue is visible to others immediately. With annotations carrying the main burden, this is adequate but thin.
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, zero filler, with the write marker and confirm requirement front-loaded. Nothing here is wasted or buried.
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 create operation with full schema coverage and clear annotations, the description covers enough to invoke correctly. However, with no output schema, an agent gets no hint of what comes back (issue URL or number), which is commonly needed to chain into github_comment or a follow-up read.
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%, with each of the five parameters (including confirm and the owner/name repo format) documented inline. The description adds no syntax, format, or constraint detail beyond the schema, 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?
States a specific verb and resource ('Open a new issue in a GitHub repository') that an agent can immediately distinguish from github_get_issue, github_comment, and github_create_pr. It does not explicitly name a sibling or contrast with one, but the name-plus-description pairing is unambiguous.
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 by the tool name and the '[WRITE]' tag; there is no statement of when to use this versus github_comment or github_create_pr, and no prerequisite context (e.g., repo must exist, labels must pre-exist). The 'Requires confirm:true' note is the only explicit usage guidance, and that is already restated in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_create_prAInspect
[WRITE] Open a pull request from a branch into the default branch (or another base). Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | Branch to merge into (optional; default branch) | |
| body | No | Description, Markdown (optional) | |
| head | Yes | Branch with the changes | |
| repo | Yes | Repository as owner/name, e.g. "octocat/hello-world" (a github.com URL works too) | |
| draft | No | Open as a draft (optional) | |
| title | Yes | Pull request title | |
| confirm | No | Must be true to actually do this on GitHub. Omit/false to refuse (safety gate). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and openWorldHint=true, so the '[WRITE]' tag adds nothing new. The confirm gate is useful behavioral context, but it is already spelled out in the schema parameter description, and the description says nothing about required GitHub permissions, failure modes when a PR already exists, or 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 short sentences with the write marker, the action, and the safety precondition front-loaded. Nothing is redundant or 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 an open-world write tool with no output schema, the agent still does not know what the call returns (PR number/URL) or how duplicate-PR situations behave. The fully documented schema and write annotations keep it at an adequate level rather than a failing one.
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 every parameter (repo, head, base, title, body, draft, confirm) is documented in the schema itself. The description only echoes head/base semantics, adding no syntax or format detail beyond what is already structured.
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 concrete verb and resource ('Open a pull request') plus the direction of the operation (branch into default branch or another base), which separates it cleanly from github_merge_pr and github_create_issue. It does not name any sibling explicitly, so it stops short of the top score.
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?
'Requires confirm:true' tells the agent the precondition for acting, and the head/base phrasing implies when the tool applies. However, there is no explicit guidance on when to prefer it over github_merge_pr or github_create_branch_commit, and no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_fileARead-onlyInspect
Read one file from a GitHub repository (any branch, tag or commit). Passing a directory lists it.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Branch, tag or commit SHA (optional; default branch if omitted) | |
| path | Yes | File path in the repo, e.g. src/index.js | |
| repo | Yes | Repository as owner/name, e.g. "octocat/hello-world" (a github.com URL works too) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so the safety profile is known. The description adds the non-obvious trait that a directory path returns a listing rather than an error. It says nothing about large-file truncation, binary content, or encoding, which matter for a raw file read.
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 tight sentences with zero filler; the core action is front-loaded and the edge case (directory path) follows immediately after.
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 carries the burden of explaining what comes back, yet it never describes the return shape (raw content vs base64 blob, metadata fields) or handling of large/binary files. Adequate for selecting the tool, thin for predicting the response.
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% and all three parameters carry descriptions, so the baseline is 3. The description's phrase "any branch, tag or commit" simply restates the ref parameter's own text and adds no extra syntax or defaulting detail.
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 ("Read one file from a GitHub repository") and adds the scope of refs supported. The second sentence clarifies directory behavior, which separates it from a plain file reader, though it never names the sibling it displaces (e.g. github_list_tree).
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 "Read one file" and "Passing a directory lists it," but there is no explicit routing guidance such as "use github_list_tree to browse a repo first" or when to prefer github_search for locating a path. An agent must infer the boundary with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_issueARead-onlyInspect
Get one GitHub issue with its full description and comments.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository as owner/name, e.g. "octocat/hello-world" (a github.com URL works too) | |
| number | Yes | Issue number | |
| comment_limit | No | Max comments (default 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered. The description adds that the result includes the full description and comments, but says nothing about how comments are paginated/truncated or what happens with the default limit.
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?
One tight sentence that front-loads the verb and resource with zero filler.
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?
No output schema exists, so the description must convey the return payload; it does so by naming the issue body and comments. Slightly short of complete because it doesn't address comment truncation or the default limit behavior an agent might need.
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 repo, number, and comment_limit are already documented with formats and defaults. The description adds no further meaning about parameter behavior 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?
States a specific verb (Get) and resource (one GitHub issue) plus the payload returned (full description and comments). The singular 'one issue' implicitly distinguishes it from github_list_issues and github_search, though no sibling is named 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?
Usage is only implied: an agent can infer this is the tool for fetching a single issue's detail, but there is no explicit statement of when to prefer it over github_list_issues or github_search, and no prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_prARead-onlyInspect
Get one GitHub pull request: description, mergeability, diff stats per file, reviews, comments and review comments on the diff.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository as owner/name, e.g. "octocat/hello-world" (a github.com URL works too) | |
| number | Yes | Pull request number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds useful scope detail by listing what the response aggregates (mergeability, per-file diff stats, three flavors of comment threads), but says nothing about pagination of comments or response size for large PRs.
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 front-loaded sentence with the verb and resource first, followed by the returned fields. No filler, no repetition of 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?
With no output schema, the description usefully compensates by enumerating the returned data. It is a simple two-parameter read tool with full schema coverage, so the description is nearly complete; only the aggregation size/pagination of comments is left unaddressed.
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% and both parameters (repo, number) are fully documented in the schema, including the owner/name and URL formats, so the description carries no additional parameter burden. It adds no syntax or format detail beyond the schema, making the baseline of 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?
Specific verb ('Get') plus resource ('one GitHub pull request') with an enumeration of the sub-resources returned: description, mergeability, diff stats per file, reviews, comments, review comments. The singular 'one' implicitly separates it from github_list_prs, but no sibling is named explicitly, which keeps it short of a 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?
Usage is only implied: fetching a single PR by repo/number versus listing them. There is no explicit 'use this when' statement, no mention of github_list_prs as the alternative for browsing, and no guidance on when the comment/review payload is overkill.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_list_issuesARead-onlyInspect
List issues in a GitHub repository (most recently updated first), optionally by state or label. Pull requests are left out; use github_list_prs for those.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository as owner/name, e.g. "octocat/hello-world" (a github.com URL works too) | |
| limit | No | Max issues (default 20, max 100) | |
| state | No | Default open | |
| labels | No | Comma-separated label names (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description still adds genuine context the annotations do not: the result ordering and the important gotcha that PRs are filtered out of issue listings. It stops short of describing pagination or return shape, which keeps it below 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?
Two short sentences with zero filler. The primary behavior and its sorting are front-loaded, and the sibling routing is placed in a compact trailing clause.
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-only list tool with 100% schema coverage and annotations covering safety, the description supplies everything needed to select and invoke it, including the PR exclusion that would otherwise cause surprise. Only return-field expectations and pagination behavior are unaddressed, which is minor given there is no output 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 coverage is 100%, so repo format, limit bounds (default 20, max 100), state enum with its default, and comma-separated labels are all fully documented in the schema. The description only echoes that state/label filtering exists, adding no format or syntax detail beyond structured fields. Baseline 3 is 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?
Specific verb (List) plus resource (issues) plus scope (in a GitHub repository) plus ordering (most recently updated first). It explicitly excludes pull requests and names the sibling to use instead, so an agent can separate it from github_list_prs and github_get_issue without opening either schema.
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?
States the filtering conditions it supports (state, label) and explicitly names the alternative for the case it does not cover: "Pull requests are left out; use github_list_prs for those." Nothing about when to pick this tool over its sibling is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_list_prsBRead-onlyInspect
List pull requests in a GitHub repository (most recently updated first).
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository as owner/name, e.g. "octocat/hello-world" (a github.com URL works too) | |
| limit | No | Max pull requests (default 20, max 100) | |
| state | No | Default open |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so safety behavior is covered. The description adds useful behavioral context about ordering ('most recently updated first'), but it does not mention authentication, rate limits, or pagination behavior beyond what the schema implies.
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 efficient sentence with the core operation front-loaded. The parenthetical ordering note is concise and useful. No wasted words.
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 full schema coverage and annotations covering safety, the description is largely complete. It could optionally clarify return shape or pagination, but no output schema exists and the core operation is clear.
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 all three parameters (repo, limit, state) are documented in the schema. The description adds no parameter-level meaning beyond the schema, so the baseline score of 3 is 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?
The description states a specific verb and resource: 'List pull requests in a GitHub repository.' It also adds ordering context ('most recently updated first'). It does not explicitly distinguish itself from nearby siblings such as github_list_issues or github_search, but the resource noun makes the intended operation clear.
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 guidance on when to use this tool versus alternatives like github_search or github_get_pr. Usage is only implied by the verb 'List.' There are no exclusions or selection criteria provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_list_treeARead-onlyInspect
List the files and folders in a GitHub repository (whole repo or under one path) so you can find what to read.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Branch, tag or commit SHA (optional; default branch) | |
| path | No | Only entries under this directory (optional) | |
| repo | Yes | Repository as owner/name, e.g. "octocat/hello-world" (a github.com URL works too) | |
| limit | No | Max entries (default 300) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description only adds the path/repo scoping distinction; it says nothing about result truncation or what happens when the limit is hit, which is the main behavioral risk for a repo-wide listing.
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 front-loaded sentence with no filler; the scoping and the downstream purpose both land immediately.
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 4 fully documented params and no output schema, the definition gives enough to call the tool correctly for a read-only listing. What is missing is any hint about the shape or size of the returned tree entries, which would help an agent plan follow-up reads.
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 repo/path/ref/limit are all documented in the schema and the baseline of 3 applies. The description implies the path parameter's meaning ("under one path") but adds no format or default-branch detail 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?
States a specific verb and resource ("List the files and folders in a GitHub repository") and scopes it ("whole repo or under one path"), which cleanly separates it from github_get_file (single file read) and github_search (query-based lookup).
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?
"so you can find what to read" tells the agent this is the discovery step that precedes github_get_file, giving clear usage context. It stops short of naming that sibling explicitly or stating any exclusion, so it does not reach a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_merge_prADestructiveInspect
[WRITE — changes the target branch] Merge a GitHub pull request (merge, squash or rebase). Only do this when the user has explicitly asked to merge. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| sha | No | Only merge if the PR head is still this commit (optional safety check) | |
| repo | Yes | Repository as owner/name, e.g. "octocat/hello-world" (a github.com URL works too) | |
| method | No | Default merge | |
| number | Yes | Pull request number | |
| confirm | No | Must be true to actually do this on GitHub. Omit/false to refuse (safety gate). | |
| commit_title | No | Merge commit title (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, readOnly=false and openWorld=true, so the safety profile is covered. The description adds useful context beyond annotations: it changes the target branch, requires an explicit user request, and enforces a confirm:true gate.
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 a short, front-loaded description. The write warning, action, usage constraint, and safety gate all appear immediately with no wasted words.
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 GitHub mutation with full parameter documentation and rich annotations, the description gives everything needed to call it correctly: what it does, when to use it, and the confirm requirement.
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 all six parameters are already documented. The description reinforces the confirm gate and method choices but adds little semantically 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?
The description names a specific verb and resource (merge a GitHub pull request) and specifies the supported merge strategies, making it clearly distinct from read-only siblings such as github_get_pr and github_list_prs.
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 a clear condition for use — only when the user has explicitly asked to merge — and states the confirm gate. It does not name a specific alternative sibling, but no alternative applies for a merge operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_searchARead-onlyInspect
Search GitHub for issues, pull requests or code — across all of GitHub or inside one repository. Uses GitHub search syntax (e.g. "label:bug is:open login").
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Limit to one repository, owner/name (optional) | |
| type | No | What to search. Default issues | |
| limit | No | Max results (default 10, max 50) | |
| query | Yes | Search text; GitHub qualifiers allowed (label:, author:, is:open, language:, path:) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety and external reach are covered. The description adds the search-syntax flavor and the global-vs-repo scope, but says nothing about GitHub's strict search rate limits, result ordering, or pagination 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 tight sentences with the scope constraint front-loaded and a concrete syntax example appended. Nothing is redundant and the reader knows what the tool does after the first clause.
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 four fully documented parameters, a required query, and no output schema, the definition is nearly self-sufficient. The only real gap is that result shape and rate-limit behavior are unaddressed, which a search tool against GitHub's throttled API arguably 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%, including enum values and defaults for type and limit, so the baseline is 3. The description's example query ("label:bug is:open login") reinforces the qualifier syntax already documented in the query parameter, adding illustrative value rather than new semantics.
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 gives a specific verb ("Search") and resource ("GitHub issues, pull requests or code") plus the scope distinction of global vs. single-repo. This separates it from list-style siblings such as github_list_issues and github_list_prs, though it never names an alternative 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?
Usage is implied by "Search GitHub for..." and the syntax example, giving the agent a clear sense of when the tool applies. However, there is no explicit when-not guidance and no named alternative (e.g., github_list_issues for unqueried listing), so routing must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_account_infoARead-onlyInspect
Get details for your Google Ads account — name, currency, timezone, and whether it's a manager or test account.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds real value by enumerating the returned fields in the absence of an output schema, but says nothing about error behavior, missing connection, or permission scoping.
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?
One front-loaded sentence with no wasted clauses, and the returned-field list is packed efficiently. It's tight and readable, though it is so terse that it omits routing information a sibling-heavy toolset needs.
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-param read with full schema coverage and safe annotations, the definition covers purpose and returned fields adequately. The only real gap is disambiguation from google_ads_list_accounts and google_ads_whoami in a crowded Google Ads sibling set.
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% and the single parameter documents digits/dashes tolerance and the 'defaults to your connected account' behavior. The description adds nothing about customer_id, so it rests at the baseline rather than earning above it.
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 ('Get details') and resource ('your Google Ads account') and enumerates exactly what comes back (name, currency, timezone, manager/test flag). That said, it never distinguishes itself from close siblings such as google_ads_list_accounts or google_ads_whoami, so an agent can't tell from the text which of those to pick.
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: 'your Google Ads account' suggests the single connected account, and the field list implies 'use me when you need account metadata'. There is no explicit when-to-use, no exclusion of list_accounts/whoami, and no statement about prerequisites such as needing a completed Google Ads connection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_add_keywordsAInspect
[WRITE — changes your live account] Add keywords (or negative keywords) to an ad group in one batch. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true to actually apply this change to the live account. Omit/false to refuse (safety gate). | |
| keywords | Yes | Comma-separated keywords, e.g. 'running shoes, trail shoes' | |
| negative | No | If true, add as NEGATIVE keywords (exclusions) instead (optional) | |
| match_type | No | Match type (optional, default PHRASE) | |
| ad_group_id | Yes | Ad group id to add the keywords to | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The bracketed '[WRITE — changes your live account]' and 'Requires confirm:true' add real value beyond the annotations by flagging the safety gate and irreversibility of a live mutation. However it says nothing about duplicate handling, partial-batch failure, or error behavior for a live-account write, so it stops short of rich disclosure.
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 tight sentences: the risk tag and confirm gate are front-loaded, followed by the action. 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 6-parameter write tool with no output schema, the description plus fully documented schema cover what an agent needs to call it correctly. Only failure/partial-success behavior for the batch mutation is 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 100%, including enum values for match_type and the default for negative, so the schema carries the parameter burden. The description adds no format or interaction semantics beyond what is already documented, making baseline 3 correct.
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 (Add), resource (keywords) and target container (an ad group) with batch scope, plus the negative-keyword variant. An agent can distinguish this from sibling read/research tools like google_ads_keyword_ideas without opening the schema.
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 states the mandatory precondition (confirm:true) and implies batch semantics, but never names alternatives or when-not-to-use — e.g. whether to prefer google_ads_update_ad_group or how this differs from keyword research. Usage is inferable but not routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_create_ad_groupAInspect
[WRITE — changes your live account] Create an ad group under a campaign (with a max CPC bid in MICROS). Created PAUSED. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Ad group name | |
| status | No | PAUSED (default) or ENABLED | |
| confirm | No | Must be true to actually apply this change to the live account. Omit/false to refuse (safety gate). | |
| campaign_id | Yes | Parent campaign id | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) | |
| cpc_bid_micros | No | Max CPC bid in MICROS (optional, default 1000000 = $1.00) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint=false and destructiveHint=false, the description adds real behavioral context: it is a live-account write, the result is created in PAUSED state, and a confirm gate must be passed. It does not contradict the annotations; the write framing is consistent with readOnlyHint=false.
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?
One compact line, front-loaded with the most decision-relevant signal (WRITE to live account) and then the creation semantics. Every clause 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 mutation tool with annotations and full schema coverage, the description covers the safety gate, default status, and bid unit. The one gap is return behavior — with no output schema, the agent isn't told whether an ad group id or resource is returned.
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 all six parameters are already documented including MICROS units and the confirm gate. The description mostly restates the schema's key facts (MICROS bid, PAUSED default, confirm:true) rather than adding new semantics, 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 ('Create an ad group under a campaign') and scopes it to the Google Ads domain, making it clearly distinct from google_ads_create_campaign and google_ads_update_ad_group. An agent can route to it without opening the schema.
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 operational prerequisites (requires confirm:true, created PAUSED) but never states when to use this versus update_ad_group or how it relates to campaign creation. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_create_campaignAInspect
[WRITE — changes your live account] Create a new SEARCH campaign (with its daily budget). Created PAUSED; won't spend until you activate it. Budget is in MICROS. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Campaign name | |
| status | No | PAUSED (default) or ENABLED | |
| confirm | No | Must be true to actually apply this change to the live account. Omit/false to refuse (safety gate). | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) | |
| budget_micros | Yes | Daily budget in MICROS, e.g. 5000000 = $5.00/day |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it flags this as a live-account WRITE, discloses the resulting state (PAUSED, no spend), and states the confirm:true safety gate. Annotations only say readOnly=false / destructive=false / openWorld=true, so the description carries the meaningful behavioral context itself.
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?
Four tight clauses, front-loaded with the highest-risk information ('WRITE — changes your live account') followed by what is created, its initial state, units, and the gate. No filler.
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?
No output schema exists, and the description never says what comes back (e.g., a campaign id needed to create ad groups or ads under it), which is the main chaining gap. Everything else an agent needs to invoke it correctly — mutation risk, default paused state, unit convention, confirm gate — is present.
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 every parameter is already documented in the schema. The description repeats the MICROS unit for budget and the confirm gate but adds nothing about status, name, or customer_id defaults, so 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 ('Create a new SEARCH campaign') plus the bundled side artifact (its daily budget), which is the key differentiator from google_ads_update_campaign or google_ads_update_budget. The campaign type (SEARCH) is named explicitly, so an agent can tell exactly what kind of object this produces.
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?
Gives clear usage context: the campaign is created PAUSED and won't spend until activated, so an agent knows this is a safe first step followed by google_ads_set_status. It does not explicitly name alternatives (update_campaign, create_ad_group, add_keywords) or state prerequisites like having a customer_id/account connected, so it falls short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_create_rsaAInspect
[WRITE — changes your live account] Create a responsive search ad in an ad group (>=3 headlines <=30 chars, >=2 descriptions <=90 chars, pipe-separated). Created PAUSED. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| path1 | No | Optional display-URL path segment 1 (<=15 chars) | |
| path2 | No | Optional display-URL path segment 2 (<=15 chars) | |
| status | No | PAUSED (default) or ENABLED | |
| confirm | No | Must be true to actually apply this change to the live account. Omit/false to refuse (safety gate). | |
| final_url | Yes | Landing page URL the ad clicks through to | |
| headlines | Yes | Pipe-separated headlines (>=3, each <=30 chars), e.g. 'Fast Shoes|Free Shipping|Shop Now' | |
| ad_group_id | Yes | Ad group id to create the ad in | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) | |
| descriptions | Yes | Pipe-separated descriptions (>=2, each <=90 chars) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses that this mutates a live account, that the result is created PAUSED by default, and that a confirm gate applies — real safety context. Slight tension: it says 'Created PAUSED' while the status param also accepts ENABLED, so the true default behavior is a bit ambiguous.
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?
One tightly packed sentence-plus-bracket, with the safety warning front-loaded before the operational detail; nothing 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?
Covers the essentials for a 9-parameter mutation tool with full schema coverage and no output schema: write risk, confirm gate, default status, and format. Only gap is what the call returns (ad id?), which an agent might want but can discover.
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 every parameter is already documented, including the pipe-separated format and length limits. The description repeats those constraints ('>=3 headlines <=30 chars', '>=2 descriptions <=90 chars') but adds no semantics beyond the schema — baseline 3.
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 ('Create a responsive search ad in an ad group') and names the concrete constraints, making it clearly distinct from google_ads_create_ad_group, google_ads_get_ad, and google_ads_list_ads.
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 '[WRITE — changes your live account]' prefix and 'Requires confirm:true' establish when this applies versus the read-only siblings (get_ad, list_ads). It does not, however, say prerequisites such as the ad group needing to exist or point to an alternative tool for other ad types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_adARead-onlyInspect
Get one Google Ads ad by id (name, status, type, parent ad group/campaign).
| Name | Required | Description | Default |
|---|---|---|---|
| ad_id | Yes | Ad id | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered structurally; the description's useful addition is the parenthetical listing which fields come back. It does not mention behavior on a missing/invalid ad id, cross-account resolution, or rate limits. With annotations carrying the safety load, a 3 is appropriate.
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 sentence, front-loaded with the verb and resource, with the field list appended as a compact clause. Nothing is redundant or 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 simple read-only getter with full annotation coverage and full schema coverage, this is close to sufficient, and the field list partly compensates for the absence of an output schema. It stops short of describing not-found behavior or the account-resolution fallback beyond what the schema notes.
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 both ad_id and the optional customer_id (with its default-to-connected-account note) are already documented in the schema. The description adds only the confirmation that the lookup is keyed on id, which is the baseline expectation when the schema does the heavy lifting.
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 one Google Ads ad by id') and enumerates the fields returned, so it is clearly a single-record fetch rather than a list. It does not explicitly name google_ads_list_ads or google_ads_query as the alternative, so sibling differentiation is only implied by 'one ... by id'.
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 'by id' framing implies you need a known ad id, which implicitly contrasts against list/search tools, but no when-to-use or when-not-to-use guidance is stated. Nothing tells the agent what to do if it only has a campaign or ad group name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_ad_groupARead-onlyInspect
Get one Google Ads ad group by id (status, type, max CPC, parent campaign).
| Name | Required | Description | Default |
|---|---|---|---|
| ad_group_id | Yes | Ad group id | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered. The description contributes the returned-field set (status, type, max CPC, parent campaign), but says nothing about error behavior for unknown ids or account scoping.
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 front-loaded sentence with no filler; the resource, key, and returned fields all appear in one clause.
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 listing the returned fields is genuinely useful and largely fills that gap. An agent has enough to call it correctly; only error/scoping behavior is left implicit.
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 both parameters are documented there, including the optional customer_id default. The description only echoes 'by id' and adds no format, example, or fallback 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?
States a specific verb and resource ('Get one Google Ads ad group') plus the lookup key ('by id'), which implicitly distinguishes it from google_ads_list_ad_groups. It also names the returned fields, but never explicitly contrasts itself with list_ad_groups or google_ads_query.
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: fetch a single ad group when you already have its id. There is no guidance on when to prefer google_ads_list_ad_groups or google_ads_query instead, and no prerequisites (e.g., requiring a customer_id or connected account) are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_campaignARead-onlyInspect
Get one Google Ads campaign by id (status, channel type, budget, schedule).
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | Campaign id | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the returned field set (status, channel type, budget, schedule), but says nothing about behavior when the campaign id is not found or when customer_id resolves to a different account.
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 front-loaded sentence with the key and the returned fields in parentheses; no filler, no repetition of annotation-derived facts.
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, naming the returned fields is a genuine contribution and covers what an agent needs to know before calling. Only the not-found / cross-account behavior is left unstated, which is a minor gap for a simple read.
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% and both parameters are documented there, including the customer_id default behavior. The description adds only the 'by id' framing and does not mention customer_id at all, so baseline 3 is 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?
States a specific verb and resource ('Get one Google Ads campaign') plus the lookup key ('by id'), which implicitly separates it from google_ads_list_campaigns and google_ads_update_campaign. No sibling is named explicitly, so it falls just short of 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 phrase 'one ... by id' implies this is the single-record fetch versus the list tool, but the description never says when to prefer this over google_ads_list_campaigns or google_ads_query. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_insightsARead-onlyInspect
Get performance/spend metrics (impressions, clicks, cost, CTR, avg CPC, conversions) by campaign, ad group or ad over a date range.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Breakdown level (optional, default campaign) | |
| limit | No | Max rows (default 50) | |
| date_range | No | Reporting window (optional, default LAST_7_DAYS): TODAY, YESTERDAY, LAST_7_DAYS, LAST_14_DAYS, LAST_30_DAYS, LAST_BUSINESS_WEEK, THIS_MONTH, LAST_MONTH, ALL_TIME | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the description's burden is lighter. It adds the useful fact that results are aggregated by level/date range, but says nothing about row caps beyond 'limit', pagination behavior, or what happens when the account has no data.
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 dense sentence that front-loads the returned metrics before the breakdown dimensions and window. No filler, though it is terse enough that an extra clause on aggregation/read-only reporting could have earned 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 read-only reporting tool with no output schema, the description correctly enumerates the returned metrics and the available granularity, which is the key missing piece otherwise. It omits any indication of response shape (row objects, totals) but is adequate to call the tool correctly.
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% with defaults and a full enum for date_range documented inline, so the schema carries the semantics. The description adds no extra meaning for level, limit, date_range, or customer_id beyond what is already declared.
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 ('Get') plus the exact resource and metric set (impressions, clicks, cost, CTR, avg CPC, conversions) and the three supported breakdown levels. That makes the purpose unambiguous, but it never names or contrasts with siblings like google_ads_query or google_ads_get_campaign, so it falls short of a 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?
Usage is only implied by the metric/breakdown framing; there is no explicit 'use this when you want aggregated performance reporting rather than raw rows or a single-entity lookup'. No when-not conditions or prerequisites (e.g. account connected) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_keyword_ideasARead-onlyInspect
Research keywords via Google Keyword Planner — real average monthly searches, competition and top-of-page CPC for seed keywords and/or a page URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A page URL to derive keyword ideas from (optional if keywords is set) | |
| limit | No | Max ideas to return (default 25) | |
| keywords | No | Seed keywords, comma-separated (e.g. 'running shoes, trail shoes'). Optional if url is set. | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) | |
| language_id | No | Language constant id (optional, default 1000 = English) | |
| geo_target_id | No | Geo target constant id (optional, default 2840 = United States; use 'all' for worldwide) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description adds valuable context beyond that: data comes from live Keyword Planner (not cached), and it enumerates the metrics returned. It omits any note on quota/rate behavior of the Ads API, which keeps it below 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?
A single tight sentence with the resource, source, and returned metrics front-loaded; no filler or repetition of structured fields.
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 required parameters and no output schema, the description usefully previews the return fields (searches, competition, CPC), which is what an agent most needs. It does not state that at least one of keywords/url must be supplied, a minor gap for a 6-param 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 100%, so the schema already documents all six parameters including defaults. The description only reinforces the keywords/url duality ('and/or'), adding nothing about format or the mutual-optionality constraint beyond what the schema states.
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 ('Research keywords via Google Keyword Planner') and names the concrete data returned: average monthly searches, competition, top-of-page CPC. It is clearly distinct from write-side siblings like google_ads_add_keywords, though it never names an alternative 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?
Usage is only implied: the description says it works 'for seed keywords and/or a page URL,' which signals the two input modes but not when to pick this over google_ads_query or google_ads_insights. No exclusions or preconditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_list_accountsARead-onlyInspect
List the Google Ads Customer IDs your connected sign-in can access (use one as your Customer ID in Lodestone).
| 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, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that results are scoped to the connected sign-in, but it does not mention pagination, return volume, or exact output format.
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 front-loaded sentence communicates the action, scope, and immediate use of the result. There is no redundant or filler text.
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 no-parameter read-only listing tool, the description provides enough context to call it correctly. It identifies what is returned (Customer IDs) and their access scope, though it could note whether the list is paginated or arbitrarily long.
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 no parameter guidance is required. The description stays appropriate for a parameterless listing operation and introduces no misleading parameter implications.
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: it lists Google Ads Customer IDs accessible to the connected sign-in. It does not explicitly differentiate itself from related siblings like google_ads_account_info or google_ads_whoami, but the resource and access scope are clear.
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 explains the practical purpose of the result: use one returned Customer ID in Lodestone. It does not name alternative tools or state when not to use it, so it falls 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.
google_ads_list_ad_groupsARead-onlyInspect
List ad groups in your Google Ads account, or just those in one campaign.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max ad groups (default 25) | |
| campaign_id | No | Only ad groups in this campaign (optional) | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no mention of pagination behavior, default result ordering, or what fields each ad group includes, which would be the value-add an agent needs for a list operation.
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 well-formed sentence with the primary purpose front-loaded and the optional scope qualifier immediately after. No filler, no repetition 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, fully optional-parameter read tool with complete schema descriptions and clear read-only annotations, the description covers the essentials. The only gap is the absence of any note on return shape or pagination, which matters slightly given there is no output 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 100%, so all three parameters (limit, campaign_id, customer_id) are already documented, including defaults and formats. The description's "just those in one campaign" only restates the campaign_id filter already in the schema, adding no new semantic detail. Baseline 3 is 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?
States a specific verb and resource ("List ad groups") plus the Google Ads account context, which distinguishes it from get_ad_group, create_ad_group, and update_ad_group. It does not explicitly name those siblings or explain when to prefer google_ads_query instead, so it falls short of full sibling differentiation.
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 phrase "or just those in one campaign" implies the optional-narrowing scenario, but usage is only inferred. There is no explicit guidance on when to use this versus google_ads_query or list_campaigns, and no stated prerequisites about needing a connected account beyond what the customer_id schema note says.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_list_adsARead-onlyInspect
List ads in your Google Ads account, or just those in one ad group.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max ads (default 25) | |
| ad_group_id | No | Only ads in this ad group (optional) | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered by structured data. The description adds only the scoping behavior; it says nothing about pagination, result caps beyond the schema's 'limit', or ordering, so the added behavioral context is thin.
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 front-loaded sentence with zero filler; the account-wide default and the ad-group narrowing are stated compactly and in the right order.
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-required-parameter, read-only list tool with full schema coverage and clear annotations, this is close to complete. The only mild gap is the absence of any hint about paging through large result sets, though the limit parameter partly covers 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 100%, with limit (default 25), ad_group_id, and customer_id all documented in-schema. The description restates the ad_group_id filter but adds no syntax, default, or fallback detail beyond what the schema already provides, so 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 ('List ads') plus scope ('in your Google Ads account, or just those in one ad group'). This distinguishes it implicitly from google_ads_get_ad (single ad) and google_ads_list_ad_groups/list_campaigns, though it never names those siblings 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?
The 'or just those in one ad group' clause implies when to pass ad_group_id, but there is no explicit when-to-use/when-not guidance or named alternative (e.g. google_ads_query for filtering by campaign or status). Usage is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_list_campaignsBRead-onlyInspect
List campaigns in your Google Ads account with status, channel type and daily budget.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max campaigns (default 25) | |
| status | No | Filter by status (optional) | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context by naming returned fields—status, channel type, and daily budget—but it does not describe pagination behavior, limits, or authentication 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?
The description is a single front-loaded sentence with no wasted words. It concisely states the core action and the key returned fields.
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 fully described schema and useful annotations, the description is largely complete and even names returned fields despite no output schema. Its main omission is sibling differentiation, which would help agents choose between this and google_ads_query or google_ads_get_campaign.
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 schema already documents limit, status, customer_id, defaults, and enum values. The description adds no parameter-specific meaning beyond what the schema provides, 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?
The description states a specific verb and resource—'List campaigns'—and identifies the Google Ads account scope plus returned fields. It is clear what the tool does, but it does not explicitly distinguish itself from siblings like google_ads_get_campaign or google_ads_query.
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 explicit when-to-use guidance, prerequisites, or alternatives. It only implies usage through its purpose; it never says when this tool should be chosen over google_ads_get_campaign, google_ads_query, or other listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_queryARead-onlyInspect
Run a read-only GAQL (Google Ads Query Language) SELECT query for anything the other read tools don't cover. Returns raw rows as JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows to return (default 50) | |
| query | Yes | A GAQL SELECT statement, e.g. "SELECT campaign.name, metrics.clicks FROM campaign WHERE segments.date DURING LAST_30_DAYS" | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds useful behavior beyond annotations by stating that results are returned as raw JSON rows, which matters because no output schema exists.
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 tight sentences with no wasted wording. The primary action and fallback scope are front-loaded, followed by the return format.
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 flexible query tool with fully documented parameters and annotations covering safety, the description is largely complete. It states the return format but, without an output schema, does not describe the shape of returned rows in detail; this is a minor gap rather than a blocking omission.
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 input schema has 100% description coverage for all three parameters, including query syntax and limit default. The description adds no additional parameter semantics, so the baseline score of 3 is appropriate when the schema does 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 operation: running a read-only GAQL SELECT query. It also clearly positions the tool as a fallback for reads not covered by the other Google Ads read tools, so an agent can distinguish it from siblings like google_ads_insights or google_ads_list_campaigns.
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 phrase 'anything the other read tools don't cover' gives clear guidance to use this only when a dedicated read tool is insufficient. It does not explicitly name the preferred alternatives or state when not to use it, but the fallback intent is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_set_statusADestructiveInspect
[WRITE — changes your live account] Pause or resume a campaign or ad group by id. Pausing stops spend. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Whether object_id is a campaign or an ad group (default campaign) | |
| status | Yes | ENABLED (resume) or PAUSED (pause) | |
| confirm | No | Must be true to actually apply this change to the live account. Omit/false to refuse (safety gate). | |
| object_id | Yes | The campaign or ad group id | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the safety profile is partly covered. The description still adds value with the [WRITE — changes your live account] banner, the concrete consequence 'Pausing stops spend', and the confirm gate — real effects rather than restated hints. It does not mention reversibility, propagation delay, or rate limits.
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 short sentences, with the most important fact (this mutates a live account) front-loaded in a bracketed banner. Nothing is redundant or 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 destructive mutation with no output schema, the description correctly conveys effect, target level, and the confirmation requirement, and the annotations plus rich schema cover the rest. It is slightly thin on what a successful call returns or whether the change is instantly reflected.
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 every parameter (level, status, confirm, object_id, customer_id) is documented in the schema, so the baseline is 3. The description only echoes the status and confirm semantics already present in the schema, adding no new parameter detail.
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 pair (pause/resume) and the exact resource scope (a campaign or ad group by id), which is clearly narrower than google_ads_update_campaign/ad_group. It does not explicitly say why to prefer this over passing a status field to the update tools, so sibling differentiation is implied rather than stated.
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 the use case (stop or restart spend) and flags that confirm:true is required, but it gives no when-not guidance and names no alternative tool. An agent must infer that bulk/create/update operations belong to the sibling google_ads_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_update_ad_groupADestructiveInspect
[WRITE — changes your live account] Update a Google Ads ad group's name, status and/or max CPC bid (MICROS). Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name (optional) | |
| status | No | ENABLED or PAUSED (optional) | |
| confirm | No | Must be true to actually apply this change to the live account. Omit/false to refuse (safety gate). | |
| ad_group_id | Yes | Ad group id | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) | |
| cpc_bid_micros | No | New max CPC bid in MICROS (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds a useful live-account warning and highlights the confirm:true safety gate. It does not explain whether unspecified fields are preserved or what the response contains, but the added safety context 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 compact and front-loaded with the most important warning — that this is a write operation affecting the live account — followed by the required confirm gate and the updatable fields. Every clause 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?
Given full schema coverage and destructive annotations, the description supplies the essential safety gate and field scope. It is complete enough to invoke correctly; only minor edge-case details like preservation of unmentioned fields are absent, and no output schema exists so return-value explanation is not required.
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 schema already documents all six parameters including customer_id and ad_group_id. The description reinforces the updatable fields and MICROS unit but adds little meaning beyond what the schema provides; baseline 3 is 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?
The description states a specific verb and resource — update a Google Ads ad group — and names the updatable fields (name, status, max CPC bid). It is clear what the tool does, but it does not differentiate itself from siblings like google_ads_set_status or google_ads_update_campaign.
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 makes clear this is for updating an existing ad group's name, status, or bid and that confirm:true is required. However, it provides no explicit when-not guidance or routing to alternatives such as google_ads_set_status, google_ads_update_campaign, or google_ads_get_ad_group.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_update_budgetADestructiveInspect
[WRITE — changes your live account] Change a campaign budget's daily amount (MICROS). Affects every campaign sharing that budget. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true to actually apply this change to the live account. Omit/false to refuse (safety gate). | |
| budget_id | Yes | The budget id (or full resourceName). Find it via google_ads_get_campaign. | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) | |
| budget_micros | Yes | New daily budget in MICROS, e.g. 7500000 = $7.50/day |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, but the description adds real value beyond that: '[WRITE — changes your live account]' and 'Affects every campaign sharing that budget' disclose the blast radius, which is not in the annotations, and it states the confirm:true safety gate. It still omits reversibility and expected response, keeping it short of 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?
Three short clauses, front-loaded with the write/live-account warning, then the scope, then the gate. Zero wasted words.
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 with no output schema, the description covers the critical agent-facing facts: write nature, budget-sharing impact, and the confirm requirement. It is nearly complete, though it does not say what is returned or how a change could be reverted.
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 all four parameters are already documented including the MICROS example and the confirm gate. The description only echoes the MICROS unit and confirm requirement, adding no meaning beyond the schema – 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 ('Change a campaign budget's daily amount') and scopes it to budgets rather than campaigns. It does not explicitly name google_ads_update_campaign as the sibling that handles other campaign settings, so the differentiation is implicit rather than stated.
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 usage (a live write with a confirm gate) and the schema points to google_ads_get_campaign for finding the budget id. But there is no explicit when-to-use-this-vs-update_campaign guidance and no stated exclusions or prerequisites beyond the confirm flag.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_update_campaignADestructiveInspect
[WRITE — changes your live account] Update a Google Ads campaign's name and/or status (pause/resume). Budget changes go through google_ads_update_budget. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name (optional) | |
| status | No | ENABLED or PAUSED (optional) | |
| confirm | No | Must be true to actually apply this change to the live account. Omit/false to refuse (safety gate). | |
| campaign_id | Yes | Campaign id | |
| customer_id | No | Customer ID (digits, dashes ok) to operate on (optional; defaults to your connected account) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The '[WRITE — changes your live account]' prefix adds practical emphasis beyond the annotations, and calling out confirm:true in prose surfaces the safety gate at a glance. Annotations already declare destructiveHint/openWorldHint, so the description's marginal value is modest but real; it does not, however, say what happens to other campaign settings or what the response contains.
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 sentences plus a bracketed tag, front-loaded with the most important fact (this writes to a live account). Nothing is wasted and the routing hint is placed immediately after the scope statement.
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 narrow mutation tool with full annotation coverage and a complete schema, the description supplies the essential safety framing and out-of-scope redirection. The only meaningful gap is the unaddressed overlap with google_ads_set_status.
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 every parameter including the confirm safety gate and the status enum is already documented. The description merely echoes 'name and/or status' and 'confirm:true' without adding format or behavioral detail 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 and resource (update a Google Ads campaign) and limits scope to name and/or status, which is precise. It differentiates from google_ads_update_budget but never addresses the sibling google_ads_set_status, which appears to overlap substantially with the status change this tool claims — leaving a real ambiguity an agent must resolve on its own.
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?
Explicitly routes an adjacent action to another tool ('Budget changes go through google_ads_update_budget') and states the confirm:true requirement. What's missing is guidance on when to use this versus google_ads_set_status for pause/resume, so the alternative-selection story is only half complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_whoamiARead-onlyInspect
Check that your connected Google Ads account works and see how many accounts your sign-in can access.
| 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, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds value beyond that by telling the agent what the call actually verifies and what it returns conceptually (accessible account count), which the annotations do not.
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?
One sentence, front-loaded with the verification purpose and followed by the observable outcome. No filler, no restating the tool name.
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, read-only diagnostic with no output schema, the description covers enough: what it tests and roughly what it reports. A hint about failure behavior (e.g. what a failed auth looks like) would make it complete, but the essentials are present.
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 the baseline of 4 applies. Nothing about argument semantics needs explaining, and the description correctly does not invent any.
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 action (verify the connected Google Ads account works) and a specific output (how many accounts the sign-in can access). This is clearly distinct from data-reading siblings like google_ads_list_accounts or google_ads_query, though it never names those siblings explicitly to sharpen the boundary.
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 phrasing implies a preflight/health-check use case, but there is no explicit 'use this when X, use list_accounts when Y' routing guidance even though google_ads_list_accounts and google_ads_account_info are close siblings. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_account_insightsARead-onlyInspect
Get analytics for your own Instagram Business/Creator account over a window: accounts reached, views, profile visits, engagement, likes, comments, saves, shares, website taps, follower count and net new followers. Max 30 days per call.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Trailing window in days, 1-30 (default 28). Ignored if since/until are given. | |
| since | No | Start date YYYY-MM-DD (optional) | |
| until | No | End date YYYY-MM-DD, inclusive (optional, default today) | |
| instagram_account_id | No | Instagram account id (optional; defaults to the account linked to your connected Facebook Page) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true). The description adds real behavioral context beyond them: the 30-day per-call ceiling and the Business/Creator account requirement, both of which affect whether a call will succeed.
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 tight sentences; the metric list is compact and the limiting constraint ('Max 30 days per call') is placed at the end where it is easy to scan. No filler.
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 usefully enumerates the returned metrics (reach, views, profile visits, engagement, likes, comments, saves, shares, website taps, follower count, net new followers), covering what the agent would otherwise not know. Defaults and precedence for the date parameters are in the schema, so nothing material is 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 100%, so all four parameters are already documented, including the defaults and the since/until precedence. The description only reinforces the 1-30 day constraint, adding marginal value over 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+resource ('Get analytics for your own Instagram Business/Creator account') plus an explicit scope constraint (account-level, own account) and enumerates the exact metrics returned. An agent can distinguish this from instagram_media_insights (per-post) without opening either schema.
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 'your own Business/Creator account' scoping and the 'Max 30 days per call' cap imply when the tool is valid, but there is no explicit when-to-use guidance or named alternative for per-media stats (instagram_media_insights). Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_list_mediaARead-onlyInspect
List your own latest Instagram posts, Reels and Stories with per-post insights: reach, views, likes, comments, saves, shares and permalink.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many posts, newest first (default 10, max 25) | |
| with_insights | No | Fetch per-post insights (default true; false = just likes/comments, faster) | |
| instagram_account_id | No | Instagram account id (optional; defaults to the account linked to your connected Facebook Page) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds real behavioral context beyond that: it enumerates the returned metrics (reach, views, likes, comments, saves, shares, permalink) and discloses that Stories are included, which is non-obvious. It stops short of mentioning insight-fetch cost/latency or ordering guarantees.
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 front-loaded sentence that packs verb, resource, scope, and payload into minimal space with zero filler. Nothing is repeated or 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?
With 100% schema coverage and no output schema, the description usefully compensates by naming the returned metrics. It is largely complete for a simple list tool, though it could have disambiguated itself from the adjacent instagram_*_insights tools.
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 all three parameters (limit, with_insights, instagram_account_id) are already fully documented in the schema, including defaults and the faster-path tradeoff. The description adds no parameter-level detail beyond what the schema provides, 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 (list) and resource (your own Instagram posts, Reels, Stories) plus the payload (per-post insights with named metrics). The 'your own latest' scope implicitly separates it from search_instagram, but it never names a sibling to make the distinction explicit.
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 or when-not guidance. With siblings like instagram_media_insights, instagram_account_insights and search_instagram in the catalog, an agent gets no help deciding which to call or in what order.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_media_insightsARead-onlyInspect
Get the full insights for one of your own Instagram posts, Reels or Stories by media id (from instagram_list_media).
| Name | Required | Description | Default |
|---|---|---|---|
| media_id | Yes | Instagram media id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds the useful ownership constraint ("your own") but does not describe the returned insights or any rate-limit/permission 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?
A single front-loaded sentence with zero filler, stating verb, resource, scope, and the id source all at once.
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 with one parameter and no output schema, the description plus annotations cover what an agent needs: safety, target scope, and where the id comes from. It stops short of describing the insight fields returned, which a caller might still want.
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% and there is a single required media_id already documented in the schema. The description adds only the provenance hint (from instagram_list_media), so baseline 3 is 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?
The description names a specific verb (Get), resource (insights), and scope (one of your own Instagram posts, Reels or Stories), which clearly separates it from the sibling instagram_account_insights (account-level) and pairs with instagram_list_media. An agent can pick this tool without opening the schema.
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 tells the agent the required input is a media id obtained from instagram_list_media, which is practical routing context. However, it does not explicitly state when to prefer this over instagram_account_insights or what to do when the media isn't your own, so no full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
integration_guideARead-onlyInspect
Get the step-by-step walkthrough for connecting one account to Lodestone: where to click, the exact links, screenshots, and which values to ask the user for. Read it, then guide the user through it one step at a time and collect the values in this chat. For email, pass the provider (gmail, icloud, yahoo, fastmail, zoho, zohopro, custom) once you know it.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | Email only: gmail, icloud, yahoo, fastmail, zoho, zohopro or custom | |
| integration | Yes | Integration id from integration_status, e.g. email, telegram, meta_ads, typefully, instagram_insights, ga4, stripe, wordpress, github |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Consistent with readOnlyHint=true and destructiveHint=false; nothing contradicts the annotations. Beyond the annotations it adds real behavioral context: the response contains click-by-click steps, exact links and screenshots, and the agent is expected to drive an interactive collection flow. It doesn't mention pagination or size limits, which is minor for a static guide.
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 core purpose and the read-then-guide workflow are front-loaded in the first sentence, with the provider hint last. It is on the longer side with some repetition of the provider list already in the schema, but no sentence is filler.
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 carries the return-value burden and does so adequately by describing the guide's contents. For a two-parameter read-only tool, an agent has enough to select and invoke it, though a pointer to connect_integration as the follow-up step would close the loop.
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% and both parameters are already documented, including where the integration id comes from. The description mostly restates the provider value list and adds only a small timing cue ('once you know it'), which is useful but marginal against a fully documented 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?
The description gives a specific verb+resource: fetching a step-by-step walkthrough for connecting an account to Lodestone, including what it contains (links, screenshots, values to collect). It implicitly separates itself from the mutation sibling connect_integration by framing this as read-then-guide, but never names that sibling, so differentiation is inferred rather than stated.
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 states clear usage: read the guide, then walk the user through it one step at a time and collect values in chat, and it explains when to pass the provider ('once you know it'). It stops short of explicitly telling the agent to call integration_status first or connect_integration afterward, leaving the lifecycle relationship to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
integration_statusARead-onlyInspect
Show which of the user's own accounts (email, Meta Ads, Telegram, Typefully, Instagram Insights, Google Analytics, WordPress, chat apps) are connected to Lodestone and which are not. Call this first when the user wants to connect something, or when a tool says an account is not connected. Returns no credentials.
| 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, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds useful context beyond the annotations by stating the return is scoped to connection status and includes no credentials, though it does not describe the exact 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?
The description is two tight sentences with the core purpose and ordering guidance front-loaded. Every clause adds either scope, usage guidance, or a security-relevant return constraint.
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 read-only status tool with no output schema, the description provides enough: what it checks, when to call it, the provider scope, and that credentials are not returned. Annotations already cover the safety profile, so no critical context is 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?
The tool has zero parameters, so there is nothing for the description to disambiguate. The baseline for a parameterless tool is 4, and the description correctly avoids implying any required input.
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: show which of the user's own accounts are connected versus not. It enumerates the integration providers and clearly distinguishes this status check from connect_integration and disconnect_integration.
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?
Gives explicit trigger conditions: call first when the user wants to connect something, or when another tool reports an account is not connected. This directly routes the agent between this diagnostic tool and the connect/disconnect siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_ads_account_infoARead-onlyInspect
Get details for your Meta ad account — currency, status, lifetime amount spent, spend cap and balance.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_account_id | No | act_XXXX (optional; defaults to your connected ad account) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description adds real value beyond that by naming the response contents (currency, status, lifetime spend, spend cap, balance), which matters because there is no output 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?
A single front-loaded sentence that names the action and immediately enumerates the returned fields. No preamble or filler.
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 one-parameter read tool whose annotations cover the safety profile, listing the returned fields compensates for the missing output schema. Only the absence of routing guidance against sibling account tools leaves a small 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?
One optional parameter with 100% schema coverage, where the schema already documents the act_XXXX format and the default-to-connected-account behavior. 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 ('Get details for your Meta ad account') and enumerates the fields returned, so the agent knows what it retrieves. It does not explicitly differentiate itself from close siblings like meta_ads_list_accounts or meta_ads_whoami, which keeps it from a 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 gives no when-to-use guidance, no conditions, and no alternatives. With siblings such as meta_ads_list_accounts and meta_ads_whoami in the same family, the agent must infer that this is the single-account detail call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_ads_boost_postAInspect
[WRITE — changes your live account] Promote an existing Facebook Page post as an ad under an existing ad set (no upload). Created PAUSED. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Ad name | |
| status | No | PAUSED (default) or ACTIVE | |
| confirm | No | Must be true to actually apply this change to the live account. Omit/false to refuse (safety gate). | |
| post_id | Yes | The post's object_story_id (like <pageid>_<postid>) from meta_ads_list_page_posts | |
| ad_set_id | Yes | Existing ad set to attach the ad to (make one with meta_ads_create_ad_set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic write/open-world profile (readOnlyHint=false, destructiveHint=false). The description adds meaningful behavior: it impacts the live account, the created ad defaults to PAUSED, and it enforces a confirm:true safety gate. That said, 'PAUSED default' and 'confirm' partly overlap with schema descriptions, so it is strong but not fully additive.
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 front-loaded sentence opens with the [WRITE — changes your live account] warning, then delivers scope, precondition, default state, and the confirm requirement with zero wasted words.
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 safety annotations present, and full schema coverage, the description supplies everything an agent needs: purpose, write impact, precondition, default status, and the confirm gate. Nothing required to call it correctly is 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 100%, so all five parameters (including post_id format and ad_set_id provenance) are already documented in the schema. The description corroborates 'existing ad set' and 'confirm:true' but adds no syntax or semantic detail beyond the schema — 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 (promote/boost), resource (existing Facebook Page post as an ad), and the key scoping distinction '(no upload)' plus 'under an existing ad set'. This clearly separates it from the sibling meta_ads_create_image_ad without needing to open either schema.
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?
Implies the preconditions that an ad set must already exist and that the post already exists (no upload path), steering the agent away from the create/upload siblings. However, it never names an alternative tool or an explicit when-not-to-use condition, so it falls 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.
meta_ads_create_ad_setAInspect
[WRITE — changes your live account] Create a Meta ad set under a campaign (budget, optimization goal, country/age/gender targeting). Created PAUSED. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Ad set name | |
| status | No | PAUSED (default) or ACTIVE | |
| age_max | No | Max age, default 65 | |
| age_min | No | Min age, default 18 | |
| confirm | No | Must be true to actually apply this change to the live account. Omit/false to refuse (safety gate). | |
| genders | No | Optional: '1'=male, '2'=female, omit for all | |
| countries | No | Comma-separated ISO country codes, default US (e.g. 'US,CA') | |
| campaign_id | Yes | Parent campaign id | |
| bid_strategy | No | Optional, default LOWEST_COST_WITHOUT_CAP | |
| daily_budget | Yes | Daily budget in minor units, e.g. 1000 = $10.00 | |
| billing_event | No | Optional, default IMPRESSIONS | |
| promoted_object | No | Raw JSON for conversion/lead goals (optional) | |
| optimization_goal | No | Optional, default LANDING_PAGE_VIEWS (e.g. LINK_CLICKS, OFFSITE_CONVERSIONS, LEAD_GENERATION, REACH) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), but the description adds critical context beyond them: the 'WRITE — changes your live account' warning, the fact that the ad set is created PAUSED rather than live, and the confirm:true gate. An agent knows the blast radius and the required safety flag.
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 compact clauses, with the highest-severity information (WRITE, live account) front-loaded in brackets and the confirm gate last. 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 13-parameter write tool with full schema coverage and annotations present, the description covers the essential behavioral facts an agent needs. The only gap is that, with no output schema, it does not indicate what is returned (e.g., the new ad set id) after creation.
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 every one of the 13 parameters is already documented in the schema (including enum for status and defaults for budget/age/targeting). The description only restates the areas covered and adds no format or syntax detail beyond the schema, 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?
States a specific verb and resource ('Create a Meta ad set under a campaign') plus the scope of what it configures (budget, optimization goal, country/age/gender targeting). This clearly distinguishes it from siblings like meta_ads_create_campaign and meta_ads_create_image_ad.
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 conveys prerequisites ('Requires confirm:true') and the resulting state ('Created PAUSED'), which implies when it is safe to call. However, it never says when to choose this over meta_ads_create_campaign or meta_ads_boost_post, so alternative-selection guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_ads_create_campaignAInspect
[WRITE — changes your live account] Create a new Meta campaign. Created PAUSED; won't spend until you activate it. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Campaign name | |
| status | No | PAUSED (default) or ACTIVE | |
| confirm | No | Must be true to actually apply this change to the live account. Omit/false to refuse (safety gate). | |
| objective | Yes | Campaign objective | |
| daily_budget | No | Daily budget in minor units, e.g. 1000 = $10.00 (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, but the description adds material context the annotations do not: it touches the live account, the object starts PAUSED and won't spend until activated, and confirm:true is a hard safety gate. That is genuine value beyond the structured hints, though it says nothing about rate limits or failure modes.
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 short sentences, each earning its place, with the live-account warning and the default-state behavior front-loaded before the call requirement.
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?
No output schema exists, and the description covers the safety profile, default state and required gate, which is enough for an agent to call it correctly. It could note what the tool returns (e.g. the new campaign id) to be fully 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?
Schema description coverage is 100%, so name, status, objective, daily_budget and confirm are already documented in the schema. The description only restates the confirm gate and the PAUSED default, adding no new semantics such as budget units or objective selection guidance.
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 ('Create a new Meta campaign'), clearly distinguishing it from siblings such as meta_ads_update_campaign or meta_ads_create_ad_set. The bracketed write-scope marker further disambiguates it from the read/list siblings.
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?
Gives operational guidance (created PAUSED, requires confirm:true), which tells the agent how to call it safely, but never says when to choose this over alternatives like meta_ads_create_ad_set or meta_ads_boost_post, nor any prerequisites beyond the confirm gate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_ads_create_image_adAInspect
[WRITE — changes your live account] Create an image ad from a public image URL (Meta fetches it — no upload) under an existing ad set. Created PAUSED. Needs a Facebook Page. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| cta | No | Call-to-action button (optional, default LEARN_MORE; e.g. SHOP_NOW, SIGN_UP, SUBSCRIBE, GET_OFFER, CONTACT_US) | |
| link | Yes | Destination URL the ad clicks through to | |
| name | Yes | Ad name | |
| status | No | PAUSED (default) or ACTIVE | |
| confirm | No | Must be true to actually apply this change to the live account. Omit/false to refuse (safety gate). | |
| message | No | Primary text above the image (optional) | |
| page_id | No | Facebook Page id (optional; defaults to your connected Page) | |
| headline | No | Bold headline under the image (optional) | |
| ad_set_id | Yes | Existing ad set to attach the ad to (make one with meta_ads_create_ad_set) | |
| image_url | Yes | Public https URL of the ad image (Meta fetches it — no upload) | |
| description | No | Link description (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: flags this as a live-account WRITE, discloses that the ad is created PAUSED by default, and surfaces the confirm:true safety gate. These are exactly the behavioral facts an agent needs before invoking a mutation tool.
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 short clauses, leading with the risk level in brackets, then the effect, then the gating requirements. No filler; each sentence carries a distinct constraint.
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 an 11-param mutation tool with no output schema, the description covers the safety gate, default state, and prerequisites. It does not mention what is returned (e.g. the new ad id) or how to inspect/verify the created ad, but the essential call-time information is present.
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 every parameter including confirm, status, page_id and cta is already documented in the schema. The description's notes on no-upload image fetching and the PAUSED default largely restate schema text, 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?
Specific verb+resource (create an image ad) with the key mechanism stated (from a public image URL, Meta fetches it) and the required parent container (under an existing ad set). Clearly distinguishable from siblings like meta_ads_create_ad_set or meta_ads_boost_post.
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?
States prerequisites explicitly: needs an existing ad set, needs a Facebook Page, requires confirm:true. This tells the agent what must exist before calling. However it doesn't name alternatives (e.g. when to prefer boost_post over creating a fresh ad) or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_ads_get_adARead-onlyInspect
Get one Meta ad by id (name, status, parent ad set/campaign).
| Name | Required | Description | Default |
|---|---|---|---|
| ad_id | Yes | Ad id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds which fields come back (name, status, parent ad set/campaign), which is mildly useful context but no auth, rate-limit, or failure 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?
A single front-loaded sentence with no filler; the returned-field list is the only detail beyond the core purpose. Nothing is wasted, though it is very terse.
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 read operation with annotations covering safety and no output schema, the description need not explain return formatting. Naming the fields returned compensates for the absent output schema, leaving only minor gaps around id sourcing.
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% with a single required parameter, so the baseline is 3. The description adds no syntax, format, or source guidance for ad_id beyond what the schema already says.
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 one Meta ad by id') and scopes it to a single record, with a parenthetical naming the returned fields. It implicitly distinguishes itself from the list/get_ad_set/get_campaign siblings by resource, though it never names 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?
The phrase 'by id' implies the tool is for direct lookup when an ad id is already known, but there is no explicit when-to-use, when-not, or pointer to meta_ads_list_ads for discovery. Usage is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_ads_get_ad_setARead-onlyInspect
Get one Meta ad set by id (status, optimization goal, budget, targeting).
| Name | Required | Description | Default |
|---|---|---|---|
| ad_set_id | Yes | Ad set id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine value by disclosing the returned fields (status, optimization goal, budget, targeting), which matters because no output schema exists.
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 front-loaded sentence with the action verb first and the useful return-field detail in a compact parenthetical. Nothing is wasted and nothing extraneous is included.
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 get-by-id read tool with annotations covering safety and no output schema, the description supplies enough: it names the resource, the selector, and the principal fields returned. It omits error behavior for an invalid id, which is a minor 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 description coverage is 100% with a single documented ad_set_id parameter, so the schema already carries the burden. The description's 'by id' adds no format, type, or sourcing detail beyond what the schema states, 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?
States a specific verb and resource ('Get one Meta ad set by id'), and the word 'one' implicitly separates it from meta_ads_list_ad_sets. It does not explicitly name siblings like meta_ads_get_ad or meta_ads_get_campaign, so differentiation is inferable rather than stated.
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 or when-not-to-use guidance, and no mention of alternatives (list_ad_sets, get_ad, update_ad_set). The 'by id' phrasing faintly implies a known identifier is required, but that is the only usage signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_ads_get_campaignARead-onlyInspect
Get one Meta campaign by id (status, objective, budget, schedule).
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | Campaign id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds value by naming the returned fields (status, objective, budget, schedule), but says nothing about auth requirements, rate limits, or behavior when the id is unknown.
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 tight sentence with the action and lookup key front-loaded and the payload summarized in a parenthetical. No filler or redundancy.
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 read whose annotations cover the safety profile, the description is nearly sufficient; listing the returned fields compensates for the absence of an output schema. Only the missing error/not-found behavior keeps it from being fully 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?
Only one parameter and schema description coverage is 100%, so the schema fully documents campaign_id. The description adds no format, prefix, or validity information beyond the phrase 'by id', making the baseline 3 correct.
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 (Get) and resource (one Meta campaign) with the lookup key (by id) and enumerates the salient fields returned. It is clearly distinguishable from meta_ads_list_campaigns (plural/list) and from meta_ads_get_ad / meta_ads_get_ad_set by naming the campaign entity.
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 rather than stated: fetch a single campaign when you have its id. There is no guidance on when to prefer meta_ads_list_campaigns or meta_ads_insights instead, and no prerequisites mentioned. Minimum viable routing information only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_ads_insightsARead-onlyInspect
Get performance/spend metrics (spend, impressions, clicks, CTR, CPC, CPM, reach) for your whole ad account or one campaign/ad set/ad.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Breakdown level (optional): account, campaign, adset, ad | |
| object_id | No | Campaign, ad set or ad id (optional; omit for whole-account totals) | |
| date_preset | No | Reporting window (optional, default last_7d): today, yesterday, last_7d, last_14d, last_30d, last_90d, this_month, last_month, maximum |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered without description help. The description adds no behavioral context such as required ad-account permissions, rate limits, or data-freshness/attribution caveats that a reporting tool would benefit from disclosing.
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 front-loaded sentence that names the verb, the metric list, and the applicable scope with no filler. Every clause 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?
There is no output schema, and the description partially compensates by enumerating the returned metrics (spend, impressions, clicks, CTR, CPC, CPM, reach). It is close to complete for a simple reporting tool, though it omits return shape and the default-level behavior when object_id is omitted.
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 all three parameters (level, object_id, date_preset) are already documented with enums and defaults in the schema. The description adds no syntax or format detail beyond what the schema provides, 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 (Get) plus resource (performance/spend metrics) and enumerates the exact metrics returned. It also scopes the operation to the whole account or a single entity, which cleanly separates it from sibling tools like meta_ads_get_ad or meta_ads_list_campaigns that fetch entity metadata rather than metrics.
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 phrase 'for your whole ad account or one campaign/ad set/ad' implies when the tool applies, but there is no explicit when-to-use guidance or named alternative (e.g., versus meta_ads_get_campaign for structural data). Usage is inferred from the scope rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_ads_list_accountsBRead-onlyInspect
List the Meta ad accounts your connected token can access (name, id, currency, status).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max accounts (default 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the access-scoping behavior (token-bound results) and the shape of returned records, which is useful but not beyond the expected for a read-only list.
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?
One sentence, front-loaded with the verb and resource, with the scope constraint and return fields packed in without 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 simple read-only, zero-required-parameter list tool with full schema coverage, the description is sufficient, and enumerating the returned fields (name, id, currency, status) usefully compensates for the absent output 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?
There is a single optional 'limit' parameter at 100% schema description coverage, so the schema fully documents it ('Max accounts (default 25)'). The description adds nothing about the parameter, which is acceptable given the schema carries it — baseline 3.
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?
Clear verb (List) plus specific resource (Meta ad accounts) and an explicit scope constraint ('your connected token can access'), with the returned fields enumerated. It reads distinctly from meta_ads_account_info or whoami without opening a schema, though it never names a 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?
The description gives no when-to-use or when-not-to guidance and does not point to alternatives like meta_ads_account_info (single-account detail) or meta_ads_whoami. The 'which accounts the token can access' wording hints at a discovery role, but selection between siblings is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_ads_list_adsBRead-onlyInspect
List ads in your Meta ad account, or just those in one ad set.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max ads (default 25) | |
| ad_set_id | No | Only ads in this ad set (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds no further behavioral context such as pagination behavior, result caps, or ordering, and its scoping clause merely restates the ad_set_id parameter.
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 front-loaded sentence with no filler; the primary scope is stated before the narrower filter. It is efficient, though extremely terse and leaves no room for qualifying detail.
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 listing tool with full schema coverage and safety annotations, the description covers what an agent needs to invoke it correctly. There is no output schema, but the agent is not told anything about result shape or paging, a minor remaining 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 description coverage is 100% for both parameters (limit default 25, ad_set_id filter), so the schema already carries the semantics. The description echoes the ad_set_id filter but adds no syntax, format, or default details beyond it, making 3 the correct baseline.
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 gives a specific verb (list) and resource (ads) plus the two scopes available (whole ad account or a single ad set), which separates it from get_ad and from the list_ad_sets/list_campaigns siblings by resource. It does not explicitly name a sibling it is not, so it falls short of the 5 tier.
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 rather than stated: 'or just those in one ad set' hints at when to pass ad_set_id, and 'list' vs 'get' implies bulk retrieval versus single-item lookup. There is no explicit when-to-use, when-not-to-use, or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_ads_list_ad_setsARead-onlyInspect
List ad sets in your Meta ad account, or just those in one campaign.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max ad sets (default 25) | |
| campaign_id | No | Only ad sets in this campaign (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety and network profile is covered. The description adds only the campaign-scoping behavior; it says nothing about pagination beyond the limit default or result ordering.
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?
One compact sentence that front-loads the verb and resource before the optional scope. No filler or redundancy.
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-param read-only list tool with full schema coverage and safety annotations, nothing critical is missing, and no output schema is needed. Return shape/pagination details are the only absent nuance.
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 both parameters (limit default 25, campaign_id filter) are already fully documented in the schema. The description's campaign clause merely restates campaign_id, adding no syntax, units, or constraints beyond it.
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 ('List') and resource ('ad sets') plus its scope (account-wide or single campaign). This clearly separates it from the singular meta_ads_get_ad_set, though it never names a 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?
The 'or just those in one campaign' clause implies when to pass campaign_id, giving minimal conditional guidance. No when-not-to-use, prerequisites, or explicit routing to meta_ads_get_ad_set / meta_ads_list_campaigns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_ads_list_campaignsBRead-onlyInspect
List campaigns in your Meta ad account with status, objective and budget.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max campaigns (default 25) | |
| status | No | Filter by effective status (optional): ACTIVE, PAUSED, ARCHIVED |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds only the returned field set; it says nothing about pagination, ordering, or account-scoping 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?
A single front-loaded sentence with no filler; the resource and the useful return fields are stated immediately.
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 rich annotations and no output schema, this is nearly adequate but leaves gaps: it does not clarify that status is also a filter, nor how accounts/results are scoped or paginated.
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 schema fully documents limit and status, giving a baseline of 3. The description adds no syntax or default details beyond what the schema already states.
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 (List) and resource (campaigns) plus the fields returned (status, objective, budget). It is clearly distinct from create/update/get siblings, but does not explicitly differentiate itself from meta_ads_get_campaign or meta_ads_list_ads in wording.
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 meta_ads_get_campaign for a single campaign, nor versus meta_ads_list_ads or meta_ads_list_ad_sets. The 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.
meta_ads_list_page_postsARead-onlyInspect
List recent posts on your connected Facebook Page so you can pick one to promote (returns each post's id for meta_ads_boost_post).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max posts (default 25) | |
| page_id | No | Facebook Page id (optional; defaults to your connected Page) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds value beyond that by disclosing the return shape (each post's id) and its purpose for meta_ads_boost_post, though it omits pagination or ordering 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?
A single front-loaded sentence that names the action, the resource, the goal, and the return value with no filler.
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-param, read-only list tool with no output schema, the description supplies the key missing piece: what the call returns and why. Minor gaps remain around ordering and pagination limits, but nothing critical to correct invocation is absent.
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%, with both 'limit' (default 25) and 'page_id' (optional, defaults to connected Page) documented in the schema itself. The description adds no parameter-level detail, so the baseline of 3 is 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?
States a specific verb and resource ('List recent posts on your connected Facebook Page') and names the downstream sibling it feeds ('returns each post's id for meta_ads_boost_post'), so an agent can distinguish it from meta_ads_list_ads or meta_ads_list_campaigns without opening a schema.
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?
Makes the usage context explicit ('so you can pick one to promote') and points to the tool this precedes. It does not state when NOT to use it, but the routing intent is unambiguous for the boost workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_ads_set_statusADestructiveInspect
[WRITE — changes your live account] Pause or resume any Meta campaign, ad set or ad by id. Pausing stops spend. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ACTIVE (resume) or PAUSED (pause) | |
| confirm | No | Must be true to actually apply this change to the live account. Omit/false to refuse (safety gate). | |
| object_id | Yes | Campaign, ad set or ad id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write/destructive/openWorld, but the description adds real behavioral value beyond them: it warns it 'changes your live account', explains the consequence ('Pausing stops spend'), and discloses the confirm:true safety gate. It stops short of stating reversibility or the response behavior, so not 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?
Front-loads the [WRITE] warning, then packs action, scope, consequence and the confirm requirement into two tight sentences with no filler.
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 with no output schema, the definition covers what changes, what it costs (spend), and the safety gate, with annotations carrying the readOnly/destructive profile. Minor gaps remain on reversibility and return behavior, but nothing essential to calling it correctly is 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 100%, so the enum meaning for status, the object_id target, and the confirm gate are all already documented in the schema. The description's mention of 'by id' and 'confirm:true' only restates structured fields, landing at the baseline.
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 action (pause/resume = set status) on a specific resource (Meta campaign, ad set or ad) identified by id. It is distinguishable from the create/get/list siblings, though it does not explicitly differentiate itself from meta_ads_update_campaign or meta_ads_update_ad_set, which could plausibly also touch 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?
Gives useful context ('Pausing stops spend', 'Requires confirm:true') that implies when this tool is the right choice, but offers no explicit when-to-use-vs-alternative guidance against the sibling update tools or any stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_ads_update_ad_setADestructiveInspect
[WRITE — changes your live account] Update a Meta ad set's name, status and/or daily budget. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name (optional) | |
| status | No | ACTIVE or PAUSED (optional) | |
| confirm | No | Must be true to actually apply this change to the live account. Omit/false to refuse (safety gate). | |
| ad_set_id | Yes | Ad set id | |
| daily_budget | No | New daily budget in minor units (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, but the description adds meaningful context beyond them: it warns this changes the live account and that a confirm:true safety gate must be satisfied. It stops short of describing reversibility or rate/permission constraints.
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 most decision-relevant fact (it is a write to a live account) before the mutation surface and the confirm requirement. No filler.
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 five-parameter mutation tool with no output schema, the description covers the write semantics and the confirm gate, which is what an agent most needs before invoking it. It is slightly thin on what the update returns and on how it relates to the status-specific 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 the schema already documents all five parameters including the confirm gate and the minor-units budget. The description merely echoes name/status/daily budget, adding no syntax or format detail beyond the schema, 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?
States a specific verb and resource ('Update a Meta ad set') plus the updatable fields (name, status, daily budget), so the agent knows exactly what is mutated. It does not distinguish itself from the sibling meta_ads_set_status, which plausibly overlaps on the status field, so sibling differentiation is incomplete.
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 a hard precondition ('Requires confirm:true') and flags that this is a live-account write, which is real usage guidance. It never says when to choose this over meta_ads_set_status or meta_ads_update_campaign, so the alternative-selection guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_ads_update_campaignADestructiveInspect
[WRITE — changes your live account] Update a Meta campaign's name, status and/or daily budget. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name (optional) | |
| status | No | ACTIVE or PAUSED (optional) | |
| confirm | No | Must be true to actually apply this change to the live account. Omit/false to refuse (safety gate). | |
| campaign_id | Yes | Campaign id | |
| daily_budget | No | New daily budget in minor units (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds genuinely useful context beyond them: that this touches a LIVE account and requires confirm:true as a safety gate. It stops short of describing reversibility or rate/permission constraints.
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 sentences, zero waste, and the critical warning (WRITE — changes your live account) is front-loaded before the scope. Every clause 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 destructive mutation with no output schema but full schema coverage and annotations, the definition gives the agent the essential safety context (live account, confirm gate). Only the relationship to the overlapping set_status sibling is left unresolved.
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 every parameter including confirm and the minor-units convention on daily_budget is already documented in the schema. The description only nods at the same fields, adding no syntax or unit detail 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 (Update) and resource (Meta campaign) plus the exact mutable fields (name, status, daily budget), so it is clearly distinguishable from create_campaign and get_campaign. It does not, however, differentiate itself from the sibling meta_ads_set_status, which plausibly overlaps on the status field.
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 makes the write context and the confirm:true gate explicit, which implies when to use it, but it never names alternatives or exclusions (e.g. when to prefer set_status vs this tool). Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_ads_whoamiARead-onlyInspect
Check that your connected Meta account works and see whose token it is.
| 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, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds that this doubles as a health check and returns token identity, which is useful but thin; it says nothing about failure modes (e.g. expired token 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?
A single, front-loaded sentence with no waste. The connectivity-check purpose leads and the identity result follows.
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 convey what comes back (token identity) for a zero-param diagnostic tool. It is adequate, though it could mention that it returns the connected account/user for use in later calls.
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 the baseline of 4 applies. There is no parameter semantics to clarify and the description correctly implies a parameterless call.
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 names a specific verb ('Check') and resource ('your connected Meta account') and adds the identity aspect ('whose token it is'). It is distinguishable from data-heavy siblings like meta_ads_account_info or meta_ads_list_accounts, though it does not explicitly contrast 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?
'Check that your connected Meta account works' implies the usage context: a connectivity/auth sanity check before other Meta Ads calls. No explicit when-not conditions or named alternatives are given, so the guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_airbnbARead-onlyInspect
Search live Airbnb listings by location, monthly price ceiling and bedroom count. Returns matching stays with monthly price and rating.
| Name | Required | Description | Default |
|---|---|---|---|
| bedrooms | No | Minimum number of bedrooms | |
| check_in | No | Check-in date YYYY-MM-DD (optional; defaults to a 30-night stay) | |
| location | Yes | City or area, e.g. 'Da Nang' | |
| check_out | No | Check-out date YYYY-MM-DD (optional) | |
| max_price | No | Maximum monthly price in USD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered without prose. The description adds genuinely new behavioral context by stating the return content ('matching stays with monthly price and rating'), which matters because no output schema exists. It omits pagination/result-count behavior, keeping it short of 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?
Two sentences, zero filler, with the search scope front-loaded and the return value appended. Every clause 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 read-only search tool with full schema coverage, the description covers purpose, inputs and a partial view of outputs. It stops short of noting result limits, sorting, or pagination, which are the remaining unknowns given no output 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 100%, so every parameter is already documented in the schema, including the 30-night default. The description restates three of the five filters (location, monthly price ceiling, bedroom count) without adding format or syntax meaning. 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 ('Search') plus resource ('live Airbnb listings') and enumerates the filtering axes (location, monthly price ceiling, bedroom count) along with what is returned. This clearly separates it from siblings like search_hotels and search_flights.
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 is appropriate (finding Airbnb stays), but gives no explicit when-to-use guidance and never names an alternative such as search_hotels for non-Airbnb lodging. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_amazonARead-onlyInspect
Search Amazon for products by keyword. Returns title, price, star rating, review count, Prime / Amazon's Choice / Best Seller badges and product link.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What to search for, e.g. 'wireless earbuds', 'standing desk' | |
| domain | No | Amazon marketplace TLD (default 'com'; e.g. 'co.uk', 'de', 'co.jp') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuine value by enumerating the returned fields (title, price, star rating, review count, badges, link), which compensates for the absent output schema. It omits pagination, result-count limits, and rate-limit behavior, keeping it short of 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?
Two tight sentences with the action front-loaded and the return payload second. No filler, no repetition of the title, and every clause contributes 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 two-parameter read tool with no output schema, the description supplies the missing return-shape information and the core scoping (Amazon marketplaces via domain). It is close to complete, though pagination/result-limit behavior would make it fully sufficient.
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%: both 'query' and 'domain' are documented with examples and a default, so the schema already carries full parameter semantics. The description adds nothing beyond the schema, 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?
States a specific verb (Search) and resource (Amazon products) plus scope (by keyword), which cleanly separates it from the many other search_* siblings (search_airbnb, search_flights, search_reddit). The description is self-contained and an agent can route to it without reading any schema.
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 usage (product lookup by keyword) but gives no explicit when-to-use, when-not-to-use, or alternative routing guidance. It never mentions how it relates to the other search_* tools or say, meta_ads product-related tools, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_facebookARead-onlyInspect
Search Facebook public pages/posts by name or keyword. Returns page/author, text and link.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Page name or keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only that results are limited to public pages/posts, which is modest extra context; it says nothing about rate limits, result counts, or pagination.
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 tight sentences with zero filler; the core purpose is front-loaded and the return summary follows immediately. Every clause 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 one-parameter read tool with no output schema, the description usefully names the returned fields (page/author, text, link), which is what an agent needs to decide whether the results fit its task. It falls short only on selection guidance versus sibling search tools.
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% for the single required 'query' parameter, so the schema already documents it as 'Page name or keyword'. The description's 'by name or keyword' phrasing merely echoes the schema without adding format, syntax, or disambiguation guidance.
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 (Search) and resource (Facebook public pages/posts) with a scope qualifier ('public') and input mode ('by name or keyword'). This distinguishes it from the ads-oriented sibling search_facebook_ads, though it does not name any 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?
Usage is only implied: an agent infers it should call this when it needs to find Facebook pages or posts by keyword. There is no statement of when to prefer it over alternatives such as meta_ads_list_page_posts or search_facebook_ads, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_facebook_adsARead-onlyInspect
Search the PUBLIC Meta (Facebook/Instagram) Ad Library for ads any advertiser is running — great for competitor and creative research. Returns advertiser, ad copy, call-to-action, landing link, platforms, run dates and a permalink. This is public ad data, not your own ad account (use meta_ads_* tools for that).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max ads to return (default 6, max 20) | |
| query | Yes | Advertiser/brand name or keyword, e.g. 'Nike', 'meal kit' | |
| status | No | Filter by ad status (default 'all') | |
| country | No | 2-letter country code the ads are shown in (default 'US'), e.g. 'GB', 'DE' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description adds real context beyond that: it clarifies the data is public ad data rather than the caller's own account, and enumerates the returned fields. It does not mention rate limits or pagination, but this is solid added value over 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 tightly written sentences: purpose and audience first, return fields second, sibling disambiguation last. No filler, and the most decision-relevant constraint (public vs own account) is not buried.
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?
No output schema exists, yet the description enumerates the return fields (advertiser, ad copy, CTA, link, platforms, run dates, permalink), and annotations cover the safety profile. Nothing an agent needs to call this correctly is 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 100%, with defaults and examples already documented for query, status, country, and limit. The description adds no parameter-level syntax or format detail beyond what the schema provides, so the baseline of 3 is 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?
States a specific verb (Search) and resource (PUBLIC Meta Ad Library for any advertiser), and explicitly scopes it against the meta_ads_* siblings that operate on the caller's own ad account. An agent can distinguish this from meta_ads_list_ads without opening either schema.
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?
Gives an explicit use case ('great for competitor and creative research') and names the alternative tool family plus the condition that selects it ('use meta_ads_* tools for that'). When and when-not are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_flightsARead-onlyInspect
Search live flight prices and itineraries between two airports on a date (one-way or round-trip). Returns options sorted cheapest-first with airline, duration and stops.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Destination airport IATA code, e.g. 'BKK' | |
| from | Yes | Origin airport IATA code, e.g. 'SFO' | |
| adults | No | Number of adults (default 1) | |
| depart_date | Yes | Departure date YYYY-MM-DD | |
| return_date | No | Return date YYYY-MM-DD (optional; omit for one-way) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, openWorldHint, destructiveHint=false), so the bar is lower. The description adds real value by disclosing the return contract: results are live prices sorted cheapest-first with airline, duration and stops. It omits freshness/caching caveats and result limits, but exceeds what the annotations provide.
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 dense sentences with zero filler, front-loading what is searched before what is returned. Nothing could be cut without losing 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?
With no output schema, the description usefully summarizes the shape of results (sorted, with airline/duration/stops). Combined with 100% schema coverage, an agent has enough to invoke it correctly, though pagination or result-count behavior is unaddressed.
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 every parameter (from, to, depart_date, return_date, adults) is already documented with format and defaults. The description restates the airport/date pairing and confirms return_date drives round-trip, adding little 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 (search) plus resource (flight prices and itineraries), scope (between two airports on a date), and trip type. It is unmistakable against the other search_* siblings like search_hotels and search_airbnb, which cover different domains.
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 one-way vs round-trip distinction implies how to use the date parameters, but there is no explicit when-to-use, when-not-to-use, or named alternative. An agent must infer that this is the flight-domain search tool from context rather than from guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_hotelsARead-onlyInspect
Search live hotel availability and prices on Booking.com for a location and date range. Returns hotels with nightly price, star rating and review score.
| Name | Required | Description | Default |
|---|---|---|---|
| adults | No | Number of adults (default 2) | |
| check_in | Yes | Check-in date YYYY-MM-DD | |
| location | Yes | City or area, e.g. 'Da Nang' | |
| check_out | Yes | Check-out date YYYY-MM-DD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds useful context that results are live/real-time and what each hotel record contains, but says nothing about rate limits, result caps, or pagination behavior for what is presumably an external live-query tool.
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 tight sentences, front-loaded with the action and source, followed by the return contents. No filler or repetition of the tool name.
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 appropriately summarizes return contents (nightly price, star rating, review score) and covers the required inputs; it falls short only on operational behavior such as result limits or pagination, which would matter for a live external search 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 100%, so the schema already documents all four parameters including defaults and date formats. The description only gestures at 'location and date range' and adds no syntax, defaults, or constraint detail beyond the schema, matching the baseline of 3.
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 ('Search') plus resource ('live hotel availability and prices') and the source ('Booking.com') with the scoping conditions (location + date range). It is clearly distinguishable from siblings like search_airbnb or search_flights by resource, though it never explicitly names or contrasts 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?
Usage is implied by the description's framing (search hotels for a location and date range) but there is no explicit when-to-use/when-not-to-use guidance or reference to the other travel siblings (search_airbnb, search_flights) that an agent might confuse it with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_instagramBRead-onlyInspect
Look up an Instagram profile by username — full name, bio, follower and post counts.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Instagram handle, e.g. 'nasa' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering the safety profile. The description adds value by naming the returned fields (full name, bio, follower and post counts), but does not disclose rate limits, auth requirements, or behavior for missing/private profiles.
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?
One sentence, front-loaded with the action and resource, with the returned fields trailing. No filler or redundancy.
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 read tool with no output schema, the description is nearly complete, even naming the returned fields. The only gaps are usage routing and behavior on edge cases, which are minor here.
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% with a single required parameter already documented with an example ('nasa'). The description only restates 'by username' and adds no syntax, format, or edge-case detail beyond the schema, 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 (look up), a specific resource (Instagram profile), and the lookup key (username). The resource is unique among siblings (search_facebook, search_twitter, etc.), so an agent can distinguish it by domain, though it does not explicitly 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?
No when-to-use guidance, prerequisites, or alternatives are given. The usage is only implied by the name and description; an agent gets no explicit routing signal beyond 'this is the Instagram one'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_placesARead-onlyInspect
Search Google Maps for places (restaurants, shops, services, businesses) by keyword and optional location. Returns names, star ratings, review counts, category, address, phone and website.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What to search for, e.g. 'ramen', 'coworking space', 'dentist' | |
| location | No | City or area to search in, e.g. 'Da Nang' (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds value beyond those annotations by enumerating the returned fields (names, star ratings, review counts, category, address, phone, website), which is meaningful for a tool with no output schema. It omits result limits, pagination, or rate-limit 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 sentences, no filler. The purpose and scope are front-loaded, followed immediately by the return payload, and every clause 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?
With annotations covering safety and no output schema, the description usefully fills the return-value gap by listing the fields returned. It is nearly complete for a two-parameter search tool, though a note on result count limits or ordering would remove the last uncertainty.
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 both parameters are documented in the schema with examples. The description restates 'keyword and optional location' but adds no syntax, formatting, or constraint detail beyond what the schema already provides, 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?
States a specific verb and resource ('Search Google Maps for places') and enumerates the domain of results (restaurants, shops, services, businesses). This clearly separates it from siblings like search_airbnb, search_flights, and search_amazon, which are all vertical-specific searches.
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 conveys the basic shape of use (keyword plus optional location) but gives no explicit when-to-use vs when-not-to-use guidance and does not name any alternative tool. Usage is implied by the generic 'search' framing rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_redditBRead-onlyInspect
Search Reddit for posts matching a query. Returns post titles, subreddit, upvotes, comment counts and links.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What to search Reddit for, e.g. 'best noise cancelling headphones' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds value by naming the returned fields (titles, subreddit, upvotes, comment counts, links), which compensates for the missing output schema, but says nothing about rate limits, pagination, or result caps.
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 tight sentences with the purpose front-loaded and the output summary second. No filler or redundant restatement of the tool name.
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-only search tool, the description covers purpose and the return shape even without an output schema. It is nearly complete, missing only result-volume or pagination expectations.
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?
Only one parameter exists and schema description coverage is 100% including an example query, so the schema fully documents it. The description adds no syntax or format detail beyond what the schema already provides; baseline 3 is 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?
The description states a specific verb and resource (search Reddit for posts), and the return fields are enumerated. It is distinguishable from the many search_* siblings by the explicit 'Reddit' scope, though it doesn't explicitly contrast with any named alternative.
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 siblings like search_twitter or twitter_user, nor any mention of prerequisites or limitations. Usage is only implied by the name and verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tiktokBRead-onlyInspect
Search TikTok for videos by keyword or handle. Returns author, play count, caption and link.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Keyword or @handle |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds the return fields (author, play count, caption, link), which is useful but is return-value info rather than behavioral context. No mention of pagination, rate limits, or result caps, so it is adequate 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler: the first states what it does, the second states what it returns. Front-loaded and efficient.
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 covers the action, the input forms, and the returned fields. Missing pagination/limits is a minor gap for a search tool, but nothing essential to calling it is absent.
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% with a single documented parameter, so the schema already carries the meaning. The description's 'keyword or handle' mirrors the schema's 'Keyword or @handle' without adding format or syntax detail beyond it. 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: 'Search TikTok for videos by keyword or handle.' The resource (TikTok videos) distinguishes it from the other search_* siblings by platform. It does not, however, explicitly differentiate itself from the large family of sibling search tools, so it falls short of a 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?
There is no guidance on when to use this tool versus the many sibling search tools (search_instagram, search_twitter, etc.), nor any prerequisites or exclusions. The platform name is the only implicit selection signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_twitterARead-onlyInspect
Search X/Twitter for tweets matching a query. Supports operators (from:user, filter:videos, min_faves:N, until:YYYY-MM-DD). Returns tweets with author, likes, retweets and link.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | recent, popular, or mixed (default mixed) | |
| limit | No | Max tweets (default 10) | |
| query | Yes | Search query, e.g. 'AI agents' or 'from:elonmusk' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that by disclosing supported search operators and the returned fields (author, likes, retweets, link), though it omits rate limits or pagination 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?
Three short sentences, zero filler: purpose first, then capability/operator detail, then return shape. Every sentence earns its place and the most important information is front-loaded.
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 compensates by naming the returned fields, and it covers query syntax and the operator repertoire. For a 3-parameter read-only search tool with full annotation coverage, nothing an agent needs to invoke it correctly is 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 coverage is 100%, so the baseline is 3, but the description goes beyond the schema by spelling out operator syntax (from:user, filter:videos, min_faves:N, until:YYYY-MM-DD) that the schema only hints at with a single example. It does not additionally explain the type or limit parameters, which the schema already documents.
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 (Search) and resource (X/Twitter tweets matching a query), and the operator examples plus return fields make the scope unambiguous. It is clearly distinguishable from siblings like twitter_user, twitter_replies, twitter_user_tweets, and search_reddit/search_tiktok.
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 verb 'search' but there is no explicit guidance on when to use this over twitter_user_tweets or twitter_replies, nor any exclusions or prerequisites. Adequate context, no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stripe_account_infoARead-onlyInspect
Check which Stripe account the connected key belongs to (name, id, live or test mode). Run this first to confirm the connection.
| 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, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds real context beyond that: it reveals the tool operates on the "connected key" (implying prior integration setup) and that the response includes live/test mode, which matters for interpreting downstream results.
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, zero waste. The output content is stated first and the sequencing instruction follows, so the function is front-loaded.
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?
No output schema exists, yet the description enumerates the key return values (name, id, mode) and the operational precondition. For a zero-parameter connectivity check, nothing an agent needs is 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?
With zero parameters, the baseline of 4 applies. The description correctly implies a no-argument call and adds no misleading parameter expectations.
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?
Names a specific verb (check) and resource (which Stripe account the connected key belongs to), and enumerates the returned fields (name, id, live or test mode). That scope cleanly separates it from siblings like stripe_api_details, stripe_api_read, or the summary tools, which operate on payment data rather than connection identity.
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?
"Run this first to confirm the connection" gives explicit ordering guidance and a clear trigger condition. There are no stated exclusions or named alternatives, but the "first" framing makes the usage context unambiguous for a setup/verification step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stripe_api_detailsARead-onlyInspect
Get the parameters of one Stripe API operation, so a stripe_api_read or stripe_api_write call is built correctly.
| Name | Required | Description | Default |
|---|---|---|---|
| stripe_api_operation_id | Yes | The Stripe operation id, e.g. GetCustomers, GetSubscriptions, PostCustomers. Find it with stripe_api_search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds that the return value is the operation's parameters for building a subsequent call, but says nothing about failure behavior for an unknown/ambiguous operation id or the format of the returned parameter spec.
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 sentence with the action and its purpose front-loaded; no filler, no repetition of 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 one-parameter metadata lookup with no output schema, the description conveys the essential contract: it returns the request parameters for a given operation id so read/write can be constructed. A brief note on what the returned parameter spec looks like (required vs optional fields, path/body split) would make it fully self-sufficient.
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?
Only one parameter exists and schema description coverage is 100%: the schema already gives examples (GetCustomers, PostCustomers) and points to stripe_api_search for discovery. The description adds no parameter-level meaning beyond what the schema documents, 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 ('Get the parameters of one Stripe API operation') and names the downstream siblings stripe_api_read and stripe_api_write, which is exactly how it differs from stripe_api_search (which locates the id). An agent can place it in the Stripe workflow without opening the schema.
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 clause 'so a stripe_api_read or stripe_api_write call is built correctly' makes the intended sequence explicit: look up the operation's parameters before invoking read/write. No explicit exclusion is stated (e.g. 'do not call for operations you already know'), but the usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stripe_api_readBRead-onlyInspect
Read anything in the user's Stripe account with any Stripe GET operation: customers, charges, invoices, subscriptions, payouts, disputes, balance and more. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| parameters | No | All path, query and body values for the call. Path parameters go here named as in the path's braces (e.g. 'id' for /v1/customers/{id}). Array fields such as line_items must be JSON arrays. | |
| stripe_api_operation_id | Yes | The Stripe operation id, e.g. GetCustomers, GetSubscriptions, PostCustomers. Find it with stripe_api_search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so 'Read-only' in the description largely restates structured data. The description does convey genuine openness — an unbounded set of endpoints across the whole account — but says nothing about pagination, rate limits, auth/scopes, or how request failures surface.
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 front-loaded sentence that leads with the capability and then enumerates examples; there's no filler. The trailing 'Read-only' is mild redundancy against the annotations, keeping it just shy of a 5.
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 only two parameters, full schema coverage and annotations covering safety, the essentials are present, and no output schema means return values needn't be explained. Still, for an open-world dispatcher the critical workflow — search for the operation id, inspect it with stripe_api_details, then call — is only half-visible, appearing in the schema rather than the description.
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 baseline of 3 applies; the schema itself explains that path parameters go keyed by brace names and that array fields must be JSON arrays. The description adds no further parameter semantics beyond the resource examples that hint at what operation ids exist.
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 (read) and a clear scope: any Stripe GET operation, with concrete resource examples (customers, charges, invoices, subscriptions, payouts, disputes, balance). The word 'GET' plus 'Read-only' cleanly separates it from stripe_api_write, though it never names that sibling or the higher-level summary tools 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?
Usage is implied by 'read anything ... with any Stripe GET operation', and the read-versus-write split is clear enough to avoid stripe_api_write. However, it gives no guidance on when to prefer the purpose-built siblings (stripe_mrr_summary, stripe_failed_payments, stripe_churn_summary, stripe_account_info) over this generic dispatcher, and no mention that stripe_api_search must be used first to obtain the operation id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stripe_api_searchARead-onlyInspect
Find the Stripe API operation id for something you want to do, e.g. intent 'list' + resource 'invoices'. Use before stripe_api_read / stripe_api_write when you don't know the id.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results, default 5 | |
| intent | Yes | What to do, e.g. list, retrieve, create, refund | |
| resource | Yes | What to do it to, e.g. customer, subscription, payout |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only that the output is an operation id; it says nothing about match ranking, fuzzy vs exact matching on intent/resource, or what happens on zero results — behavior an agent would want for a search tool.
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 purpose and followed by the sequencing guidance. Every clause earns its place with no filler.
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 state that the return value is an operation id, and the schema fully covers the inputs. It is nearly complete for a simple two-keyword lookup; only the result shape (single id vs list of up to 5) is left implicit.
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 baseline is 3. The example ('intent list + resource invoices') hints at lowercase verb/noun phrasing, but the description adds no real semantics beyond what the schema already documents for intent, resource, and limit.
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 — 'Find the Stripe API operation id' — and immediately grounds it with a concrete example ('intent list + resource invoices'). It is clearly distinguishable from stripe_api_details and stripe_search_docs because it returns an operation id, not documentation or field detail.
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?
'Use before stripe_api_read / stripe_api_write when you don't know the id' gives an explicit trigger condition and names the downstream siblings. It stops short of explaining how this differs from the other lookup-flavored siblings (stripe_search_docs, stripe_api_details), leaving a small ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stripe_api_writeADestructiveInspect
[WRITE — changes the user's live Stripe account] Create, update or delete Stripe objects with any POST/DELETE method (customers, products, prices, invoices, coupons, refunds…). Requires confirm:true. Refunds and other money movement may need the user's approval in Stripe first; the reply then says NOT DONE YET and gives the approval link.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true to run. Set it only after the user has seen and agreed to the exact request. | |
| parameters | No | All path, query and body values for the call. Path parameters go here named as in the path's braces (e.g. 'id' for /v1/customers/{id}). Array fields such as line_items must be JSON arrays. | |
| human_confirmation | No | Only after the user approved a held request at Stripe's approval link: pass the approval_token Stripe gave them, with the exact same other arguments. | |
| stripe_api_operation_id | Yes | The Stripe operation id, e.g. GetCustomers, GetSubscriptions, PostCustomers. Find it with stripe_api_search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint/openWorldHint annotations: it warns that changes hit the user's live account, that refunds may be held for the user's approval in Stripe, and that the reply will read 'NOT DONE YET' with an approval link. That held-request behavior is exactly the non-obvious trait an agent would otherwise misread as a failure.
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 compact sentences, front-loaded with the destructive warning, then the operation scope, then the confirmation and approval mechanics. No filler.
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 generic pass-through write tool with a nested parameters object, it covers the destructive scope, the confirmation gate, the held-approval recovery path, and how to locate the operation id. No output schema exists, but the description explains what a held response looks like.
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 schema already documents confirm, parameters, human_confirmation and the operation id. The description reinforces the confirm:true requirement and the approval-token flow but adds little syntax beyond that, so 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 set (create/update/delete) and resource (Stripe objects via POST/DELETE), with concrete examples of object types. The 'WRITE' prefix and 'POST/DELETE' qualifier cleanly separate it from stripe_api_read.
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?
Clear context for when to use: any mutating Stripe call, with the confirm:true prerequisite and the approval-link path for money movement. It never explicitly names stripe_api_read as the alternative for GETs, leaving that inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stripe_churn_summaryARead-onlyInspect
Subscription churn in the user's Stripe account over a recent window: cancellations, churn rate, MRR lost and the cancellation reasons customers gave. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Look-back window in days, 1–365. Default 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the trailing 'Read-only' earns no credit. The description does add useful behavioral context about what the response contains (the metric set and cancellation reasons), but says nothing about currency, currency conversion, timezone/boundary handling, or whether it reflects live vs. cached Stripe data.
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 sentence, front-loaded with the resource and scope, then the enumeration of returned metrics. Nothing is padded, and the trailing 'Read-only' is the only redundancy against the 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?
No output schema exists, so the description correctly takes on the burden of listing return fields (cancellations, churn rate, MRR lost, reasons), which makes it callable without further reading. Minor gaps remain around currency/aggregation granularity, but for a one-optional-param read tool this is sufficient.
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% and the schema already documents the 1–365 range and the default of 30. The description only says 'over a recent window', which adds no meaning 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+resource ('Subscription churn in the user's Stripe account') and enumerates the exact outputs: cancellations, churn rate, MRR lost, and cancellation reasons. That metric set separates it from siblings like stripe_mrr_summary and stripe_failed_payments without needing to name 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?
Usage is only implied by the subject matter ('churn') and the window framing. There is no explicit statement of when to pick this over stripe_mrr_summary or stripe_failed_payments, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stripe_failed_paymentsARead-onlyInspect
Failed card and payment charges in the user's Stripe account over a recent window: count, total amount, the decline reasons, and the most recent failures with customer email. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Look-back window in days, 1–365. Default 30. | |
| limit | No | How many recent failures to list, 1–50. Default 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the 'Read-only' clause is largely redundant. However, the description goes beyond the annotation by disclosing the concrete shape of the result (count, total, decline reasons, most recent failures with customer email) and the 'recent window' scoping, which is real behavioral context. It stops short of covering auth/connection requirements or rate limits.
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 sentence with a colon-delimited payload list; the resource is front-loaded and the 'Read-only' safety note is placed last. No filler sentences, though the enumeration makes it dense to parse in one pass.
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 carries the burden of explaining return values, and it does so reasonably: counts, totals, decline reasons, and recent failures with emails. Minor gaps remain — currency, whether multiple Stripe accounts are aggregated, and whether the count/total is computed over the same window as the listed failures.
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 schema already documents both 'days' (1-365, default 30) and 'limit' (1-50, default 10). The description only gestures at 'a recent window' and 'the most recent failures' without adding syntax, defaults, or tradeoff guidance, so 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?
The description names a specific resource (failed card and payment charges in the user's Stripe account) and enumerates what the tool returns: count, total amount, decline reasons, and recent failures with customer email. That is far more specific than a bare name restatement and separates it in spirit from stripe_mrr_summary and stripe_churn_summary. It does not explicitly name a sibling it should be preferred over, which keeps it from a 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?
Usage is implied by the described output (you want failure counts, decline reasons, recent failing customers) and the 'recent window' framing, but there is no explicit when-to-use statement. It never tells the agent when to prefer stripe_api_read or stripe_api_search over this summary, nor any prerequisites such as needing a connected Stripe account, so the agent must infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stripe_mrr_summaryARead-onlyInspect
Monthly recurring revenue from the user's own Stripe account: MRR and ARR per currency, the largest plans, plus how many subscriptions are trialing or past due. Read-only.
| 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, destructiveHint=false, and openWorldHint=true, so the safety profile is covered and the trailing 'Read-only' is redundant. What the description does add is scope (own account only) and the shape of the returned metrics, but it does not disclose the time window, data freshness, or whether currencies are converted — meaningful gaps for a financial summary.
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?
One front-loaded sentence enumerating the exact outputs, followed by a two-word read-only tag. No filler; every clause identifies a distinct part of the return value.
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 input params and no output schema, the description carries the burden of describing return values, and it does so at a useful level (MRR and ARR by currency, top plans, trialing/past-due counts). It stops short of stating the reporting period or how 'largest plans' is ranked, which are the remaining ambiguities.
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 and the schema coverage is 100%, so the baseline is 4. The description correctly implies no filtering input is needed, consistent with the empty 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?
States a specific metric family (MRR/ARR per currency, largest plans, trialing/past-due subscription counts) scoped to the user's own Stripe account. That content signature clearly separates it from sibling summaries such as stripe_churn_summary, stripe_failed_payments, and the generic stripe_api_read.
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: an agent can infer 'call this when you need revenue metrics,' but the description never says when to prefer it over stripe_churn_summary, stripe_account_info, or stripe_api_read, and gives no preconditions. Adequate but with a clear routing gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stripe_search_docsCRead-onlyInspect
Search Stripe's official documentation and support articles.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Optional programming language for code examples | |
| question | Yes | The question to search for | |
| search_only_api_ref | No | true to search only the API reference |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint, openWorldHint and non-destructive, so safety is covered. Beyond that the description discloses nothing: not whether results are snippets or full pages, whether it covers only Stripe-hosted content, or how many results come back.
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 front-loaded sentence with no filler. It is efficiently sized, though the brevity stems partly from under-specification rather than discipline.
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 annotations and a fully described schema, the core mechanics are documented, but for a tool whose main risk is being confused with stripe_api_search the missing sibling differentiation leaves a real invocation gap. An output schema is absent, so return-shape expectations remain unset.
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%, with all three parameters documented including the language enum and the search_only_api_ref flag, so baseline is 3. The description adds no parameter 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?
Names a specific verb and resource ('Search Stripe's official documentation and support articles'), so the agent knows it retrieves prose docs rather than account data. However, it never distinguishes itself from the closely named siblings stripe_api_search and stripe_api_details, both of which sound like documentation/API lookups.
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 choose this over stripe_api_search, stripe_api_details, or stripe_api_read, and no mention of when to set search_only_api_ref. The agent must infer the routing decision entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_get_bot_infoARead-onlyInspect
Check that your connected Telegram bot token works and see the bot's username (via @BotFather's getMe).
| 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, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context (the getMe endpoint, token-validity purpose) but says nothing about the return format or what happens when the token is invalid, which would raise this 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?
A single tight sentence with the primary purpose (token verification) front-loaded and the return value (username) appended. No filler or redundancy.
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, no-output-schema tool, the description covers both the action and the expected return (username plus token validity). It is complete enough to call correctly, though it omits failure/error behavior for an invalid token.
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, which is the baseline-4 case per the rubric. There is nothing for the description to clarify beyond what the empty schema already shows.
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: verifies the connected bot token and returns the bot's username, citing the underlying @BotFather getMe call. This is clearly distinct from sibling tools like telegram_get_chat and telegram_send_message, though it doesn't explicitly name 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?
"Check that your connected Telegram bot token works" implies the usage context (credential/connectivity verification), which is a reasonable hint. However, there is no explicit when-to-use statement, no when-not-to-use, and no named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_get_chatARead-onlyInspect
Get info (type, title/name, username, description) for a chat your bot can see, by id or @username.
| Name | Required | Description | Default |
|---|---|---|---|
| chat_id | Yes | Numeric chat id or @username |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context beyond that: the exact lookup keys (numeric id or @username) and the field set returned, which matters since no output schema exists. It omits what happens on an unknown/inaccessible chat, keeping it from 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?
A single sentence that front-loads the verb and resource and then the return payload; every clause earns its place with no redundancy or filler.
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-only single-parameter lookup with annotations covering safety, the description is nearly self-sufficient: it names the lookup keys and the returned fields, compensating for the absent output schema. The only real gap is error/not-found behavior and rate-limit context.
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?
Only one parameter, and schema coverage is 100% – the schema already documents 'Numeric chat id or @username'. The description restates the same dual-key idea without adding format nuance (e.g. sign of numeric ids, whether @ is required), 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+resource (get info for a chat) and enumerates the returned fields (type, title/name, username, description), which separates it from telegram_read_recent_updates and telegram_get_bot_info. It does not explicitly name a sibling, so it lands just short of a 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 phrase 'a chat your bot can see' implies the access precondition a caller must satisfy, but there is no explicit when-to-use versus telegram_read_recent_updates or telegram_get_bot_info, and no statement of when this tool is the wrong choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_read_recent_updatesARead-onlyInspect
Read the newest messages your bot has received. IMPORTANT: Telegram's Bot API has no "fetch chat history" endpoint. A bot only ever sees messages sent directly to it (DMs), or messages in groups where its privacy mode is off or it's an admin — and only NEW messages received after this tool starts checking, never anything sent before that.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max messages to return (default 10, max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses critical behavioral constraints: there is no chat-history endpoint, only messages received after the tool starts checking are visible, and privacy-mode/admin requirements govern group visibility. This is exactly the kind of context annotations cannot convey.
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 core purpose is front-loaded, and the caveat is flagged with 'IMPORTANT' to draw attention. It is slightly dense but every sentence carries necessary behavioral 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 one-parameter read tool with no output schema, the description covers the crucial operational limitations an agent must know. It could briefly note the return shape, but the essential correctness information is present.
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 single 'limit' parameter already documents its default (10) and max (100). The description adds no additional parameter semantics, so 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?
The description states a specific verb and resource (read newest messages the bot received) and implicitly scopes it away from siblings like telegram_send_message and telegram_get_chat. An agent can tell this is an inbound-read tool without inspecting the schema.
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 clearly explains the operational context in which the tool works (bot only sees DMs, or group messages where privacy mode is off or it's an admin, and only new messages). It does not name alternative tools explicitly, but the when-it-applies guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_send_messageADestructiveInspect
Send a text message through your Telegram bot to a chat (a user who has DM'd the bot, or a group/channel the bot is in). Lodestone appends the line "Sent via Lodestone · lodestone.studiocorsair.com" to the end of the message automatically on the Free plan; do not add it yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Message text, 1-4096 characters | |
| chat_id | Yes | Numeric chat id or @username of the chat to message — get it from telegram_get_chat or telegram_read_recent_updates |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so safety is covered. The description adds a genuinely non-obvious behavioral fact: Lodestone auto-appends a 'Sent via Lodestone' footer on the Free plan, so the agent knows not to duplicate it and that the delivered text differs from what it passes.
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 sentences, zero filler, and the delivery-scope constraint is front-loaded ahead of the plan-specific footer caveat.
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?
No output schema exists, and the description does not say what the call returns (e.g. a message id) or confirm delivery behavior. For a simple two-parameter send tool with rich schema text and safety annotations, everything else an agent needs is present.
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%, with both parameters documented, including where to obtain chat_id. The description adds only that chat_id may be a user DM or a group/channel, which is marginal beyond the schema's '@username or numeric id' text. 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 ('Send a text message through your Telegram bot') plus precise audience scope (a user who has DM'd the bot, or a group/channel the bot is in). An agent can distinguish this from beeper_send_message or email_send without opening any schema.
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 parenthetical clarifies the only chats that are reachable, which is real usage guidance for a bot-scoped tool. It stops short of stating exclusions or naming alternatives (e.g. beeper_send_message, or verifying the chat via telegram_get_chat first).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_repliesCRead-onlyInspect
Get the replies to a specific tweet.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max replies (default 10) | |
| tweet_id | Yes | Tweet ID or URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so safety and open-world nature are covered. The description adds no further behavioral context such as pagination, rate limits, ordering, or what the replies contain. No annotation contradiction.
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, front-loaded sentence with no wasted words. It is appropriately sized for a simple read tool, though it lacks structural elements like usage notes or parameter hints.
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 tool is simple and annotations plus a fully described schema cover the essentials. However, with no output schema, the description could mention what the replies look like or how they are returned. It is minimally adequate but not rich.
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%: the tweet_id parameter is documented as 'Tweet ID or URL' and limit as 'Max replies (default 10)'. The description adds no additional meaning beyond the schema, so 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: 'Get the replies to a specific tweet.' This clearly identifies the tool's function. However, it does not differentiate from relevant siblings like twitter_user_tweets or search_twitter, which could also return tweet content.
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 tool versus alternatives. It does not mention conditions, prerequisites, or that other tools exist for searching or retrieving tweets by user. Usage must be inferred 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.
twitter_userBRead-onlyInspect
Get an X/Twitter user's profile — name, bio, follower/following/tweet counts, verified status.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Twitter handle, e.g. 'jordanrejaud' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint, so the safety profile is covered. The description adds no behavioral detail such as auth requirements, rate limits, or handling of suspended/nonexistent accounts, so it goes no further than 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?
One front-loaded sentence with the resource and its returned fields; every clause earns its place and there is no padding.
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 lookup with no output schema, the description usefully previews the returned profile fields so the agent knows what comes back. Only the behavioral/edge-case context is thin.
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 a single parameter with 100% schema description coverage, including a concrete handle example. The description adds no format or syntax detail beyond what the schema already provides, 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?
States a specific verb and resource ('Get an X/Twitter user's profile') and enumerates the fields returned. It is clearly distinct from siblings like twitter_user_tweets and twitter_replies, though it never names them 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?
No guidance on when to use this versus search_twitter or twitter_user_tweets, and no prerequisites or context. The agent must infer usage 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.
twitter_user_tweetsCRead-onlyInspect
Get a user's most recent tweets.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max tweets (default 10) | |
| username | Yes | Twitter handle |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond the title's near-identical phrasing: no pagination behavior, no treatment of retweets/replies inclusion, no rate-limit 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?
A single front-loaded sentence with zero padding. It is efficient, though so terse that little is 'earned' because little 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?
Read-only, two params, no output schema, so the description need not explain returns. Still, for a social-feed tool it omits what 'most recent' spans and whether the limit counts retweets, leaving the agent with a minimally viable definition.
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 both parameters are documented in the schema ('Max tweets (default 10)', 'Twitter handle'). The description contributes no additional detail about how limit interacts with recency or what username formats are accepted, 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 ('Get a user's most recent tweets'), which is clear against the sibling set. It stops short of differentiating from close neighbors like twitter_user or twitter_replies, so an agent must infer the boundary rather than being told.
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 exclusions, and no mention of the obvious alternatives (twitter_user for profile data, twitter_replies for reply threads, search_twitter for topic search). The agent is left to infer selection 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.
typefully_postADestructiveInspect
Publish a post (with an optional image) to your social networks via Typefully — X and, if connected, LinkedIn, Threads, Bluesky and Mastodon at once. Publishes immediately by default; can also schedule. Handles image upload for you: pass image_url (e.g. a generated fal.media image) and Typefully attaches it.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The post text. For a thread, separate posts with four consecutive newlines. | |
| reply_to | No | Optional X/Twitter status URL to reply to (X only). | |
| image_url | No | Optional public image/video URL to attach (fetched and uploaded for you). Works directly with fal.media generated-image URLs. | |
| platforms | No | Networks to publish to. Default ['x']. Pass e.g. ['x','linkedin','bluesky'] to cross-post to every network you've connected in Typefully — networks you haven't connected are ignored. | |
| schedule_at | No | Optional ISO-8601 time (or 'next-free-slot') to schedule instead of publishing now. Default: publish now. | |
| social_set_id | No | Optional Typefully social-set id to post from (defaults to your first/only set). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the external, irreversible nature is partly covered. The description adds real context beyond that: immediate publishing by default, thread encoding via four newlines, and that image fetching/upload is handled internally. It stops short of warning about irreversibility or noting rate limits/auth prerequisites.
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, front-loaded with the primary action and its default behavior, with the image-upload convenience last. No filler sentences or redundant restatement of the tool name.
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 write tool with no output schema and six fully documented parameters, the description covers the key behavioral facts (immediate vs scheduled, cross-post scope, image handling). It does not describe the response payload (e.g. resulting post ID/URL), which is the only notable 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 description coverage is 100%, so every parameter is already documented in the schema itself (including the newline thread convention and fal.media image support). The description largely restates that same information rather than adding new syntax or format guidance, 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?
Opens with a specific verb+resource ('Publish a post') and immediately scopes the target surfaces (X plus optionally LinkedIn, Threads, Bluesky, Mastodon). It also differentiates from the only sibling in the same namespace (typefully_whoami) by being the posting/write operation. An agent can select this without opening the schema.
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?
Clearly states the default behavior ('publishes immediately by default') and the alternative mode ('can also schedule'), plus the conditional cross-post mapping (connected networks are hit, unconnected ones are ignored). There is no explicit sibling routing, but the typefully namespace contains only whoami as an alternative, so the omission is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
typefully_whoamiARead-onlyInspect
Check that your connected Typefully API key works and see your Typefully account + social set(s) — the group of networks (X, LinkedIn, Threads, Bluesky, Mastodon) a post fans out to.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds value by disclosing what is returned (account identity and social sets) and that it serves as an auth/connectivity check, though it says nothing about rate limits or error/auth-failure 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?
Effectively one front-loaded sentence; the em-dash gloss on 'social set' is explanatory value rather than padding. Slightly verbose with the inline network list, but nothing that fails to earn 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?
With no output schema, the description carries the return-value burden and does so by naming the two things returned (account + social sets). For a trivial zero-param identity tool this is nearly complete, missing only edge-case behavior on invalid keys.
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?
Zero parameters, so there is nothing to document; baseline 4 applies. The description correctly implies a no-argument call.
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 gives a specific verb+resource: verifies the Typefully API key and returns the account plus social sets. It even defines 'social set' (the group of networks a post fans out to), so no sibling ambiguity remains with typefully_post.
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 implies a usage context ('check that your connected API key works'), which is a clear diagnostic scenario, but it never states when to prefer this over siblings or any prerequisites/exclusions. Usage is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wordpress_create_draftAInspect
[WRITE] Create a new DRAFT post or page on the user's WordPress site. Always a draft — never public until wordpress_publish is called. Markdown or plain text is converted to WordPress blocks. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Optional URL slug | |
| type | No | post (default) or page | |
| title | Yes | Title | |
| format | No | How content is written. markdown (default; plain text is fine) is converted to WordPress blocks: paragraphs, # headings, - and 1. lists, > quotes, ``` code, --- separators and  images on their own line. Use blocks for raw Gutenberg block markup, or html for classic HTML (shown as a Classic block). | |
| confirm | No | Must be true. Confirm the change with the user first; this acts on their live site. | |
| content | No | Body text (markdown by default) | |
| excerpt | No | Optional summary | |
| featured_media | No | Optional media id for the featured image (from wordpress_upload_media) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare write/openWorld/non-destructive; the description adds the key behavioral guarantee that output is always a draft and only becomes public via another tool, plus the confirm-first requirement against the live site. That is material context an agent could not derive from the annotations alone.
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?
Four short sentences, front-loaded with the write tag and the draft-only constraint; nothing is padded. Slight redundancy with the schema's format description 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 an 8-parameter write tool with no output schema, the description covers safety, preconditions and content conversion well. It never indicates what the call returns (e.g. the new post ID needed downstream for publish/update), which an agent would have to discover.
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% and the schema's format field already spells out the markdown-to-blocks conversion in greater detail than the description does, so the description's conversion sentence is largely duplicative. No additional meaning is added for slug, excerpt, featured_media or type; baseline 3.
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?
"[WRITE] Create a new DRAFT post or page" gives a specific verb, resource and the two supported content types, and the DRAFT/never-public framing immediately separates it from wordpress_publish and wordpress_update_post. An agent can classify it without opening the schema.
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 explicitly routes the publish step to wordpress_publish ("never public until wordpress_publish is called") and states the confirm:true precondition. It does not, however, warn against using it to modify an existing post (wordpress_update_post is a sibling), leaving that exclusion to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wordpress_delete_postADestructiveInspect
[WRITE — removes content] Move a post or page to the trash (restorable for 30 days), or delete it permanently with permanent:true. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Post or page id | |
| type | No | post (default) or page | |
| confirm | No | Must be true. Confirm the change with the user first; this acts on their live site. | |
| permanent | No | true deletes forever instead of trashing (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds real value beyond them: a 30-day restorability window for trashing, that permanent:true is forever, the confirm gate, and that the action hits the user's live site. It doesn't cover side effects such as what happens to media, comments, or taxonomy terms on the deleted item.
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?
One tightly packed sentence after the [WRITE — removes content] tag, with the most consequential facts (trash vs permanent, confirm required) front-loaded. No filler.
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, high-stakes write tool with full schema coverage, the description covers mode, reversibility, and the confirmation gate. Return behavior (e.g. whether the trashed record id is echoed back) is unaddressed, which is a minor gap given there's no output 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 coverage is 100% and each parameter already has its own description, so the description mostly restates permanent:true and confirm:true rather than adding new semantics. The only marginal addition is the 30-day recovery window, which contextualizes permanent. Baseline 3 applies when the schema does the heavy lifting.
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?
Specific verb (delete / move to trash) plus resource (post or page), and it explicitly separates the two modes: reversible trash versus permanent deletion. An agent can distinguish this from siblings like wordpress_update_post or wordpress_publish without opening a schema.
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?
Clear conditions are given: use trash by default, pass permanent:true for irreversible removal, and confirm:true is mandatory. What's missing is explicit routing against siblings (e.g. when to prefer wordpress_update_post to unpublish rather than delete), so it stops 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.
wordpress_get_postARead-onlyInspect
Read one WordPress post or page in full: title, status, dates, link, categories and tags, and its content as block markup.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Post or page id (from wordpress_list_posts / wordpress_list_pages) | |
| type | No | post (default) or page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds that content is returned as block markup, which is useful behavioral context beyond annotations, but it says nothing about auth requirements, missing-post errors, or pagination/truncation 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?
A single sentence with no filler; the resource and the returned fields are front-loaded so an agent can judge relevance immediately.
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 2-parameter read tool with no output schema, the description adequately enumerates the returned shape (title, status, dates, link, terms, block markup). Only the edge-case behavior for invalid ids is unaddressed.
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 both the id and the post/page enum are fully documented in the schema, including where ids come from. The description adds no parameter detail 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?
The description gives a specific verb (Read) and resource (one WordPress post or page) and enumerates the returned fields, including content as block markup. It distinguishes single-item reads from the list_* siblings implicitly through 'one ... in full', though it never names those alternatives directly.
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: fetch a single post/page by id, with the id sourced from wordpress_list_posts/wordpress_list_pages per the schema. There is no explicit statement of when to prefer this over list tools or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wordpress_list_commentsARead-onlyInspect
List comments on the user's WordPress site — by default the ones awaiting moderation. Filter by status, post or text.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Optional text filter | |
| status | No | hold (default, awaiting moderation), approve, spam, trash or all | |
| post_id | No | Only comments on this post | |
| per_page | No | How many (1-100, default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered; the description adds the useful default status=hold behavior. It does not disclose pagination behavior (per_page default 20), result ordering, or whether filtering happens server-side, which would matter for a read on a live site.
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 em-dash-joined sentence that front-loads the action, then the default, then the filter axes. Nothing redundant relative to the schema 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?
Four optional params with full schema coverage, a read-only annotation set and no output schema — the description covers what is listed, the default scope and the filter axes, which is enough to call it correctly. Only minor gaps remain, such as result fields/ordering, which are not strictly required without an output 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 coverage is 100% and every parameter has its own description including the status enum and per_page bounds, so the schema does the heavy lifting. The description restates the three filter dimensions ('status, post or text') without adding matching semantics (e.g., what 'search' matches) 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?
Specific verb and resource ('List comments on the user's WordPress site') plus the default scope ('by default the ones awaiting moderation'), which is real added meaning. It implicitly separates from the mutation sibling wordpress_moderate_comment, but never names it or any other 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?
The default-to-moderation-queue framing implies the primary use case (reviewing pending comments), but there is no explicit when-to-use/when-not guidance and no pointer to wordpress_moderate_comment for acting on the comments found here, or to wordpress_list_posts for post context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wordpress_list_pagesARead-onlyInspect
List or search pages (not posts) on the user's WordPress site, including drafts. Returns id, title, status, date and link.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page of results (default 1) | |
| search | No | Optional text to search titles and content | |
| status | No | publish, draft, pending, future, private, trash, or any (default) | |
| per_page | No | How many (1-100, default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this as a read-only, non-destructive, open-world operation. The description adds useful behavioral context beyond annotations by noting that drafts are included and by listing the return fields, though it does not discuss permissions or rate limits.
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 compact sentence with no wasted clauses. The scope '(not posts)' and the return fields are front-loaded and immediately 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 read-only listing tool with complete parameter schema coverage and safety annotations, the description covers purpose, scope, draft inclusion, and return shape. Nothing essential for correct invocation is missing, especially since there is no output schema to explain return values.
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 all four parameters are already documented in the input schema. The description only loosely echoes search and draft inclusion and does not add syntax, defaults, or filtering behavior beyond what the schema provides. Baseline 3 is appropriate when the schema carries parameter semantics.
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 gives a specific verb and resource: list or search pages on a WordPress site. It explicitly distinguishes pages from posts, which is the key sibling boundary, and states the returned fields. An agent can identify this as the page-listing tool without opening the schema.
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 explicitly scopes use to pages '(not posts)', which steers the agent away from wordpress_list_posts. It also indicates search capability and draft inclusion, but it does not name the sibling alternative directly or state when to prefer wordpress_get_post for a single page.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wordpress_list_postsARead-onlyInspect
List or search posts on the user's WordPress site, including drafts, scheduled and private ones. Returns id, title, status, date and link.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page of results (default 1) | |
| search | No | Optional text to search titles and content | |
| status | No | publish, draft, pending, future (scheduled), private, trash, or any (default) | |
| per_page | No | How many (1-100, default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful scope context (results include drafts, scheduled and private posts) and names the returned fields, which is real information an agent would not get from 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 tight sentences: the first establishes scope, the second states the return shape. Nothing is redundant or buried, and the key scope fact is front-loaded.
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 usefully lists returned fields (id, title, status, date, link), and all four parameters are documented in the schema. Pagination behavior beyond defaults is left to the schema, which is acceptable at this complexity.
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%, with defaults and the status enum fully documented in the input schema, so the baseline is 3. The description only echoes the search capability and the inclusion of non-publish statuses without adding syntax, default or pagination detail 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?
The description gives a specific verb (list/search) and resource (posts on the user's WordPress site), plus the returned fields, so it is clearly not a mutation or a single-item fetch. It does not explicitly distinguish itself from siblings like wordpress_list_pages or wordpress_get_post, leaving that inference to the caller.
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: use it to browse or search posts, including non-public statuses. There is no explicit statement of when to prefer wordpress_get_post, wordpress_list_pages, or wordpress_search-style alternatives, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wordpress_list_taxonomiesARead-onlyInspect
List the site's categories and/or tags with their ids and post counts.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Optional name filter | |
| per_page | No | How many per list (1-100, default 50) | |
| taxonomy | No | Which list (default both) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered. The description adds the return content (ids, post counts) but omits pagination behavior and the per_page/search scoping, leaving gaps beyond 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?
A single, front-loaded sentence with no filler; the verb and resource lead, and the useful return fields are stated concisely.
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 full schema coverage and safety annotations, the description covers purpose and return content adequately. Minor gaps (pagination limits, ordering, output shape absent since no output schema) keep it from a perfect score.
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 search, per_page, and taxonomy are already documented. The phrase 'categories and/or tags' loosely mirrors the taxonomy enum, but no additional meaning is added 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?
The description uses a specific verb (List) plus concrete resources (categories and/or tags) and states the returned fields (ids and post counts). It is clearly distinguishable from siblings like wordpress_list_posts or wordpress_set_terms.
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 – an agent can infer this is a discovery/read tool for terms, but the description never states when to use it versus wordpress_set_terms or the post-listing tools. No explicit exclusions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wordpress_moderate_commentADestructiveInspect
[WRITE — changes your live site] Approve, unapprove, mark as spam, trash or permanently delete a comment. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Comment id (from wordpress_list_comments) | |
| action | Yes | What to do | |
| confirm | No | Must be true. Confirm the change with the user first; this acts on their live site. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, and readOnlyHint=false, so the safety profile is partly covered. The description still adds meaningful value beyond them: that the effect lands on the user's live site and that 'delete' is permanent, plus the confirm gate. It doesn't say whether trash/spam are reversible or what the response contains, keeping it below 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?
Two tight sentences, with the highest-stakes information (this is a live-site write) front-loaded and the confirm prerequisite immediately after. Every clause carries distinct information with no repetition.
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, an agent might want to know the return shape, and reversibility of trash/spam is unstated. However, for a three-parameter moderation action with full schema coverage and rich annotations, the description covers the essential decision inputs: what it does, that it is destructive, that it hits a live site, and that confirmation is mandatory.
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 schema already documents id, action, and confirm, including the note to confirm with the user first. The description only restates the confirm requirement and adds no new syntax or format detail, so the baseline of 3 is 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?
Names a specific resource (comment) and enumerates the exact state transitions it performs (approve, unapprove, spam, trash, permanently delete), which maps one-to-one to the action enum. It is clearly distinguishable from the sibling wordpress_list_comments, which is a read operation.
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 leading '[WRITE — changes your live site]' banner and the 'Requires confirm:true' clause make the preconditions for calling it clear. It stops short of naming alternatives or exclusions (e.g., when to trash versus permanently delete, or why not wordpress_delete_post), so it is strong context without full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wordpress_publishADestructiveInspect
[WRITE — makes it public] Publish a draft post or page now, or schedule it by passing a future date. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Post or page id | |
| date | No | Optional ISO-8601 time; a future time schedules it (e.g. 2026-11-01T09:00:00Z). Omit to publish now. | |
| type | No | post (default) or page | |
| confirm | No | Must be true. Confirm the change with the user first; this acts on their live site. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the safety bar is lower. The description nonetheless adds the key consequence — this makes the item public on a live site — and the confirm gate the agent must satisfy before calling.
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 WRITE/makes-public warning front-loaded, followed immediately by the scheduling rule and the confirm gate. Nothing 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 4-parameter mutation tool with full schema coverage and rich annotations, the definition covers mode selection and the confirmation requirement. It could say a bit more about what happens to already-published posts, but nothing essential for correct invocation is 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 coverage is 100% and each parameter is already self-documented. The description restates the date-scheduling behavior and the confirm requirement but adds no syntax or format detail beyond the schema, so baseline 3 is 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?
States a specific verb (publish) and resource (a draft post or page), and notes the schedule variant. It is clearly distinguishable from siblings like wordpress_create_draft, wordpress_update_post and wordpress_delete_post.
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?
Explains the two modes — publish immediately or schedule by passing a future date — and flags the confirm:true precondition. It does not explicitly name alternatives such as wordpress_update_post for edits, but the usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wordpress_set_termsADestructiveInspect
[WRITE — changes your live site] Set or add categories and tags on a post, by name or id. Missing names are created unless create_missing is false. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Post id | |
| mode | No | replace (default) sets exactly these; add keeps the existing ones | |
| tags | No | Tag names or numeric ids | |
| confirm | No | Must be true. Confirm the change with the user first; this acts on their live site. | |
| categories | No | Category names or numeric ids, e.g. ["News", "12"] | |
| create_missing | No | Create categories/tags that don't exist yet (default true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, so the bar is lower, and the description still adds genuine value: it discloses that missing names are created as a side effect (unless create_missing is false) and that confirm:true is mandatory before touching the live site. It stops short of saying that replace mode discards existing terms, which is the most consequential side effect.
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 short sentences with zero filler, and the most important fact — this is a write to the live site — is front-loaded in a bracketed marker. The confirm requirement and creation side effect follow in dependency order.
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 six-parameter mutation tool with no output schema and full schema coverage, the description covers the risk profile, the confirmation gate, and the implicit creation side effect. The one gap is that replace-as-default (which can remove existing taxonomy assignments) is left to the schema rather than surfaced in prose.
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 the schema already documents all six parameters, including the mode enum and create_missing default. The description reinforces the name-or-id input format and the auto-creation behavior but adds no syntax or default detail 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 and resource ('Set or add categories and tags on a post') plus the accepted identifier forms ('by name or id'). It is clearly distinguishable from siblings like wordpress_update_post or wordpress_list_taxonomies, though it never names an alternative 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?
The prefix '[WRITE — changes your live site]' and the 'Requires confirm:true' clause tell the agent this is a live mutation needing user confirmation, which is real usage context. However, there is no guidance on when to prefer this over wordpress_update_post for content changes, or when replace vs add is appropriate (that is left entirely to the schema).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wordpress_site_infoARead-onlyInspect
Check the connected WordPress site: its name and address, which user the application password belongs to, their role, and what they are allowed to do (publish, upload, moderate).
| 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, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds real value by disclosing the exact return contents, including the permission set (publish, upload, moderate), which is the key signal an agent needs before calling write tools; there is no output schema, so this disclosure matters.
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?
One sentence, front-loaded with the action and resource, followed by the returned fields in a compact list. Nothing is padded or repeated.
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, no output schema, and annotations covering the safety profile, the description supplies everything else an agent needs: what the call returns and why the capability list is relevant.
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 the baseline of 4 applies. Nothing about invocation is left ambiguous.
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?
Specific verb ('Check') plus resource ('the connected WordPress site') and an explicit enumeration of the facts returned (name, address, user, role, permissions). No sibling does site-level introspection, so the tool is unambiguous even without naming an alternative.
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: checking the connection and the account's capabilities before attempting publish/upload/moderate. There is no explicit when-to-use, no precondition (e.g. 'call this first to confirm the connection is live'), and no named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wordpress_update_postADestructiveInspect
[WRITE — changes your live site] Edit an existing post or page's title, content, excerpt, slug or featured image. Does not change its status (use wordpress_publish). If the post is already published the edit is live immediately. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Post or page id | |
| slug | No | New URL slug | |
| type | No | post (default) or page | |
| title | No | New title | |
| format | No | How content is written. markdown (default; plain text is fine) is converted to WordPress blocks: paragraphs, # headings, - and 1. lists, > quotes, ``` code, --- separators and  images on their own line. Use blocks for raw Gutenberg block markup, or html for classic HTML (shown as a Classic block). | |
| confirm | No | Must be true. Confirm the change with the user first; this acts on their live site. | |
| content | No | New body — replaces the whole body (markdown by default) | |
| excerpt | No | New excerpt | |
| featured_media | No | Media id for the featured image (0 removes it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive/openWorld, and the description adds what they cannot: the edit hits the live site, published posts update instantly with no draft staging, and confirm:true must be true. The 'WRITE — changes your live site' lead sets consequence before any detail.
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 sentences, front-loaded with the risk label, then scope, then the exclusion, then the confirmation requirement. No sentence is filler.
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 9-param mutation with no output schema, it covers consequence, scope, sibling routing and the confirm gate. Minor gaps remain: nothing about failure on a bad id or what the response returns, though the schema carries all parameter detail.
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% and the schema already explains field replacement ('replaces the whole body'), format enums, and featured_media 0-removal. The description's list of editable fields largely restates the schema, so it sits at baseline without adding syntax or edge-case guidance.
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?
Specific verb (edit) plus resource (existing post or page) and an enumerated set of editable fields. It explicitly distinguishes itself from wordpress_publish by ruling out status changes, so an agent can route without opening the schema.
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?
States the exclusion ('Does not change its status (use wordpress_publish)') and names the sibling tool to use instead, plus the confirm:true prerequisite. The live-immediately condition for already-published posts is spelled out rather than left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wordpress_upload_mediaAInspect
[WRITE] Upload an image, video, PDF or other file to the WordPress media library from a public URL (for example an image you just generated). Returns the media id and its URL. Requires confirm:true.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public http(s) link to the file (max 25 MB) | |
| title | No | Optional media title | |
| caption | No | Optional caption | |
| confirm | No | Must be true. Confirm the change with the user first; this acts on their live site. | |
| post_id | No | Optional post id to attach the file to | |
| alt_text | No | Alt text for images (recommended) | |
| filename | No | Optional file name, e.g. hero.jpg |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real value beyond the annotations: a [WRITE] marker, the mandatory confirm:true gate, and the return shape (media id and URL). It does not discuss idempotency or failure behavior, but the safety profile is well covered by both annotations and text.
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 compact clauses with the [WRITE] tag and the core action front-loaded. Every sentence contributes scope, source, return value, or the confirmation gate.
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 7-parameter write tool with no output schema, the description still covers the write nature, the confirmation requirement, and the return value, while annotations and schema cover the rest. Only edge cases like size limits live purely in 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 100%, so parameters such as url, post_id, alt_text and filename are already fully documented. The description only echoes the confirm requirement, which is the correct baseline when the schema carries the load.
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 (upload) and resource (WordPress media library), plus the accepted source (a public URL) and file types. It is clearly distinguishable from siblings such as wordpress_create_draft or wordpress_publish, which also write content.
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?
'from a public URL (for example an image you just generated)' gives concrete context for when to reach for this tool, and 'Requires confirm:true' signals the prerequisite. No explicit exclusions or named alternatives are given, but the relevant workflow is clear.
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 tool update
- Changed
generate_video_veo3 fields changed- changed
Input schema / properties / aspect_ratio / descriptionPrevious value: -"Aspect ratio (optional): 16:9, 9:16, 1:1"New value: +"Aspect ratio (optional): 16:9 or 9:16" - changed
Input schema / properties / aspect_ratio / enumPrevious value: -[ - "16:9", - "9:16", - "1:1" -]New value: +[ + "16:9", + "9:16" +] - added
Input schema / properties / durationAdded value: +{ + "description": "Length (optional): 4s, 6s or 8s. Default 8s on Pro, 4s on Free.", + "enum": [ + "4s", + "6s", + "8s" + ], + "type": "string" +}
14 tool updates
- Changed
integration_guide1 field changed- changed
Input schema / properties / integration / descriptionPrevious value: -"Integration id from integration_status, e.g. email, telegram, meta_ads, typefully, instagram_insights, ga4, stripe, github"New value: +"Integration id from integration_status, e.g. email, telegram, meta_ads, typefully, instagram_insights, ga4, stripe, wordpress, github"
- Added
wordpress_create_draft - Added
wordpress_delete_post - Added
wordpress_get_post - Added
wordpress_list_comments - Added
wordpress_list_pages - Added
wordpress_list_posts - Added
wordpress_list_taxonomies - Added
wordpress_moderate_comment - Added
wordpress_publish - Added
wordpress_set_terms - Added
wordpress_site_info - Added
wordpress_update_post - Added
wordpress_upload_media
33 tool updates
- Added
github_comment - Added
github_create_branch_commit - Added
github_create_issue - Added
github_create_pr - Added
github_get_file - Added
github_get_issue - Added
github_get_pr - Added
github_list_issues - Added
github_list_prs - Added
github_list_tree - Added
github_merge_pr - Added
github_search - Added
google_ads_account_info - Added
google_ads_add_keywords - Added
google_ads_create_ad_group - Added
google_ads_create_campaign - Added
google_ads_create_rsa - Added
google_ads_get_ad - Added
google_ads_get_ad_group - Added
google_ads_get_campaign - Added
google_ads_insights - Added
google_ads_keyword_ideas - Added
google_ads_list_accounts - Added
google_ads_list_ad_groups - Added
google_ads_list_ads - Added
google_ads_list_campaigns - Added
google_ads_query - Added
google_ads_set_status - Added
google_ads_update_ad_group - Added
google_ads_update_budget - Added
google_ads_update_campaign - Added
google_ads_whoami - Changed
integration_guide1 field changed- changed
Input schema / properties / integration / descriptionPrevious value: -"Integration id from integration_status, e.g. email, telegram, meta_ads, typefully, instagram_insights, ga4, stripe"New value: +"Integration id from integration_status, e.g. email, telegram, meta_ads, typefully, instagram_insights, ga4, stripe, github"
10 tool updates
- Changed
integration_guide1 field changed- changed
Input schema / properties / integration / descriptionPrevious value: -"Integration id from integration_status, e.g. email, telegram, meta_ads, typefully, instagram_insights, ga4"New value: +"Integration id from integration_status, e.g. email, telegram, meta_ads, typefully, instagram_insights, ga4, stripe"
- Added
stripe_account_info - Added
stripe_api_details - Added
stripe_api_read - Added
stripe_api_search - Added
stripe_api_write - Added
stripe_churn_summary - Added
stripe_failed_payments - Added
stripe_mrr_summary - Added
stripe_search_docs
4 tool updates
- Added
connect_integration - Added
disconnect_integration - Added
integration_guide - Added
integration_status
6 tool updates
- Added
ga4_list_properties - Added
ga4_realtime_report - Added
ga4_run_report - Added
instagram_account_insights - Added
instagram_list_media - Added
instagram_media_insights
51 tool updates
- First observed
beeper_list_chats - First observed
beeper_read_chats - First observed
beeper_search - First observed
beeper_send_message - First observed
email_list_recent - First observed
email_read - First observed
email_search - First observed
email_send - First observed
generate_image_flux - First observed
generate_image_nano_banana - First observed
generate_image_seedream - First observed
generate_video_kling - First observed
generate_video_veo - First observed
meta_ads_account_info - First observed
meta_ads_boost_post - First observed
meta_ads_create_ad_set - First observed
meta_ads_create_campaign - First observed
meta_ads_create_image_ad - First observed
meta_ads_get_ad - First observed
meta_ads_get_ad_set - First observed
meta_ads_get_campaign - First observed
meta_ads_insights - First observed
meta_ads_list_accounts - First observed
meta_ads_list_ad_sets - First observed
meta_ads_list_ads - First observed
meta_ads_list_campaigns - First observed
meta_ads_list_page_posts - First observed
meta_ads_set_status - First observed
meta_ads_update_ad_set - First observed
meta_ads_update_campaign - First observed
meta_ads_whoami - First observed
search_airbnb - First observed
search_amazon - First observed
search_facebook - First observed
search_facebook_ads - First observed
search_flights - First observed
search_hotels - First observed
search_instagram - First observed
search_places - First observed
search_reddit - First observed
search_tiktok - First observed
search_twitter - First observed
telegram_get_bot_info - First observed
telegram_get_chat - First observed
telegram_read_recent_updates - First observed
telegram_send_message - First observed
twitter_replies - First observed
twitter_user - First observed
twitter_user_tweets - First observed
typefully_post - First observed
typefully_whoami
Publisher details
- Operator
- Studio Corsair
- Operator website
- https://lodestone.studiocorsair.com
- Vendor relationship
- Not applicable
- Documentation
- https://lodestone.studiocorsair.com/docs.html
- Trust center
- Not available
- Restrictions
- Free to start. Messaging, email, Meta Ads and publishing tools need your own account credentials; image and video generation is capped at 5 free runs per provider per month.
Related MCP Connectors
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Connect any AI agent to 1,000+ apps and 27,000+ actions through one remote MCP server (OAuth).
Hosted MCP server for marketing agencies: connect Google Ads, GA4, Search Console, Meta, LinkedIn and more to Claude or ChatGPT. Pull reports and make changes via OAuth login, no setup.
Hosted X (Twitter) MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA remote MCP server that exposes tools from many services (X, LinkedIn, GitHub, Gmail, Notion, etc.) through a single endpoint on Cloudflare Workers, enabling unified access to third-party APIs via natural language.MIT
- FlicenseNot gradedqualityNot gradedmaintenanceA stateless remote MCP server deployed on Cloudflare Workers without authentication, implementing the MCP 2026-07-28 specification and supporting custom tools. Can be connected to Cloudflare AI Playground and local MCP clients like Claude Desktop via mcp-remote proxy.-
- FlicenseNot gradedqualityDmaintenanceDeploys a stateless, authentication-free remote MCP server on Cloudflare Workers, enabling custom tool registration and seamless connection from clients like Cloudflare AI Playground or Claude Desktop via mcp-remote.-
- FlicenseNot gradedqualityBmaintenanceDeploy a stateless remote MCP server on Cloudflare Workers without authentication. It enables connecting to MCP clients like Cloudflare AI Playground and Claude Desktop for remote tool calls.-
Glama MCP Gateway
Add one secure layer between your agents and this server.