Aide
Server Details
AI customer service: set up an AI support agent, search knowledge, look up orders, answer customers.
- Status
- Healthy
- Uptime
- 98.2% over 21 days
- OAuth
- Requires browser extension
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- aideapp/aide-mcp
- GitHub Stars
- 0
- Server Listing
- Aide MCP
- ChatGPT
- –
- Claude
- Aide
TDQS
Scored across 69 tools
Several tools strongly overlap: search vs search_knowledge both search published knowledge, and fetch vs get_knowledge_document both read one document in full. The generic list_operations/run_*_operation set also overlaps with many specific tools (e.g., creating topics or macros), making misselection likely despite helpful descriptions.
Most tools follow a clear snake_case verb_noun pattern (list_agents, get_conversation, update_agent, run_create_operation). The only real deviations are the bare verbs 'fetch' and 'search' alongside 'search_knowledge', plus a few noun-first names like check_return_eligibility, which are still readable.
At 69 tools this is far beyond the 25+ threshold and the surface feels sprawling rather than curated. The broad Aide domain explains some breadth, but the generic run_*_operation tools duplicate specific tools, adding surface area without clear benefit.
Core flows are covered (onboarding, knowledge, conversations, orders, agents, procedures, billing), but there are notable gaps: no delete for knowledge documents/sources, procedures are read-only (no create/update), and members only have a list operation. The generic run_*_operation tools may fill some gaps, but the specific surface has holes.
Available Tools
69 toolsadd_knowledge_articleAdd a knowledge articleAInspect
Write knowledge Aide answers customers from (a policy, shipping times, an FAQ…) in the workspace's articles. An article (the default) is customer-facing: published at once to Aide Chat's public help section unless saved as a draft. A snippet is internal: never shown to customers, used by Aide as soon as it is saved, with no draft. Use a snippet for notes only Aide should read, an article for help customers should be able to read. Use it for what the website doesn't say, or what the user tells you directly. Returns the document with its id; once published it is used in answers.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | `article` (the default) for the help center, or `snippet` for an internal note customers never see. | |
| slug | No | Its address in the help center, lowercase words joined by `-`; from the title when omitted. Articles only. | |
| draft | No | True to save an article as a draft Aide does not answer from yet. Not for snippets. | |
| title | Yes | The article title, such as `Shipping times`. | |
| bodyHtml | No | The article, as simple HTML (`<p>`, `<ul>`, `<a>`…). | |
| sourceId | No | An articles source (list_knowledge_sources); the workspace's articles when omitted. | |
| collectionId | No | The help center collection to file it in (list_knowledge_collections). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly=false, destructive=false, openWorld=true; the description goes well beyond by disclosing that articles are published immediately to a public help section unless saved as a draft, that snippets are live as soon as saved with no draft option, and that content will subsequently be used in Aide answers. That is the material side effect for a write tool. It does not discuss permissions or whether a mistaken public publish can be undone, which keeps it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The publish-vs-draft behavior is front-loaded and useful, but the snippet/article contrast is stated three times in slightly different words ('A snippet is internal...', 'Use a snippet for notes...', and the schema's own enum description), which is redundant for the reader. It is readable but could shed a sentence without loss.
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 notes that it returns the document with its id, and there are no nested objects to explain. For a 7-parameter create tool with full schema coverage, the only real gap is the missing boundary against add_note and update_knowledge_article, which is a usage rather than a completeness defect.
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 kind, draft, slug, sourceId and collectionId is already documented in the schema at comparable depth. The description restates the kind default and the draft behavior without adding syntax, constraints, or cross-parameter rules the schema lacks. 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?
A concrete verb plus resource ('Write knowledge ... articles') followed by an explicit two-way taxonomy (article vs snippet) that no sibling tool name alone would reveal. An agent can immediately tell this creates customer-facing or internal knowledge content, distinct from update/publish/list knowledge tools.
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 selection criteria ('Use a snippet for notes only Aide should read, an article for help customers should be able to read') and a content criterion ('what the website doesn't say, or what the user tells you directly'). It stops short of naming alternatives — notably add_note, which overlaps heavily with the 'snippet' concept, and update_knowledge_article for editing existing content — leaving the agent to infer that boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_noteAdd an internal noteAInspect
Add an internal note to a conversation, as the signed-in teammate. Customers never see notes.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The note, in plain text. | |
| mentions | No | Teammate ids from list_members to notify. | |
| conversationId | Yes | The Aide conversation id (`cnv_…`), from find_conversation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare this is a non-read-only, non-destructive, closed-world write; the description adds genuinely new context beyond them — the note is attributed to the signed-in teammate and is never surfaced to customers. It stops short of describing mention/notification side effects.
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 resource, with the visibility constraint second. Nothing is redundant or 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 additive write with a fully documented schema and no output schema, the description covers author identity and audience visibility, which is what an agent most needs to call it correctly. Mention/notification behavior is left to 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 all three parameters are already documented in the schema, including mentions and the cnv_… id format. The description adds no parameter-level detail, which is acceptable at this coverage level.
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 (add an internal note to a conversation) and clarifies the actor is the signed-in teammate. The line 'Customers never see notes' implicitly distinguishes it from reply_to_conversation, though that sibling is never 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 implied rather than stated: an agent can infer this is for internal-only commentary and that customer-facing text belongs elsewhere, but no explicit when-to-use or alternative tool (e.g. reply_to_conversation) is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_support_emailAdd a support email addressAInspect
Set up Aide on the address customers email (such as support@example.com). For a Gmail or Google Workspace inbox, prefer connect_integration with gmail: no forwarding. Returns the mailbox with its id and inboundAddress for the user to forward the address to, then call send_forwarding_test. Gmail: Settings, See all settings, Forwarding and POP/IMAP, Add a forwarding address (Gmail emails Aide a confirmation code: get_support_email), then Forward a copy of incoming mail, Save Changes. Outlook or Microsoft 365: Settings, Mail, Forwarding, Enable forwarding, Save; a Microsoft 365 admin may have to allow external forwarding.
| Name | Required | Description | Default |
|---|---|---|---|
| displayName | No | The sender name on replies, such as `Acme Support`. | |
| supportAddress | Yes | The address customers write to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, openWorld=false, so the safety profile is covered. The description adds real behavioral context beyond that: it returns a mailbox with `id` and `inboundAddress`, requires the user to perform manual forwarding, and may be blocked by an external-forwarding admin policy. It stops short of stating authentication/authorization requirements, which keeps it below 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-loaded correctly: purpose, the Gmail alternative, and the return/follow-up behavior come before the provider instructions. The trailing Gmail/Outlook menu-path detail is verbose but each step is actionable and non-redundant, so it earns its length, though the block could be tightened.
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 contract (mailbox `id` and `inboundAddress`) and the required next step (send_forwarding_test), plus prerequisite workflows for both Gmail and Microsoft 365. Nothing an agent needs to invoke 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 only two parameters, so the schema already documents supportAddress and displayName fully. The description implies the address the customer emails but adds no syntax, format, or meaning beyond the schema — 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 concrete action and resource — setting up Aide on the address customers email at (e.g. support@example.com) — and explicitly distinguishes itself from the sibling connect_integration with a Gmail inbox. An agent can tell what this does and when it is not the right 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?
Gives explicit routing: prefer connect_integration with `gmail` for Gmail/Workspace instead of forwarding, otherwise use this tool. It also sequences the workflow (call send_forwarding_test afterwards, use get_support_email for the confirmation code), and includes provider-specific prerequisites including the Microsoft 365 admin caveat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_websiteLearn from a websiteAInspect
Teach Aide a website or help center: Aide crawls the pages at and under baseUrl in the background and answers customers from them once imported. Use kind website for the company's site and help_center for a Zendesk, Intercom or similar help center. Returns the knowledge source with its id and status; it imports in the background for a few minutes: say so and carry on, checking it later with get_knowledge_source. A site already added (saving the workspace's website adds it) is refused (duplicate): find its id in get_setup_status or list_knowledge_sources; retry it with reimport_knowledge_source.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | `website` or `help_center`. | |
| name | No | A name for the source; the site address when omitted. | |
| baseUrl | No | The address to start from, a full URL such as `https://example.com`. | |
| maxPages | No | At most this many pages are imported (1 to 500). | |
| excludePaths | No | Path prefixes not to import, such as `/blog`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare not read-only, open-world and non-destructive, so the description focuses on traits the annotations can't express: the import runs in the background for a few minutes, the return carries `id` and `status`, and a duplicate site is refused with a `duplicate` error. It stops short of covering the `articles` kind or failure modes other than duplicates, so it is strong rather than exhaustive.
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 the tool does, then the kind choice, then the async/return behavior, then duplicate handling – a logical order with no filler. It is a single dense block, though, and the duplicate-handling sentence is long enough that it takes a careful read to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no output schema, the description covers what matters most for correct invocation: background import timing, the `id`/`status` return, and duplicate recovery paths. The gap is that it neither explains the `articles` kind nor any non-duplicate failure, leaving a modest blind spot.
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, and the description earns a notch above it by giving the crawl scope ('pages at and under `baseUrl`') and the practical meaning of each `kind` value. It does not mention `maxPages` or `excludePaths`, which the schema already documents, and it never addresses the `articles` enum value that the schema itself also under-describes.
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: it teaches Aide a website by crawling pages at and under `baseUrl`, and answers customers from the imported content. It distinguishes the two relevant kinds (`website` vs `help_center`) and clearly separates itself from sibling readers like get_knowledge_source or reimport_knowledge_source.
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 `website` for the company site, `help_center` for Zendesk/Intercom, use get_knowledge_source to check status later, and on a `duplicate` refusal look up the id via get_setup_status or list_knowledge_sources then retry with reimport_knowledge_source. Alternatives and their triggering conditions are named, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approve_order_actionApprove an order actionADestructiveInspect
Approve an order action waiting for approval (status pending_approval), as the signed-in teammate: Aide runs it on the Shopify store now, so a refund is paid and a cancellation happens. Agents can approve only refunds within the workspace's approval limit. The result is the action with its new status. Calling it again does not run the action twice: once it is no longer waiting for approval, the call is refused with not_pending_approval.
| Name | Required | Description | Default |
|---|---|---|---|
| actionId | Yes | The order action id, from list_order_actions or list_conversation_order_actions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, yet the description still adds substantial context: the approval executes immediately on the live Shopify store, produces a paid refund or an active cancellation, is gated by a per-workspace approval limit, and is idempotent-safe with a documented refusal code. That is well beyond what the annotations 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?
Front-loads the verb and precondition, then consequences, limits, and idempotency in a compact run of sentences with no filler. The clause about the signed-in teammate and Aide running on the Shopify store is dense but carries real 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?
Covers the precondition, the real-world effect, the permission ceiling, the return value ('the action with its new status'), and the failure mode, which is everything needed for a one-parameter mutation tool with 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% for the single actionId parameter, and the schema already points to list_order_actions / list_conversation_order_actions as sources. The description adds no format, prefix, or provenance 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?
States a specific verb ('Approve') plus the resource and its required precondition state ('order action waiting for approval (status `pending_approval')'), and describes the downstream effect (refund paid, cancellation happens). It does not explicitly name the contrasting sibling reject_order_action, so differentiation is left partly to inference.
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 conditions: only actions in `pending_approval` can be approved, agents are limited to refunds within the workspace approval limit, and re-calling is refused with `not_pending_approval`. It stops short of directly telling the agent to use reject_order_action for the declining case, which is the one obvious alternative in this sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_orderCancel an orderADestructiveInspect
Cancel an order from a conversation on the Shopify store, as the signed-in teammate. The workspace's approval rules apply: a cancellation above their limits waits for an admin, and the result says whether it ran or waits. Repeated calls are not deduplicated: an order already cancelled is refused, but calling it again while a cancellation waits for approval adds another request.
| Name | Required | Description | Default |
|---|---|---|---|
| notify | No | Email the customer about the cancellation. | |
| reason | No | Why the order is cancelled. | |
| refund | No | Refund the amount paid to the original payment methods. | |
| orderId | Yes | The order id, from get_conversation_orders or lookup_orders. | |
| restock | No | Put the items back in stock. | |
| staffNote | No | A staff-facing note on the cancellation (at most 255 characters). | |
| conversationId | Yes | The Aide conversation id (`cnv_…`), from find_conversation. | |
| requestApproval | No | Ask a teammate to approve it instead of running it now. Without it, the workspace approval rules decide: an action above their limits waits for an admin. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds genuinely non-derivable behavior: the workspace approval rules that may park the call for an admin, the fact that the result reports whether it ran or waits, and the non-deduplication rule (a repeat call while awaiting approval queues another request, while an already-cancelled order is refused). This is exactly the operational context an agent needs before mutating state.
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, zero filler, and front-loaded: purpose first, then approval behavior, then idempotency semantics. The longer final sentence is dense but every clause carries distinct, actionable 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 an eight-parameter destructive mutation with no output schema, the description covers the highest-risk unknowns: approval gating, result meaning, and repeat-call behavior. Remaining parameter semantics (refund, restock, notify) are fully carried by the schema, so 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 all eight parameters — including the reason enum and the requestApproval flag — are already documented in the schema. The description only indirectly touches requestApproval via the approval-rules sentence and adds no syntax or format detail beyond it, 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 precise verb+resource (cancel an order) plus the scope and actor ('from a conversation', 'as the signed-in teammate'), which is well beyond a restatement of the name. It does not, however, explicitly distinguish itself from the sibling refund_order or approve_order_action, which is the only thing keeping 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 phrase 'from a conversation on the Shopify store' and the approval-path sentence, but the description never states when to choose this over refund_order, or when cancellation is inappropriate. No explicit alternatives or exclusions are named, leaving routing to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_planStart or change the planADestructiveInspect
Start a paid plan, or switch the plan or billing interval. With no paid plan yet, returns a Stripe Checkout url the user opens in their browser to enter a card, with a 7-day free trial the first time; nothing is charged until it ends. Otherwise upgrades apply now and charge the prorated difference, downgrades wait for the end of the paid period, and it returns the billing summary. Every plan has every feature; a paid plan adds AI replies a month, with overage past them.
| Name | Required | Description | Default |
|---|---|---|---|
| interval | No | Monthly or yearly; monthly for a new plan, else unchanged when omitted. | |
| planSlug | Yes | The plan: `starter`, `pro` or `scale`. | |
| returnTo | No | Only when starting a plan: the dashboard page Checkout returns to, such as `setup_zendesk` to continue setting up Zendesk. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only flag destructiveHint=true and openWorldHint=true; the description goes far beyond by disclosing that a card is entered via an external Stripe Checkout url, that the first payment is deferred by a 7-day trial, that upgrades charge a prorated difference immediately, and that downgrades defer to period end. That is exactly the financial consequence an agent needs before invoking a destructive billing 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?
Front-loaded with the primary action, then branch behaviors, then pricing context; no filler sentences. The final sentence on features and overage is slightly tangential to the call mechanics but still helps the agent explain the outcome to a user.
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 three-parameter destructive mutation with no output schema, the description covers return values (Checkout url vs. billing summary), charge timing, trial, and proration. It omits permission/ownership requirements and what happens on failure, which are the remaining gaps for an open-world billing 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% with enums on all three parameters, so the schema already documents interval, planSlug, and returnTo including omission semantics. The description adds business meaning to the plan choice (every plan has every feature; a paid plan adds monthly AI replies with overage) but adds nothing about parameter formats 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?
The description names a specific verb and resource ('Start a paid plan, or switch the plan or billing interval') and immediately distinguishes the two modes (first-time checkout vs. plan change). An agent can tell this apart from update_workspace or set_inbox_ai 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?
It clearly states the two conditions that select different behavior: no paid plan yet yields a Checkout url, while an existing plan applies the change immediately or at period end. It does not name sibling alternatives or exclusions, but the when-to-use context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_return_eligibilityCheck return eligibilityARead-onlyInspect
Check live with Shopify what on an order from a conversation can be returned: each line's returnable quantity, whether the return rules block it and the return reasons to choose from, the policy applied and whether a return is already open. permission: missing means the store has not granted Aide the returns permission. Changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | The order id, from get_conversation_orders or lookup_orders. | |
| conversationId | Yes | The Aide conversation id (`cnv_…`), from find_conversation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly and non-destructive, but the description adds real value: it discloses the live Shopify lookup, the `permission: missing` condition meaning the store withheld returns permission, and reinforces 'Changes nothing'. It stops short of rate-limit or auth details, but coverage is strong.
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 verb and the live-check framing, then a tight enumeration of returned facts. The single compound sentence is dense but every clause carries information; the trailing 'Changes nothing' is a useful safety note rather than 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?
With no output schema, the description must convey the return contents, and it does so thoroughly (per-line quantities, rule blocks, reasons, policy, open-return flag, permission-missing case). An agent has everything needed to call and interpret 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%, so both parameters are already documented with their origins (get_conversation_orders/lookup_orders and find_conversation). The description adds no parameter-level detail beyond what the schema 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 (check) and resource (return eligibility) and then details exactly what is returned per line: returnable quantity, rule blocks, return reasons, policy applied, and open-return status. This clearly distinguishes it from write siblings like refund_order and cancel_order.
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?
Provides clear context for when it applies: verifying what can be returned on an order originating from a conversation, live against Shopify. It does not name alternative siblings or exclusions, but the scope is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_integrationConnect an integrationAInspect
Start connecting Gmail, Shopify, Zendesk, Front or Gorgias. Returns a dashboard url that opens the sign-in for that service, and tellUser: give the user both, then check get_setup_status once they are done. Pass Zendesk subdomain, Gorgias account or Shopify shop when known; otherwise the page asks. set_up_helpdesk finishes a helpdesk (Zendesk, Front, Gorgias) once connected.
| Name | Required | Description | Default |
|---|---|---|---|
| shop | No | Shopify: the store address, `<store>.myshopify.com`. | |
| slug | Yes | The service to connect. | |
| account | No | Gorgias: the account of `<account>.gorgias.com`. | |
| subdomain | No | Zendesk: the subdomain of `<subdomain>.zendesk.com`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| tellUser | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, non-destructive, closed-world operation, and the description adds genuinely new behavior: the human completes sign-in out-of-band via a returned url and the agent must relay both url and tellUser. That hand-off pattern is not inferable from annotations or schema. It stops short of saying what happens to an existing connection or how long the pending state lasts.
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 action and the target services, then the return contract, then conditional parameter rules. Dense but each clause carries information; it is slightly crammed into three long sentences but wastes nothing.
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?
An output schema exists, yet the description still supplies the agent-facing next action (show url + tellUser, then poll get_setup_status), which is the piece the schema cannot convey. With 4 params at full coverage and annotations present, nothing needed 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 coverage is 100%, so the baseline is 3; the description earns above that by mapping each optional field to its service (Zendesk→subdomain, Gorgias→account, Shopify→shop) and clarifying that omission is safe because the dashboard page will prompt. That conditional-omission semantics is real added meaning.
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 and enumerated resources ('Start connecting Gmail, Shopify, Zendesk, Front or Gorgias'), and the return-value sentence pins down what the call produces (a dashboard url). An agent can separate this from list_integrations or set_up_helpdesk 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?
Gives clear follow-up routing: check get_setup_status once the user finishes, and set_up_helpdesk completes a helpdesk afterward. It also says to pass subdomain/account/shop 'when known; otherwise the page asks.' What's missing is any exclusion — e.g., what to do if the service is already connected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
continue_agent_testContinue an agent testAInspect
Send a follow-up message in a preview conversation test_agent started, and wait (up to about 25 seconds) for the agent's answer. With pending: true, read the answer with list_messages after a few seconds; don't ask again. When stillLearning is set, Aide is still reading the website and found nothing yet: tell the user, ask them meanwhile for the facts customers ask most and save each with add_knowledge_article, and test again after the minutes it gives. When sources is empty otherwise, the agent found nothing to answer from: add it with add_knowledge_article and test again.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The customer's message. | |
| agentId | Yes | The agent id, from list_agents. | |
| conversationId | Yes | The preview conversation's id, from test_agent. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reply | Yes | |
| pending | Yes | |
| sources | Yes | |
| handedOver | Yes | |
| stillLearning | Yes | |
| conversationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state this is non-destructive and not open-world; the description adds the valuable non-structured detail that the call blocks for up to ~25 seconds and can return degraded states (stillLearning, empty sources) with prescribed remediation. It does not say whether the sent message persists in the preview conversation or how failures surface, 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?
The core action is front-loaded, but the remainder is a dense run-on chain of branches with awkward phrasing ('When `sources` is empty otherwise') and undefined terms (stillLearning, sources, 'the minutes it gives') that make it harder to parse than it needs to be.
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?
An output schema exists, so return values needn't be enumerated, and the description instead explains how to interpret key output states and what to do next. For a 3-parameter, non-destructive call with full annotation coverage, nothing critical is missing, though the undefined 'pending'/'sources' references leave slight ambiguity.
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 already documents all three parameters (text as the customer's message, agentId from list_agents, conversationId from test_agent). The description adds no additional meaning about parameter formats or constraints 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 ('send a follow-up message in a preview conversation test_agent started') and explicitly anchors itself to the sibling test_agent, so an agent can tell this is the second-turn continuation rather than a new test. The 25-second wait behavior is stated up front.
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 conditional routing: use list_messages (don't ask again) for a pending answer, use add_knowledge_article then retest when stillLearning or when sources is empty. The only friction is the reference to 'pending: true', which is not an input parameter in the schema and could be misread as something to pass; otherwise the when/when-not guidance is unusually complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_agentDeploy an AI agentADestructiveInspect
Put an AI agent live: from now on it answers real customers on the channels it is assigned to (the chat widget, and the inboxes set with set_inbox_ai). Confirm with the user before calling it. Returns the agent with status deployed; pause_agent stops it.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | The agent id, from list_agents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, but the description adds meaningful context: deployment makes the agent respond to real customers, mentions assigned channels and inboxes, and requires user confirmation. It also discloses the returned status `deployed`. This is strong behavioral context beyond the annotations, though it does not discuss edge cases like deploying an already-live agent.
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 core action, then adds the live-customer impact, confirmation requirement, return status, and stopping alternative in a compact two-sentence form. Every clause carries useful 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 deployment tool, the description covers the action, effect, confirmation requirement, return value, and inverse operation. Annotations already cover the risk profile, so no important behavioral detail 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 single `agentId` parameter has 100% schema description coverage and is documented as coming from list_agents. The description does not add any parameter-specific details beyond the schema, which is acceptable at this coverage level.
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: putting an AI agent live, with the concrete effect that it answers real customers on assigned channels. It also names the inverse action, pause_agent, which clearly distinguishes it from siblings such as update_agent, test_agent, and pause_agent.
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 a clear usage condition and an explicit alternative for the reverse action: use this to go live, use pause_agent to stop it. It also adds a required confirmation step before calling. It does not mention prerequisites like existing deployment state, but the context is otherwise clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dismiss_knowledge_gapDismiss a knowledge gapAInspect
Dismiss an open knowledge gap whose fix the user doesn't want, with the reason, so Aide stops proposing it. Returns the gap.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | The user's words on why, when they gave any. | |
| gapId | Yes | The knowledge gap id, from list_knowledge_gaps. | |
| reason | No | Why it was dismissed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-destructive mutation, and the description adds the consequential behavioral fact: dismissal suppresses future proposals for this gap and the updated gap is returned. It doesn't say whether dismissal is reversible or how to undo it, which is the main remaining gap.
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, with the effect and the return value front-loaded. Nothing is repeated from the title or schema.
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 small 3-parameter mutation with full schema coverage, the description supplies the trigger and the post-state effect, and even notes the return value despite no output schema. Only error/precondition handling (already dismissed, unknown id) 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% with a documented enum and a pointer to list_knowledge_gaps for gapId, so the schema carries the detail. The description only reinforces that a reason accompanies the dismissal; it adds no format or constraint 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 (dismiss) on a specific resource (open knowledge gap) plus the outcome ('Aide stops proposing it') and return value. The condition 'whose fix the user doesn't want' implicitly separates it from mark_knowledge_gap_done, though that sibling is never named.
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 a clear trigger: use when the gap is open and the user has declined the fix. It stops short of explicitly contrasting with mark_knowledge_gap_done or stating what to do if the gap is already closed, so the boundary with the closest sibling must still be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchFetch a knowledge documentARead-onlyInspect
Read one knowledge document in full by the id search returned: its title, full text, url and metadata (source, collection, kind, status, last update).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The document id, from search. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| text | Yes | |
| title | Yes | |
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, and destructiveHint=false, covering the safety profile. The description adds that the full text is returned (not a snippet) and lists metadata fields, but does not disclose error behavior, permissions, or rate limits beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the core action. The enumeration of return fields is somewhat redundant given the output schema, but the sentence remains efficient overall.
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 operation with rich annotations, full schema coverage, and an output schema, the description covers the essential action and prerequisite. The only minor gap is not clarifying its relationship to the similar sibling get_knowledge_document.
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 single id parameter is fully documented in the schema. The description's phrase 'by the id search returned' mirrors the schema description without adding new syntax or format details, 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 (Read) and resource (knowledge document) with scope (one, in full, by id). This distinguishes it from list and search siblings, but it does not explicitly differentiate from the similar sibling get_knowledge_document.
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 usage when an id has been returned from search, but provides no explicit when-to-use guidance, no exclusions, and no named alternative tool for browsing or listing documents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_conversationFind a conversationARead-onlyInspect
Find conversations by a helpdesk's own id (externalId), keywords (q) or filters, which combine. Each has its id, subject, status, priority, channel, requester, assignee, team, a preview and timestamps. Next page: metadata.nextCursor as cursor, same filters and sort.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Matches the subject, the requester's name or email, or an Aide or helpdesk id. | |
| sort | No | `newest` activity first by default. | |
| team | No | Team ids (list_members) or `none`. | |
| view | No | An inbox view: `needs_a_person`, `mine`, `unassigned`, `waiting`, `on_hold`, `closed`, `handled_by_aide`, `resolved_by_aide`, `handoffs`, `team:<team id>` or a saved view id. | |
| topic | No | Topic ids (list_topics), `any` or `none`. | |
| cursor | No | The previous page's `metadata.nextCursor`. | |
| status | No | Any of these statuses. | |
| channel | No | Channels such as `zendesk`, `front`, `gorgias`, `gmail` or `chat`. | |
| perPage | No | At most 100. | |
| assignee | No | Teammate ids (list_members), `me`, `aide` (Aide is answering), `none` or `mentioned` (a note mentions me). | |
| priority | No | Any of these priorities. | |
| scenario | No | Ids of scenarios that ran on it. | |
| externalId | No | A Zendesk ticket id, a Front `cnv_…` or another helpdesk id, exact match. | |
| resolvedBy | No | Resolved by Aide or by a teammate (`person`). | |
| createdAfter | No | Created at or after this time. | |
| handoffState | No | Any of these handoff states. | |
| createdBefore | No | Created before this time. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds the result shape (id, subject, status, priority, channel, requester, assignee, team, preview, timestamps) and the pagination contract, useful for a tool with 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?
Two sentences, no filler: the targeting modes come first, then result contents, then pagination. Every clause carries information an agent 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 17-parameter, no-output-schema tool it covers purpose, return fields and pagination adequately. Minor gaps remain: default behavior with no filters, and default sort/perPage are left to 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 coverage is 100%, so the baseline is 3, but the description adds genuine meaning by stating that externalId, q and filters combine (conjunctive semantics not expressed in the schema) and by explaining that the next page reuses 'same filters and sort'.
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 plus the three ways to target a conversation (externalId, q, filters) and enumerates the returned fields. It does not explicitly distinguish itself from the sibling get_conversation or search, 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 implied rather than stated: 'filters, which combine' tells the agent this is the list/filter entry point, but there is no explicit when-to-use-this-vs-get_conversation or vs search, and no warning about unfiltered calls returning a broad result set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentGet an AI agentARead-onlyInspect
Read one AI agent in full: its name, status, instructions, greeting, signature, contact information and the knowledge it uses. Read it before update_agent to change the instructions rather than replace them.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | The agent id, from list_agents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, and destructiveHint=false, so safety is covered. The description adds useful context that it returns the full agent representation, including instructions, greeting, signature, contact information, and used knowledge.
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 core action and then the update_agent usage note. Every clause adds 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 simple one-parameter read tool, the description covers purpose, returned fields, and the key relationship to update_agent. With no output schema, listing the return contents makes the definition complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains that agentId comes from list_agents. The description adds no additional parameter meaning, 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: read one AI agent in full. It enumerates the returned fields and contrasts with list_agents by specifying a single agent, so an agent can distinguish it from 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?
Explicitly says to read it before update_agent when changing instructions rather than replacing them. This names the relevant alternative and gives the condition that selects this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_chat_pageGet the Aide chat pageARead-onlyInspect
Get the workspace's Aide chat page: a public link (url) where anyone chats with Aide, with nothing to install, and tellUser. Offer it right after test_agent: give the user the link and tellUser, so they send it a message and see Aide answer live, then share it with customers (a bio, an email signature, order emails, a help center). answering false: the agent isn't deployed yet; ask for the OK and call deploy_agent in the same turn. installSnippet is the same chat for their own website, second: the script tag to paste before </body> on every page, or in the site builder's custom code setting.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| tellUser | Yes | |
| widgetId | Yes | |
| answering | Yes | |
| installSnippet | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered without description help. The description adds genuine behavioral context beyond that: a state-dependent branch (`answering` false = agent not deployed) with a required next action. It doesn't discuss freshness or whether the link is stable/revocable, which keeps it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the body is a long, clause-chained sentence that mixes return-value documentation (`url`, `tellUser`, `answering`, `installSnippet`) with sales-style instructions ('a bio, an email signature, order emails, a help center'). Since an output schema exists, the field-by-field enumeration is partly redundant, and the installSnippet explanation arrives after the workflow advice rather than alongside its counterpart.
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 an output schema present and zero parameters, the remaining burden is workflow context, and the description supplies it: when to offer the link, the deploy prerequisite branch, and what the second artifact is for. An agent could act on this without consulting a sibling or guessing at preconditions.
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 and the baseline of 4 applies. The description instead spends its words on output fields, which is not a parameter concern.
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 concrete verb and resource ('Get the workspace's Aide chat page') and immediately defines it as 'a public link (`url`) where anyone chats with Aide.' It also separates that from the `installSnippet` artifact, so the agent can distinguish the two outputs. It stops short of a clean one-line definition because the purpose statement is intertwined with workflow prescriptions.
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 sequencing: 'Offer it right after test_agent,' then handle `answering` false by asking for the OK and calling deploy_agent in the same turn. It also names the follow-up (installSnippet) as 'second,' so both ordering and the exclusion of the website path from the first step are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_connectionGet this connectionARead-onlyInspect
Who this connection is: the workspace, the app and signed-in teammate, their role, whether it may only read or also make changes, and what needs the user's attention (a connection to sign in to again, a support email to finish, a paused agent or AI replies). Call it when a call is refused or before explaining what you can do.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, destructiveHint=false and closed-world scope, so the description doesn't need to re-argue safety. It adds real value beyond them by disclosing that the response carries permission state ('whether it may only read or also make changes') and a diagnostic/recovery signal for refused calls. It stops short of describing error shapes or the format of the attention items.
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?
Content is front-loaded with the identity/context payload and closes with the call trigger, so an agent gets the essential framing immediately. The opening sentence is long and clause-stacked, which slightly hurts scanability, but every clause carries distinct 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?
There is no output schema, so the description bears the burden of explaining return content — and it enumerates the payload (workspace, app, teammate, role, permissions, attention items) thoroughly. Combined with the usage triggers, an agent has enough to call it and interpret the result, though return-shape detail (flat vs nested, list vs scalar) 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?
The tool takes zero parameters, and the description correctly spends no space on input semantics. Baseline for a no-parameter tool is 4, and nothing here suggests otherwise.
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 is explicit about what the tool returns: the workspace, app, signed-in teammate, that teammate's role, read-vs-write capability, and outstanding attention items. That's a concrete enumeration an agent can act on. It doesn't differentiate from nearby siblings like get_setup_status or get_customer_context, 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?
Two explicit triggers are given: 'when a call is refused' and 'before explaining what you can do.' That's clear contextual guidance rather than implied usage. No when-not conditions or named alternatives are provided, 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.
get_conversationGet a conversationARead-onlyInspect
Read one conversation: its subject, status, priority, customer, assignee, team, topics, channel, handoff state and custom fields. Read its messages with list_messages.
| Name | Required | Description | Default |
|---|---|---|---|
| conversationId | Yes | The Aide conversation id (`cnv_…`), from find_conversation. |
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 usefully expands on what is actually returned (handoff state, custom fields), but says nothing about permissions, rate limits, or behavior for a missing/invalid id. Adding field coverage beyond the annotations earns a solid 3.
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 front-loads the core action and returned fields, the second is a single routing pointer. No filler or restatement 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 field enumeration does real work in telling the agent what comes back, and the pointer to list_messages correctly prevents the agent from expecting message bodies. It could be slightly more complete about absent/invalid id behavior, but for a simple single-id read it is nearly 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?
With a single parameter at 100% schema description coverage, the schema already documents the id and its `cnv_…` format and origin. The description adds no syntax or sourcing 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?
States a specific verb and resource ('Read one conversation') and then enumerates the exact fields returned (subject, status, priority, customer, assignee, team, topics, channel, handoff state, custom fields). This distinguishes it cleanly from find_conversation (search) and list_messages (message retrieval), both of which appear in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description routes the agent to list_messages for message content, which is a genuine when-to-use-elsewhere signal, and the schema notes the id comes from find_conversation. It stops short of stating exclusions (e.g., that this does not fetch orders or messages), so it is clear context without full alternative coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversation_ordersGet a conversation's ordersARead-onlyInspect
Read the store customer matched to a conversation (how they matched and whether the match is verified) and their Shopify orders, newest first, each with its id, number, status, totals, what is still refundable, items, fulfillments, tracking and shipping address. For chats, also the product or collection the shopper is viewing and their cart. Use an order's id with refund_order, cancel_order and check_return_eligibility.
| Name | Required | Description | Default |
|---|---|---|---|
| conversationId | Yes | The Aide conversation id (`cnv_…`), from find_conversation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description adds real behavioral detail beyond them — newest-first ordering, match method and verification status, and the chat-only extras (viewed product/collection, cart). It omits any pagination or result-count limits, which keeps 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?
Front-loaded with the core action, then a dense but purposeful enumeration of returned fields, closing with a routing hint. The long field list is informative rather than padding, though it could be trimmed slightly.
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 thoroughly: order identity, status, totals, refundable amount, items, fulfillments, tracking, shipping address, plus chat-specific context. 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% and the single conversationId parameter is fully documented in the schema, so the baseline of 3 applies. The description adds no format, prefix, or sourcing detail 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 ('Read the store customer matched to a conversation ... and their Shopify orders') and pins the scope to a conversation, which separates it from lookup_orders and list_conversation_order_actions 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?
It gives concrete downstream routing ('Use an order's id with refund_order, cancel_order and check_return_eligibility'), which tells the agent what this tool feeds into. It does not state when to prefer it over lookup_orders or get_customer_context, so it stops short of explicit alternatives/exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customer_contextGet a conversation's CRM contextARead-onlyInspect
Read the CRM records (Salesforce contacts, accounts or leads) matched to a conversation's customer, with the fields the workspace chose to show and how they matched. Empty when no CRM is connected or nothing matched.
| Name | Required | Description | Default |
|---|---|---|---|
| conversationId | Yes | The Aide conversation id (`cnv_…`), from find_conversation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description goes beyond that by disclosing the empty-result behavior ('Empty when no CRM is connected or nothing matched') and the shape of what is returned (workspace-chosen fields plus match rationale), which are genuinely useful traits not in 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 clauses with zero filler; the resource and scope are front-loaded before the empty-state caveat. Every phrase 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, yet the description still conveys what comes back (matched CRM records, displayed fields, match reasoning) and the empty case. Nothing essential to calling 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?
With a single parameter at 100% schema coverage, the schema already documents conversationId fully (including its `cnv_…` format and provenance). 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 ('Read') and a precise resource ('CRM records (Salesforce contacts, accounts or leads) matched to a conversation's customer'). No sibling tool provides CRM context, so an agent can distinguish this immediately from get_conversation or get_conversation_orders.
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 its use case (fetching CRM context for a conversation) but never states when to reach for it versus alternatives or any prerequisites. There is no explicit when/when-not guidance, leaving the trigger to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_draftGet the reply draftARead-onlyInspect
Read Aide's current reply draft for a conversation (the Copilot draft teammates see), with its sources. Answers data: null when the conversation has no draft.
| Name | Required | Description | Default |
|---|---|---|---|
| conversationId | Yes | The Aide conversation id (`cnv_…`), from find_conversation. |
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=false), so the bar is lower. The description adds genuinely useful behavior not in the annotations: the draft is sourced 'with its sources' and the tool returns `data: null` when no draft exists, which tells the agent how to handle the empty case.
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 purpose and followed by the null-return edge case. No filler or restated schema 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 one-parameter read tool there is no output schema, and the description compensates with the null-result behavior and a hint about included sources. What the draft object looks like is still unspecified, but an agent has enough to call and interpret 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% for the single conversationId parameter, and the schema even documents the `cnv_…` format and points at find_conversation. 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?
States a specific verb+resource ('Read Aide's current reply draft') and disambiguates the resource by explaining what a draft is ('the Copilot draft teammates see'), which separates it from list_messages/get_conversation. It stops short of naming a sibling tool to route against, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to call this versus get_conversation, list_messages, or reply_to_conversation, nor any prerequisite such as obtaining conversationId first. The only implicit signal is the word 'current', which is not real usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_knowledge_documentGet a knowledge documentARead-onlyInspect
Read one knowledge document in full: its title, link, source, collection, status and body.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | Yes | The knowledge document id, from search_knowledge. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful return-content detail (it returns the full body plus title, link, source, collection, status), which matters because there is no output schema to convey that.
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 scope, with every listed field earning its place by compensating for the missing output schema. 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 simple one-parameter read tool whose annotations cover the safety profile, the description is nearly sufficient: it tells the agent what it gets back despite there being no output schema. Minor gaps remain around error behavior for an unknown id, 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?
There is a single required parameter with 100% schema description coverage, so the schema already documents documentId. The description adds nothing about the parameter, which is the expected baseline 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 verb and resource ('Read one knowledge document in full'), and by enumerating returned fields (title, link, source, collection, status, body) it makes clear this is full-document retrieval rather than the list/search siblings. It does not name list_knowledge_documents or search_knowledge explicitly, so the 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?
The description contains no when-to-use, when-not-to-use, or alternative-tool guidance. The only routing signal is indirect, via the schema noting the id comes 'from search_knowledge', which is not part of the description text itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_knowledge_sourceGet a knowledge sourceARead-onlyInspect
Read one knowledge source, such as a website add_website started: its status, import progress, documentCount and the error when an import failed. Use it to tell the user when Aide has finished learning a site.
| Name | Required | Description | Default |
|---|---|---|---|
| sourceId | Yes | The knowledge source id, from add_website, list_knowledge_sources or get_setup_status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive and closed-world, so the safety profile is covered. The description adds valuable behavioral context by disclosing the actual return fields and that an error is surfaced when an import failed, which is meaningful for a tool with 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?
Two tight sentences that front-load the purpose before the usage hint; nothing is wasteful. The first sentence's phrasing ('such as a website add_website started') is slightly awkward but does not harm comprehension.
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 must convey what comes back, and it does (status, import progress, documentCount, failure error). For a single-param, read-only tool this leaves the agent nothing essential 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 sourceId parameter and its origin (add_website, list_knowledge_sources, get_setup_status) are already fully documented. The description references the source loosely but adds no syntax 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 and singular resource ('Read one knowledge source'), and the enumeration of returned fields (status, import progress, documentCount, error) makes the scope unmistakable. It is clearly distinguishable from the plural sibling list_knowledge_sources and from get_knowledge_document 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?
Gives a concrete usage scenario: 'Use it to tell the user when Aide has finished learning a site.' This is clear context for invoking it. It does not name alternatives or exclusions (e.g. list_knowledge_sources for enumeration), so it falls short of the when/when-not standard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_procedureGet a procedureARead-onlyInspect
Read one procedure in full: its When to use and examples, where it runs (channels, inboxIds, mediums), Only if conditions, steps, finish, what it does when the customer changes subject, status, and draft (the edits not live yet, in the same shape, or null). Read it before changing it.
| Name | Required | Description | Default |
|---|---|---|---|
| procedureId | Yes | The procedure id, from list_procedures. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, closed-world, so the bar is low; the description still adds real value by disclosing the response shape (no output schema exists) and clarifying that `draft` holds not-yet-live edits in the same shape or null. It stops short of stating behavior for a missing/invalid procedureId.
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, front-loaded with the action and colon-introduced field list, followed by one short imperative. The enumeration is long but every item is a distinct returned field, so little could be cut without losing information an agent needs absent an output schema.
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 annotations and no output schema, the description successfully substitutes for a return-value spec by naming the major fields including the conditional `draft`. Minor omissions — error/not-found behavior and the read-before-write rationale — keep it below top marks.
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 a single parameter at 100% schema coverage and a schema description that already tells the agent to source the id from list_procedures, the schema does the work. The description adds no format, validation, or sourcing detail beyond it, 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 ('Read one procedure in full') and then enumerates exactly what is returned — When to use, examples, channels/inboxIds/mediums, steps, finish, subject-change behavior, status, draft. This clearly separates it from list_procedures (plural) and get_draft, though the description never names those siblings 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?
The closing line 'Read it before changing it' gives a concrete workflow rule that implies when to call it, and 'one procedure' implies list-then-get. There is no explicit when-not guidance or named alternative, so 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.
get_productGet a productARead-onlyInspect
Read one synced Shopify product in full: its description, variants with prices and stock, images, collections, tags, metafields and storefront and admin links.
| Name | Required | Description | Default |
|---|---|---|---|
| productId | Yes | The product id, from list_products. |
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 safeness is covered. The description adds real context the annotations do not: the payload is a 'synced' mirror (implying freshness/consistency caveats versus live Shopify data) and the exact breadth of the returned record. It stops short of noting not-found or stale-sync 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?
One sentence, front-loaded with verb and object, then the enumeration of returned fields. No filler, no repetition of the title, and every clause carries 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 correctly carries the burden of describing the return payload and does so thoroughly. The only gap is failure modes (unknown/deleted product id) and any pagination of variants, which an agent might want before calling.
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 productId parameter, and the schema itself documents where the id comes from ('from list_products'). 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 ('Read one') and resource ('synced Shopify product') and immediately enumerates what 'in full' means: description, variants with prices and stock, images, collections, tags, metafields, links. The word 'one' plus the enumeration cleanly distinguishes it from the list_products sibling without needing to name it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, no when-not-to-use, and no alternative tool named. The scope of the returned payload implies the tool is for detail views rather than browsing, but the agent must infer that list_products is the entry point; the description never says so (only the schema does, via 'from list_products').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_setup_statusGet setup progressARead-onlyInspect
Check how far the workspace is from Aide answering its customers: whether it is live (Aide has answered or drafted for a real customer), the nextStep, and each step (profile, knowledge, agent_tested, channel, agent_deployed, live) with its status (done, current, todo, skipped), a detail saying what to do (for an unfinished profile, the questions still to ask), the tool that does it and a dashboard url, for when the user prefers the dashboard; prefer the tool. Call it first when the workspace is new or not live, then do the steps in order, past any that waits on an import or the user, calling it again after each.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=false, destructiveHint=false), and the description adds real behavioral context by disclosing the return payload shape and the iterate-and-recheck cadence. It stops short of stating edge cases such as what 'skipped' means operationally or whether nextStep can be null, which keeps it off 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?
Effectively one long sentence, but it is front-loaded with the core purpose and every clause adds non-redundant information (state values, detail semantics, tool vs url, call ordering). Dense rather than wasteful, though it could be broken into two sentences for readability.
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 full burden of describing the result and does so field-by-field, while also covering sequencing and the dashboard alternative. An agent has everything needed to call this first and act on 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?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate on the input side, and it correctly does not invent parameter 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 precise verb and resource ('Check how far the workspace is from Aide answering its customers') and enumerates the exact states returned (live, nextStep, per-step status/detail/tool/url). This is unmistakably the onboarding-progress reader and cannot be confused with siblings like get_agent or analytics_summary.
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 says when to call it ('first when the workspace is new or not live'), how to proceed ('do the steps in order, past any that waits on an import or the user'), and to re-call 'after each' step. It also resolves the dashboard-vs-tool choice ('prefer the tool'), giving a real alternative with a selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_support_emailGet a support email addressARead-onlyInspect
Read one support mailbox: its supportAddress, inboundAddress and forwarding status, with the confirmation code Gmail sent Aide when forwarding was added (forwarding.confirmationCode) for the user to enter in Gmail's settings.
| Name | Required | Description | Default |
|---|---|---|---|
| mailboxId | Yes | The mailbox id, from add_support_email or get_setup_status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, lowering the bar, and the description goes beyond that by disclosing a concrete workflow detail: the forwarding confirmation code exists specifically to be entered into Gmail's settings. What it omits is failure modes (e.g., behavior when forwarding is not yet set up or the mailbox is missing).
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 opens with the verb+resource and then enumerates outputs. The trailing parenthetical about Gmail's settings is worth its length, though the sentence is dense enough that it borders on overloaded.
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 carries the return-value burden and does enumerate the key fields, including the nested forwarding.confirmationCode. It lacks the mailbox-not-found/failure semantics, but for a single-param read tool it is close to 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?
With schema description coverage at 100% and only one parameter, the schema already documents mailboxId and even its source (add_support_email or get_setup_status). The description adds no syntax or format detail about the id, 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 ('Read one support mailbox') and enumerates the returned fields (supportAddress, inboundAddress, forwarding status, forwarding.confirmationCode). It does not explicitly contrast itself with the sibling add_support_email or get_setup_status, but the read-one contract 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: it is a getter for a single mailbox. The description does not state when to reach for this versus add_support_email (write) or get_setup_status, nor does it name exclusions. Adequate but leaves the routing 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.
get_support_email_settingsGet a mailbox's reply settingsARead-onlyInspect
Read how Aide answers a support mailbox: rollout (who gets sent replies) and quiet period, with their sources.
| Name | Required | Description | Default |
|---|---|---|---|
| mailboxId | Yes | The mailbox id, from add_support_email or get_setup_status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuine context beyond them by disclosing what the read returns — rollout (who receives replies), quiet period, and their `sources` — useful 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 with no filler, and the returned concepts are named immediately. Slightly compressed jargon ('rollout', 'sources') is used without explanation, but 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 single-parameter read-only getter with no output schema, the description covers the essentials by naming the settings returned. A note on whether an unconfigured mailbox returns defaults or errors would close the 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 coverage is 100% and the mailboxId property already explains where the id comes from (add_support_email or get_setup_status). The description adds no further semantic detail about the parameter, 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 pair: read the reply configuration ('how Aide answers a support mailbox'), naming rollout and quiet period. It is distinguishable from get_support_email in practice, but the description never explicitly contrasts with that sibling or with update_support_email_settings, so the separation relies partly on the tool name.
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: it is the read counterpart to update_support_email_settings, which the agent must infer from the near-identical name. There is no explicit 'use this before updating' or 'use get_support_email instead for X' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_agent_channelsList an agent's channelsARead-onlyInspect
List the inboxes an AI agent can answer across every channel (the chat widget, support mailboxes, connected helpdesk and Gmail inboxes), each with its id, name, medium, whether this agent is assigned, whether Aide can answer it (answerable) and whether replies are sent or drafted (replies). Use an id with set_inbox_ai.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1 to 500; `metadata.hasMore` says whether another page follows. | |
| agentId | Yes | The agent id, from list_agents. | |
| perPage | No | Inboxes per page (at most 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, closed-world, so the safety profile needs no restating. The description goes beyond them by explaining what each returned flag means operationally ('assigned' = this agent, 'answerable' = Aide can answer, 'replies' = sent vs drafted), which is real behavioral context absent from the annotations. It omits any mention of pagination behavior, though the schema covers that.
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 starting with the verb and resource, followed by the result shape, with the follow-up action last. The parenthetical channel enumeration is long but earns its place by defining an ambiguous term; no filler sentences.
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 fields, and the readOnly annotations plus fully documented schema cover the rest. An agent has enough to call it and interpret the response; only pagination and ordering/empty-result behavior are 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 coverage is 100% and every parameter (page, agentId, perPage) is documented in the schema, including where agentId comes from. The description adds only that returned ids feed set_inbox_ai, which is workflow rather than parameter semantics. 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 the inboxes an AI agent can answer') and immediately disambiguates what a 'channel' is by enumerating the concrete sources (chat widget, support mailboxes, helpdesk, Gmail inboxes). This distinguishes it from sibling listers like list_agents or list_integrations 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?
The closing line 'Use an id with set_inbox_ai' gives a concrete next-step workflow, signaling this is a discovery step before configuring an inbox. It lacks an explicit when-not or a named alternative among the many list_* siblings, but the context for use is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_agentsList AI agentsARead-onlyInspect
List the workspace's AI agents (every workspace starts with one) with their ids, names and status (draft, deployed, paused). Use an agent's id with get_agent, update_agent, test_agent and deploy_agent.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1 to 500; `metadata.hasMore` says whether another page follows. | |
| status | No | Only agents with this status. | |
| perPage | No | Agents per page (at most 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only safety (readOnlyHint=true, destructiveHint=false), and the description adds useful behavioral context: it returns IDs, names, and statuses, and guarantees that every workspace starts with at least one agent. It does not cover pagination or error behavior, but the schema handles page/perPage and the annotations cover the safe-read profile.
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 list operation and immediately followed by actionable downstream context. No wasted words, and the key scoping detail ('workspace's AI agents') appears 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?
For a simple read-only list tool with no output schema, the description covers the returned fields and the workspace guarantee, while the schema and annotations handle parameters and safety. 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 each parameter (page, status, perPage) is already documented in the input schema. The description only repeats the status enum already present in the schema and adds no further syntax, defaults, or filtering semantics, 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 clear verb and resource: 'List the workspace's AI agents', specifies the returned fields (ids, names, status) and enumerates the status values. It also distinguishes the returned IDs as inputs for sibling tools get_agent, update_agent, test_agent, and deploy_agent, so an agent can separate this from single-agent retrieval tools.
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 provides clear context by explaining the result's downstream use: 'Use an agent's id with get_agent, update_agent, test_agent and deploy_agent.' This implies listing is the way to discover IDs when you do not already have one, but it does not explicitly state when to prefer this over alternatives like get_agent or list_agent_channels.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ai_app_changesList changes made by AI appsARead-onlyInspect
List what AI apps changed in the workspace, newest first: each change's action, what it changed and the teammate or API key they acted as. It does not tell apart which AI app made a change. Pass metadata.nextCursor as cursor for the next page.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last day, `YYYY-MM-DD`. | |
| via | No | `mcp` (the default) for AI apps such as Claude and ChatGPT, `superintelligence` for Ask Aide. | |
| from | No | First day, `YYYY-MM-DD`. | |
| cursor | No | `metadata.nextCursor` of the previous page. | |
| perPage | No | Changes per page (at most 100). | |
| resourceType | No | Only changes to this kind of resource. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, destructiveHint=false, openWorldHint=false), so the bar is lower. The description does add real value beyond them: result ordering, the fields returned per change, the documented blind spot about which AI app acted, and the pagination mechanism. It stops short of stating default page size or default date window, which matter for a list tool with all-optional parameters.
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 purpose, then a caveat, then the pagination note. No filler or marketing language. The cursor sentence largely duplicates the schema description, which is the one trim available.
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 compensates by naming the returned fields and the sort order, and it explains how to page. The stated limitation on AI-app attribution preempts a likely agent assumption. Remaining gaps are minor: defaults for `perPage` and the date range, and how to interpret a null cursor at the end of results.
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 the enum meanings for `via` and `resourceType`, so the schema already carries the semantics and the baseline of 3 applies. The one parameter the description touches, `cursor`, only restates the schema's own 'metadata.nextCursor of the previous page' wording. Nothing is added for `from`/`to`/`perPage` semantics such as defaults or inclusive/exclusive boundaries.
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 with scope ('list what AI apps changed in the workspace'), plus the ordering ('newest first') and the shape of each returned change. It even discloses a limitation ('does not tell apart which AI app made a change'). It never names the nearest sibling (list_operations), so sibling differentiation is left implicit rather than 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?
Usage is implied rather than stated: an agent can infer this is the audit view for AI-app-driven mutations, satisfying the 'when'. There is no explicit 'when not', no mention of how this relates to list_operations or list_messages, and no prerequisites (e.g., whether a date range is required in practice).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conversation_order_actionsList a conversation's order actionsARead-onlyInspect
List the order actions (refunds, cancellations, address changes, returns and the like) taken or requested on a conversation's orders, newest first, each with its status (pending_approval waits for an admin), amount, order, reason, result and who asked.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1 to 500; `metadata.hasMore` says whether another page follows. | |
| status | No | Only actions with this status. | |
| perPage | No | Actions per page (at most 100). | |
| conversationId | Yes | The Aide conversation id (`cnv_…`), from find_conversation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe read (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower, and the description still adds real context: results are newest first, and `pending_approval` means an admin must act. It also names the returned fields, useful since 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 that states the resource, the scope, the ordering, and the returned fields with no filler. Dense but 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 list tool with full schema coverage and no output schema, the description compensates by enumerating the returned fields and ordering, which is what an agent needs to consume results. Only the routing versus the sibling list_order_actions 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 the schema already documents all four parameters, including the status enum and pagination bounds. The description only adds meaning to the `pending_approval` status value inline; 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 gives a specific verb+resource ('List the order actions ... on a conversation's orders') and enumerates the kinds of actions covered (refunds, cancellations, address changes, returns). It scopes the resource to a conversation, but never explicitly distinguishes itself from the similarly named sibling list_order_actions, so sibling differentiation is left to inference.
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 scope ('a conversation's orders'), which tells the agent this is the per-conversation view, but there is no explicit when-to-use/when-not guidance and no mention of the alternative list_order_actions or get_conversation_orders. The agent must infer the routing 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.
list_integrationsList connected integrationsARead-onlyInspect
List the workspace's connections (helpdesks, Shopify, Gmail, Salesforce…) with their id, name, category and needsReauth. Use an id with the other channel tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations confirm it is a read-only operation, the description adds behavioral context by listing specific attributes returned (`id`, `name`, `needsReauth`), which helps the agent understand the operational state of the connection 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?
The tool is described in a single, highly efficient sentence. It front-loads the purpose and efficiently lists all necessary details about the returned data.
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?
Since no output schema exists, the description fulfills the requirement for completeness by explicitly enumerating the key data points the agent can expect to receive upon successful invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Given that the input schema is empty, the description is vital. By listing output fields like `id`, `name`, `category`, and `needsReauth`, it provides semantic meaning to the data the agent will receive, making it maximally useful.
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 clearly identifies the resource (workspace connections/integrations) and provides specific examples of the connection types (Shopify, Gmail, Salesforce), distinguishing it from broader list functions.
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 provides a critical usage hint by stating that the returned `id` should be used for subsequent calls to 'other channel tools,' establishing the required operational workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_knowledge_documentsList knowledge documentsARead-onlyInspect
List the workspace's knowledge documents (articles, snippets, web pages, products, macros, transcripts) with their ids, titles, source ids, kinds, status, excerpts and links: newest first, or best match first with q. Read one in full with get_knowledge_document; to answer a question, search_knowledge ranks passages instead.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Words to match in the title or text. | |
| kind | No | Only documents of this kind. | |
| page | No | Page number, 1 to 500; `metadata.hasMore` says whether another page follows. | |
| status | No | Only documents with this status; drafts and archived documents are not used in answers. | |
| perPage | No | Documents per page (at most 200). | |
| starred | No | Only starred (true) or unstarred (false) documents. | |
| sourceId | No | Only documents of this knowledge source (an id from list_knowledge_sources). | |
| collectionId | No | Only documents in this collection (an id from list_knowledge_collections). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety needs no restating. The description adds genuinely non-obvious behavior beyond them: default ordering is newest first, and supplying q switches ordering to best match. It does not mention pagination defaults, though the schema's page/perPage docs already cover hasMore.
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. The primary purpose and returned fields are front-loaded, and the routing guidance follows as a compact contrast between the three knowledge tools.
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 8 optional parameters and no output schema, the description carries the burden of telling the agent what comes back, and it does so by listing the returned fields plus the ordering rule. Combined with the sibling routing hints and fully documented schema, an agent has everything needed to call 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 description coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: q is not merely a filter, it changes result ordering to relevance, and the parenthetical kind list mirrors the enum for at-a-glance recognition. It stops short of explaining the interaction between q and the kind/status/starred 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?
States a specific verb and resource (list the workspace's knowledge documents), enumerates the document kinds covered, and names the exact fields returned (ids, titles, source ids, kinds, status, excerpts, links). It also distinguishes itself from both get_knowledge_document and search_knowledge by name, so an agent can route 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 closing sentence gives explicit alternatives with selecting conditions: read one in full via get_knowledge_document, answer a question via search_knowledge (which ranks passages instead). That leaves no ambiguity about when this enumeration tool is the right choice versus the retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_knowledge_gapsList knowledge gapsARead-onlyInspect
List the knowledge gaps Aide found where its drafts fell short of the replies teammates sent, most conversations first, each with a proposed fix: a new article, an edit to one (change.currentText replaced with change.text), a draft to publish, or text to add to the agent's instructions. Each has its rationale, the article it concerns and how many conversations needed it. Fix one with add_knowledge_article, update_knowledge_article, publish_knowledge_document or update_agent, then mark_knowledge_gap_done.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Only gaps whose fix is of this kind. | |
| page | No | Page number, 1 to 500; `metadata.hasMore` says whether another page follows. | |
| status | No | Only gaps with this status; `open` when omitted. | |
| perPage | No | Gaps per page (at most 50). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe read-only operation, and the description adds useful behavior beyond that: gaps are ordered most-conversations-first, each includes rationale, related article, conversation count, and a proposed fix type. It does not describe pagination or the full response metadata, but the schema covers paging parameters.
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 front-loaded with the core purpose and then adds the ordering, returned fields, and remediation flow. It is dense but mostly earns its space; the fix-type list and field-replacement detail are useful, though the sentence is packed.
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 listing tool with a rich input schema and no output schema, the description is mostly complete: it explains the gaps, ordering, key returned fields, and next actions. The main remaining gap is that the short fix-type list does not cover all `kind` enum values, which could leave some filter semantics 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 description adds useful context about what a gap contains and how fixes map to downstream tools, but it does not explain the full 18-value `kind` filter or clarify how its short fix-type list relates to all enum options.
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 knowledge gaps where Aide drafts fell short of teammate replies. It also distinguishes this tool from sibling knowledge tools by describing what a gap contains and naming the downstream tools used to fix or close one.
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 clear context for when this list is useful and names the resolution path: fix with add_knowledge_article, update_knowledge_article, publish_knowledge_document, or update_agent, then mark_knowledge_gap_done. It does not explicitly compare this listing tool with sibling listing tools 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.
list_knowledge_sourcesList knowledge sourcesARead-onlyInspect
List the workspace's knowledge sources (help centers, websites, files and the like) with their ids, kinds and document counts. Use the ids to narrow search_knowledge.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1 to 500; `metadata.hasMore` says whether another page follows. | |
| perPage | No | Sources per page (at most 200). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered elsewhere. The description adds useful payload context (ids, kinds, document counts) but says nothing about ordering, pagination behavior beyond the schema, or result limits, so it adds only modest value on top of the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the resource and its returned fields come first, and the follow-up action is the second sentence. Nothing is redundant with 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?
With no output schema, the description usefully names the returned fields (ids, kinds, document counts) and pagination is fully covered by the schema. It is nearly complete for a simple read-only list tool, though a note on ordering or an empty-workspace case would close the 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% and both parameters (page, perPage) are documented in the schema including the metadata.hasMore hint. The description adds no parameter-level meaning at all, 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 (List) plus resource (workspace's knowledge sources) with an explicit enumeration of what a source is (help centers, websites, files) and what fields come back (ids, kinds, document counts). It is clearly distinguishable from siblings like list_knowledge_documents and search_knowledge.
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 onward: 'Use the ids to narrow search_knowledge,' which tells the agent this is the discovery step before a filtered search. It does not, however, contrast itself against the closest sibling list_knowledge_documents, so the when-not guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_membersList teammatesARead-onlyInspect
List the workspace's teammates with their ids, names, emails, roles, teams (with team ids) and availability. Use a teammate id as update_conversation's assigneeId and a team id as its teamId.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1 to 500; `metadata.hasMore` says whether another page follows. | |
| perPage | No | Teammates per page (at most 200). |
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 real behavioral value by enumerating what comes back (ids, names, emails, roles, teams with team ids, availability), which matters given there is no output schema. It says nothing about pagination defaults or rate limits, 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?
Two sentences, both load-bearing: the first states the resource and return shape, the second routes the returned ids to their consumers. No filler or restatement 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 zero-required-param list tool with read-only annotations, the description is nearly complete: it covers return fields (compensating for no output schema), pagination is handled by the schema, and id semantics are explained. Only minor omissions, such as default page size behavior, remain.
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 (page, perPage) are already fully documented with bounds and the metadata.hasMore follow-up signal. The description adds nothing about parameter behavior, so the 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 (workspace's teammates) with the exact fields returned enumerated. An agent can distinguish this from list_macros, list_products, list_topics 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?
Gives concrete downstream usage: 'Use a teammate id as update_conversation's assigneeId and a team id as its teamId.' This is a clear cross-tool linkage. It doesn't state when *not* to use this tool or any prerequisites, which is why 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.
list_messagesList messagesARead-onlyInspect
List a conversation's messages, replies and internal notes, newest page first, oldest to newest within the page. For older messages, pass the page's meta.nextCursor as before; it is null on the oldest page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many messages to return (at most 200). | |
| before | No | A message id (`meta.nextCursor`): return the messages before it. | |
| conversationId | Yes | The Aide conversation id (`cnv_…`), from find_conversation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds behavior beyond that: page ordering (newest page first, oldest-to-newest within a page) and the cursor lifecycle (meta.nextCursor, null on the oldest page), which an agent cannot infer 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 sentences, no filler. Scope and ordering come first, then the pagination instruction, so the most decision-relevant 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?
There is no output schema, and the description compensates by disclosing the meta.nextCursor envelope and the in-page ordering, which is what an agent needs to page correctly. It does not describe message fields or whether internal notes are permission-gated, but for a straightforward read-list tool this is close to 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 coverage is 100%, so the baseline is 3. The description nonetheless adds meaning beyond the schema: it explains that `before` is fed from the page's meta.nextCursor and that its null value signals the oldest page, clarifying the cursor's provenance and termination condition. It does not elaborate on `limit` 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 a conversation's messages, replies and internal notes') plus the ordering contract, so it is clearly distinguishable from get_conversation, reply_to_conversation and add_note. It stops short of naming a sibling or scoping itself against one, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives real guidance on when to use the `before` parameter (to page to older messages), which is genuinely useful. However, there is no guidance on when to choose this tool over get_conversation, search or list_* siblings, so usage is only partially addressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_operationsList operationsARead-onlyInspect
List the Aide API operations (https://docs.aide.app/api-reference) in one area that this connection can run, each with its name, title, description, kind (read, create, update or delete) and inputSchema. Each kind runs with its own tool: run_read_operation, run_create_operation, run_update_operation or run_delete_operation.
| Name | Required | Description | Default |
|---|---|---|---|
| area | Yes | The area: `topics` (Read, create, edit and delete topics, their categories, training examples and near misses; accept or dismiss suggested topics); `knowledge` (Move and delete articles; help center collections; business facts; product pairings; rename, narrow or delete knowledge sources; policy questions); `analytics` (Conversation counts, the support report (resolution, handoffs, response times, CSAT, sales), customer satisfaction with comments, and which knowledge answered); `agents` (Instructions agents follow in every conversation (list, add, edit, delete, reorder), handoff messages and reasons, Copilot drafting settings, and taking an inbox away from the AI agent); `channels` (A connection's details, inboxes and disconnecting it, reply settings and rollout, helpdesk extras (AI agent rule, sidebar, agent links, Salesforce sync, activity and retries), the support mailbox list, and the chat widget's settings); `helpdesk` (Inbox, CSAT and sender settings, routing and sender rules, SLA policies, schedules and holidays, custom fields and saved views); `scenarios` (Procedures: create, edit and delete them, save a draft and set it live, versions, check a When to use on recent conversations, Only if condition values, estimate and preview, run on existing conversations, list fields for collect steps; read, fill, create, edit and delete macros); `conversations` (Act on conversations: reply, notes, status, priority, assignee or team (also in bulk), take over or hand back, CSAT, macros, Copilot, draft feedback; order refunds, cancels, address, items, reships, returns and holds); `team` (Teammates, teams and invitations: roles, team membership, invite, resend or revoke, remove a teammate, transfer ownership); `billing` (The billing summary, plans, ending the trial, cancelling or keeping the subscription, the Stripe billing portal and AI usage). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds meaningful context beyond that: results are filtered to what 'this connection can run' and each entry carries name, title, description, kind, and inputSchema, which tells the agent how to chain into a run_* tool. Return breadth and any truncation behavior remain undocumented, so it adds value but not rich depth.
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 verb and resource, followed immediately by the return shape and the routing to the run_* tools. No filler, no restatement 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 correctly compensates by enumerating the returned fields (name, title, description, kind, inputSchema) and explaining the permission scoping. Combined with a 100%-covered enum schema and full annotations, an agent has what it needs; only chaining specifics, such as passing the returned inputSchema into the matching run_* tool, are 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 the single enum parameter already spells out all ten areas in detail, so the schema carries the burden. The description only contributes the scoping phrase 'in one area that this connection can run', adding little per-parameter meaning 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?
States a specific verb and resource ('List the Aide API operations'), the scope ('in one area that this connection can run'), and the exact shape of each item returned. It is clearly distinguishable from the domain list_* siblings (list_topics, list_procedures) because it enumerates API operations rather than domain objects.
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 second sentence names the alternatives explicitly — run_read_operation, run_create_operation, run_update_operation, run_delete_operation — so an agent knows this tool discovers and those execute. It stops short of an explicit sequencing rule ('call this first, then run_* with the returned inputSchema') or a when-not-to-use statement, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_order_actionsList order actionsARead-onlyInspect
List the workspace's order actions (refunds, cancellations, address changes, returns and the like requested by teammates or Aide), newest first, each with its status, amount, order, conversation, reason, result and who asked and approved. status: pending_approval is the approval queue.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1 to 500; `metadata.hasMore` says whether another page follows. | |
| status | No | Only actions with this status; `pending_approval` for those waiting for approval. | |
| perPage | No | Actions per page (at most 100). |
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=false), so the description's added value is the ordering guarantee ('newest first'), the returned field set, and the semantic meaning of the pending_approval status. No permissions or rate-limit caveats, but for a read-only list tool this is solid added 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?
Two tightly packed sentences with zero filler; the identity and scope of the tool come first and the approval-queue hint is placed last where it is most actionable.
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 fields (status, amount, order, conversation, reason, result, requester/approver), and the schema handles paging via metadata.hasMore. It is essentially complete for a read-only list tool, though it does not address ordering stability or empty-result behavior.
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 page, perPage, and every enum value including pending_approval. The description's remark about the approval queue restates what the status enum description already says, adding little beyond the schema 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 verb and resource ('List the workspace's order actions'), enumerates what counts as an action (refunds, cancellations, address changes, returns), and scopes it to the workspace, which separates it from the conversation-scoped sibling list_conversation_order_actions.
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 note that '`status: pending_approval` is the approval queue' implies a usage pattern, but the description never explicitly says when to pick this tool over list_conversation_order_actions or when to filter by status versus paging through everything. 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.
list_proceduresList proceduresARead-onlyInspect
List the workspace's procedures (what Aide does for one kind of customer message: steps to follow, details to collect, how it finishes) with their ids, names, When to use, status (draft: never live; live; paused; _with_draft when edits wait to be set live) and how often they ran, most recently changed first. Read one in full with get_procedure.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1 to 500; `metadata.hasMore` says whether another page follows. | |
| perPage | No | Procedures per page (at most 500). |
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 safety is covered. The description adds real behavioral context beyond that: result ordering (most recently changed first) and the full status vocabulary, including the non-obvious `_with_draft` value meaning edits are staged and not yet live. It does not mention pagination limits, though the schema covers those.
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 core action and ending with the sibling routing. The long parenthetical defining a procedure and its status values is dense but each clause carries information an agent needs. Slightly heavy nesting keeps it from 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?
No output schema exists, so the description compensates by naming the fields returned (ids, names, When to use, status, run frequency) and the sort order. Combined with schema-documented pagination, an agent has everything needed to call this correctly and interpret the result.
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 pagination parameters carry ranges and the schema explains that `metadata.hasMore` signals another page. The description says nothing about paging or page size, so it 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?
Names a specific verb and resource and goes further by defining what a procedure is ("what Aide does for one kind of customer message: steps to follow, details to collect, how it finishes"). It also enumerates the returned fields and explicitly distinguishes itself from get_procedure, so an agent can separate the two 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 final sentence routes the agent clearly: use this to enumerate, use get_procedure to read one in full. That is an explicit alternative with a stated condition. It stops short of saying when listing is not appropriate (e.g. when the id is already known and a direct get would suffice), so it is strong but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsList productsARead-onlyInspect
List the workspace's synced Shopify products, by title, vendor or SKU with q, each with its id, title, vendor, status, price range, availability, variant count and storefront link. Read one in full with get_product.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Words to match in the title, vendor or a variant SKU. | |
| page | No | Page number, 1 to 500; `metadata.hasMore` says whether another page follows. | |
| status | No | Only products with this status in the store. | |
| perPage | No | Products per page (at most 200). | |
| sourceId | No | Only products of this `products` knowledge source. | |
| integrationId | No | Only products of this store connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds the useful constraint that results are scoped to the workspace's synced Shopify products, but says nothing about pagination or result ordering beyond what the schema's `page`/`metadata.hasMore` already states.
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 carrying scope, search targets and return fields, followed by a one-clause routing pointer. No filler and nothing 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?
With no output schema, enumerating returned fields (id, title, vendor, status, price range, availability, variant count, storefront link) is exactly the right compensation. Pagination mechanics are left entirely to the schema, which handles them, so 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 every parameter (q, page, status, perPage, sourceId, integrationId) is already documented in the schema. The description only restates the q match targets, adding no new semantics; 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 the workspace's synced Shopify products'), the match fields q searches, and the exact fields returned. It explicitly contrasts with the sibling get_product, so an agent can pick between list and single-read 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?
'Read one in full with get_product' names the alternative and the condition (need full detail) that selects it. No exclusion guidance on the filter parameters (status, sourceId, integrationId), but the list-vs-get branch is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_topicsList topicsARead-onlyInspect
List the workspace's topics (what customers write about; Aide tags each conversation with them) with their ids, names, category and conversation counts. Use the ids to filter find_conversation and the analytics tools.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Words to match in the topic name. | |
| page | No | Page number, 1 to 500; `metadata.hasMore` says whether another page follows. | |
| perPage | No | Topics per page (at most 500). |
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 safety is covered. The description adds value the annotations do not: workspace scoping and the shape of the response (ids, names, category, conversation counts), 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?
Two sentences with no filler; the definition of the resource is parenthetical and the actionable chaining advice comes second. Nothing is wasted and the purpose 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 pagination semantics live in the parameter descriptions. For a simple read-only list tool, an agent has everything needed to call it and use the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema documents q, page, and perPage with bounds and the metadata.hasMore hint. The description adds no parameter-level syntax or format 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?
States a specific verb and resource ('List the workspace's topics'), then defines what a topic actually is ('what customers write about; Aide tags each conversation with them') and enumerates the returned fields. It also names the sibling tools that consume the ids, so an agent can place it precisely among find_conversation and the analytics tools.
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 a concrete downstream use case: 'Use the ids to filter find_conversation and the analytics tools,' which tells the agent why to call this before those tools. There is no explicit when-not or alternative-listing, but the chaining context is clear enough to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_ordersLook up ordersARead-onlyInspect
Find the workspace's synced Shopify orders by the customer's email, the order number, or both (then an order must match both). Newest first, at most 20 a page, each with its status, totals, items, fulfillments and tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1 to 500; `metadata.hasMore` says whether another page follows. | |
| No | The store customer's email address. Required unless orderNumber is given. | ||
| perPage | No | Orders per page (at most 20). | |
| orderNumber | No | The order number or name as the store shows it (`1001` or `#1001`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds genuinely non-structured behavior: results are ordered newest first and each row carries status, totals, items, fulfillments and tracking. No auth or rate-limit context, but the added behavioral detail is real.
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, front-loaded with the verb and resource, with the match semantics and return shape following in priority order. No filler and 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 usefully compensates by enumerating the returned fields, and the annotations carry the safety profile. It stops short of covering no-match behavior or error conditions, but for a read-only lookup it is close to 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 the baseline is 3. The description goes beyond the schema by spelling out the conjunction rule ('then an order must match both') and the newest-first ordering with a 20-per-page cap, semantics the schema does not state.
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 ('Find') and a precisely scoped resource ('the workspace's synced Shopify orders'), and states the three lookup keys (email, order number, or both). This scope distinguishes it from conversation-scoped siblings like get_conversation_orders and list_order_actions 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 conveys how to query (by email, order number, or both) and the AND semantics when both are supplied, which implies its usage. But it never states when to reach for this tool over siblings such as get_conversation_orders or search, and gives no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_knowledge_gap_doneMark a knowledge gap doneAInspect
Mark an open knowledge gap done once its fix is made (this does not make the fix). Returns the gap.
| Name | Required | Description | Default |
|---|---|---|---|
| gapId | Yes | The knowledge gap id, from list_knowledge_gaps. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, closed-world mutation, and the description adds genuinely new facts: it is a state transition only, it does not perform the underlying fix, and it returns the gap. It does not say whether the transition is reversible or whether re-marking an already-done gap errors, which keeps it below 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, front-loaded with the action and its precondition; the parenthetical clarification prevents a costly misreading and earns its place. No filler whatsoever.
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 mutation with no output schema, the description covers the precondition, the effect boundary, and the return value ('Returns the gap'). Only idempotency/undo behavior on an already-done gap is left unstated, 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?
Single parameter with 100% schema description coverage, including provenance ('from list_knowledge_gaps'), so the schema does the work. The description adds nothing about the gapId beyond what the schema states, which is the expected baseline here.
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 ('Mark an open knowledge gap done') and scopes it with the precondition that the fix already exists. It implicitly separates itself from fix-creation tools, but never names sibling alternatives such as dismiss_knowledge_gap or update_knowledge_article.
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?
'once its fix is made' gives a real trigger condition for calling the tool, which is more than most mutation tools offer. However, it gives no guidance on the closely related dismiss_knowledge_gap or on what to do if the gap is already done, leaving the competitive choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_agentPause an AI agentAInspect
Stop a deployed AI agent from answering customers; teammates answer instead. Its settings are kept and deploy_agent puts it back. Returns the agent with status paused.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | The agent id, from list_agents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say this is a non-read-only, non-destructive, closed-world mutation; the description adds real substance on top — configuration is preserved, the change is reversible via deploy_agent, and the returned record carries status `paused`. It stops short of stating permissions or the effect on in-flight conversations.
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, front-loaded with the user-visible effect, then the reversal path, then the return shape. 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?
Covers purpose, state preservation, reversal, and even the return payload in the absence of an output schema, which is enough for a one-parameter toggle. Only authorization requirements are unaddressed, a minor omission for this scope.
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 agentId parameter, which already documents the string and its source (list_agents). The description adds no extra meaning 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 ('Stop a deployed AI agent from answering customers') plus the operative consequence that teammates take over the replies. It also names the inverse operation (deploy_agent), so an agent can distinguish pause from deploy/resume without opening sibling 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?
Clearly explains the situation that calls for this tool (handing customer replies back to teammates) and points to deploy_agent as the way to undo it. There is no explicit 'when not to use' clause, but the use case is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_knowledge_documentPublish a knowledge documentAInspect
Publish a draft article, such as one a knowledge gap proposes publishing: Aide Chat's public help section shows it, and Aide answers customers from it at once unless it is not used by Aide (usedByAide false). Snippets are internal, never shown to customers, and can't be published or unpublished. Returns the document.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | Yes | The knowledge document id, from list_knowledge_documents or search_knowledge. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly=false, destructive=false), the description discloses two non-obvious consequences: the article appears in Aide Chat's public help section and affects customer answers immediately unless usedByAide is false. It omits error and idempotency behavior, but for a non-destructive toggle the disclosure is substantial.
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 action is front-loaded in the first clause and every sentence carries behavioral information. The subclause 'unless it is not used by Aide (`usedByAide` false)' is slightly convoluted and could be stated more directly, keeping it from a top score.
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, non-destructive publish tool with no output schema, this covers the trigger, visibility consequences, type exclusions, and a brief note on the return value ('Returns the document'). Only side-effect nuances such as re-publishing or failure modes are 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 the single documentId parameter is fully documented there, including where to obtain it. The description adds only implicit meaning about which document types are valid (drafts, not snippets), which is a small increment over the schema 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 opens with a specific verb+resource, 'Publish a draft article', and clarifies that snippets cannot be published, which implicitly separates this from unpublish_knowledge_document and update_knowledge_article. It stops short of naming any sibling tool explicitly, so an agent must infer the boundaries.
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 concrete trigger (an article a knowledge gap proposes publishing) and a clear exclusion (snippets are internal and can't be published). It does not say what to do instead when the target is a snippet or how to edit before publishing, so routing guidance is imperfect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refund_orderRefund an orderADestructiveInspect
Refund an order from a conversation on the Shopify store, as the signed-in teammate. The workspace's approval rules apply: a refund above their limits waits for an admin, and the result says whether it ran or waits. Without an amount, everything still refundable is refunded. Repeated calls are not deduplicated: calling it again refunds again while anything is left to refund, or adds another request waiting for approval.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | In the order's currency; omitted refunds everything still refundable. | |
| notify | No | Email the customer about the refund. | |
| reason | No | Why, for the order history. | |
| orderId | Yes | The order id, from get_conversation_orders or lookup_orders. | |
| conversationId | Yes | The Aide conversation id (`cnv_…`), from find_conversation. | |
| requestApproval | No | Ask a teammate to approve it instead of running it now. Without it, the workspace approval rules decide: an action above their limits waits for an admin. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructive/openWorld annotations by disclosing the approval-gating flow ('a refund above their limits waits for an admin'), the meaning of the result ('says whether it ran or waits'), and critically the lack of idempotency ('repeated calls are not deduplicated: calling it again refunds again'). That last point is exactly the kind of side-effect disclosure an agent needs before calling a destructive 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?
Four sentences, each carrying distinct load (identity/scope, approval flow, amount default, idempotency). The core purpose is front-loaded and 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 destructive mutation with no output schema, it covers identity, approval, default amount behavior, and repeat-call effects, and hints at the response shape. It does not address failure cases (e.g., non-refundable or already-fully-refunded orders) or any partial-refund edge cases, so it is strong but not exhaustive.
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 amount omission and requestApproval semantics. The description reinforces the amount-omission rule but adds no syntax or format detail beyond what the schema provides, 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+resource ('Refund an order') and adds real scope: the conversation context, the Shopify store, and the acting identity ('as the signed-in teammate'). It is unambiguous what the tool does, though it never explicitly contrasts itself with near-siblings like cancel_order or approve_order_action, 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?
Gives clear usage context: when to pass an amount vs omit it, when approval rules intervene, and how requestApproval changes behavior. It also warns about re-invocation. It never names an alternative tool or an explicit 'use X instead' exclusion, 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.
reimport_knowledge_sourceImport a knowledge source againAInspect
Import a website or help center source again, such as one whose import failed, in the background: its pages at and under url (the source address when omitted, on the same site; another site is add_website). Returns the source with status importing; check it with get_knowledge_source.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A corrected address on the same site, a full URL; the source address when omitted. | |
| maxPages | No | At most this many pages are imported (1 to 500). | |
| sourceId | Yes | The knowledge source id, from add_website, list_knowledge_sources or get_setup_status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is partly covered. The description adds genuinely new behavior: the import runs in the background, returns immediately with status 'importing', and must be polled with get_knowledge_source. It does not say what happens to already-imported pages on re-import, which is the main unresolved risk for a re-import 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?
Two sentences, front-loaded with the action and followed by return/polling behavior; every clause carries information. The nested parentheticals ('the source address when omitted, on the same site; another site is add_website') are dense but compact rather than 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?
With no output schema, the description correctly compensates by naming the return shape ('the source with `status` `importing`') and the tool to confirm completion. For a 3-parameter, open-world mutation it covers the essentials, falling short only on how re-import interacts with existing imported pages and any permission or rate constraints.
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 adds real meaning beyond the schema: imported scope is 'its pages at and under `url`', and `url` is described as a corrected address that defaults to the source address on the same site. maxPages is left entirely to the schema, so this 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?
The description states a specific verb and resource ('Import a website or help center source again') and scopes the operation to a re-import of an existing source, naming the sibling that handles the nearby case ('another site is add_website'). An agent can distinguish this from add_website and list_knowledge_sources 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?
It gives the selecting condition explicitly ('such as one whose import failed'), the alternative for a different case (add_website for another site), and the follow-up tool to verify the result (get_knowledge_source). The 'again' framing also implies it is not the tool for creating a new source.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reject_order_actionReject an order actionADestructiveInspect
Reject an order action waiting for approval (status pending_approval), as the signed-in teammate: it never runs. The reason is kept on the action.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Why, for the teammate who asked. | |
| actionId | Yes | The order action id, from list_order_actions or list_conversation_order_actions. |
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 behavioral context: the action 'never runs' after rejection, the actor is the signed-in teammate, and the supplied reason is persisted on the action. It does not address reversibility or what happens if the action is not in pending_approval, 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?
A single sentence that front-loads the action, the precondition, the actor, and the effect, with zero filler. Every clause carries information an agent 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 two-parameter mutation with no output schema, the description covers what happens (action never runs) and what is retained (the reason). It omits edge-case behavior such as errors when the action is not pending_approval or whether the rejection can be undone.
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 actionId and reason are already documented in the schema, including that actionId comes from list_order_actions. The description's 'the reason is kept on the action' adds a small persistence nuance but nothing beyond the schema 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 verb (reject) and resource (order action) plus the gating precondition (status `pending_approval`), which is exactly what separates it from the sibling approve_order_action. An agent can identify the operation 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?
Gives a clear trigger condition — the action must be waiting for approval — and implies the alternative (approval) through that same precondition. It stops short of explicitly naming approve_order_action or stating when not to use this tool, so it is clear context without 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.
reply_to_conversationReply to the customerADestructiveInspect
Send a reply to the customer on a conversation, as the signed-in teammate, through its channel (email, chat, the helpdesk ticket…). The customer receives it and it cannot be unsent; calling it again sends another reply. For something only teammates should see, use add_note. status moves the conversation after sending, as Send and close does.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The reply, in plain text. | |
| status | No | Where the conversation goes after the reply, such as `closed` or `waiting_on_customer`. | |
| snoozedUntil | No | With status `snoozed`: when it comes back (ISO 8601, in the future). | |
| conversationId | Yes | The Aide conversation id (`cnv_…`), from find_conversation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, but the description adds the specific traits that matter: the reply reaches the customer, it cannot be unsent, repeated calls create additional replies, and the optional status moves the conversation afterward (mirroring 'Send and close'). This is exactly the extra context annotations cannot express.
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, each load-bearing: purpose and scope first, the internal-note alternative second, the irreversibility and status side effect third. No filler and the critical constraints are 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?
For a mutation tool with no output schema, the description covers what the agent needs: who receives the message, that the action is irreversible, retry semantics, and the side effect on conversation status. 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%, so the baseline is 3; the description exceeds it by explaining that `status` relocates the conversation after sending and by framing it against the familiar 'Send and close' behavior. It does not add anything for `snoozedUntil` or `conversationId` 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?
The description names a specific verb (send a reply), the resource (a conversation), the acting identity (signed-in teammate), and the delivery channel (email, chat, helpdesk ticket). It also distinguishes itself from the nearest sibling, add_note, so an agent can separate the two 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?
It gives an explicit alternative with the condition that selects it: 'For something only teammates should see, use add_note.' It also states the consequence of repeat invocation ('calling it again sends another reply'), which tells the agent this is not a safe retry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_create_operationRun a create operationAInspect
Runs a create operation of the Aide API (https://docs.aide.app/api-reference), from list_operations, and returns its result: a write that adds something, such as a topic, a macro or a routing rule.
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | The operation's arguments, as its `inputSchema` from list_operations describes. | |
| operation | Yes | The operation's `name`, from list_operations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is covered; the description's 'write that adds something' is consistent with that. It adds 'returns its result', but says nothing about failure modes, partial success, permission requirements, or that the return payload varies by operation. Useful but thin beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that defines the action, points at the source of truth, and gives concrete examples of what 'create' covers. The docs link is unobtrusive; nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic open-world dispatcher, the description plus a fully documented schema tells an agent where to get both the operation and its arguments. Since there is no output schema, the phrase 'returns its result' is minimal but adequate; only the operation-dependent response shape 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 the two parameter descriptions already say exactly what the description repeats (operation name from list_operations, arguments per the operation's inputSchema). The description adds no format, constraint, or nesting 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?
The description gives a specific verb ('Runs') and resource ('a `create` operation of the Aide API'), and clarifies semantics with 'a write that adds something, such as a topic, a macro or a routing rule.' The create/read/update/delete split against the run_* siblings is unambiguous from 'create' plus 'adds something', 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?
It states the prerequisite workflow clearly: the operation name comes from list_operations and the arguments come from that operation's `inputSchema`. That is real routing guidance. It does not state exclusions (e.g., when to prefer a dedicated typed tool like add_note or deploy_agent instead of this generic dispatcher), which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_delete_operationRun a delete operationADestructiveInspect
Runs a delete operation of the Aide API (https://docs.aide.app/api-reference), from list_operations, and returns its result: it deletes, disconnects, revokes or resends something, such as a topic or an integration.
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | The operation's arguments, as its `inputSchema` from list_operations describes. | |
| operation | Yes | The operation's `name`, from list_operations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the mutation risk is covered structurally. The description adds genuine value by enumerating the effect surface ('deletes, disconnects, revokes or resends ... such as a topic or an integration') and linking the API docs. It does not state irreversibility or confirmation requirements, which would matter for a destructive 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?
A single dense sentence front-loads the verb and resource, then the provenance and data source. The inline URL and the 'deletes, disconnects, revokes or resends' enumeration make it slightly heavy but every clause carries 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 generic dispatcher-style tool with a nested arguments object and no output schema, the description supplies the data source (list_operations), the docs reference for return shape, and the breadth of effects. It is nearly complete; only irreversibility/confirmation behavior is left 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 coverage is 100% and the schema text itself already says operation comes from list_operations and arguments follow its inputSchema. The description only restates that, adding no new syntax or format detail. A nested 'arguments' object is not further illustrated beyond the pointer.
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 ('Runs a delete operation') plus the resource (Aide API operation, sourced from list_operations) and what it returns. The delete scope implicitly distinguishes it from run_create_operation, run_read_operation and run_update_operation, though it doesn't call those siblings out by name.
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 the prerequisite workflow: obtain the operation name from list_operations, and get arguments from that operation's inputSchema. This tells the agent how to call it correctly. It stops short of explicit when-not-to-use guidance (e.g., avoid this for creates/reads).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_read_operationRun a read operationARead-onlyInspect
Runs a read operation of the Aide API (https://docs.aide.app/api-reference), from list_operations, and returns its result. Changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | The operation's arguments, as its `inputSchema` from list_operations describes. | |
| operation | Yes | The operation's `name`, from list_operations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly guarantees that the tool 'Changes nothing,' which reinforces the 'readOnlyHint' annotation by providing a strong behavioral guarantee to the agent. This provides valuable behavioral context beyond the static hint provided in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly efficient and well-structured. It front-loads the function's purpose (Aide API read operation), provides the mechanism (via `list_operations`), and concludes with the critical safety status in just two concise sentences.
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 reasonably complete for an agent's decision-making. It provides documentation links, defines the scope (read), and defines the constraints (no change). Minor gaps remain regarding expected return structures, but this is often handled by output schemas.
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?
Even with 100% schema coverage, the description adds significant value by explaining that both the operation name and arguments are derived from the `list_operations` API. This tells the agent exactly where to look for valid inputs, providing critical context.
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 clearly states that the tool runs read operations from the Aide API. While it specifies 'read' operations, it relies heavily on the sibling tools and their names to distinguish it, rather than listing constraints on the operations it supports.
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 provides clear usage guidance by explicitly stating that the operation 'Changes nothing.' This strongly signals when the tool is appropriate (safe information retrieval) and when it is not (for state changes).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_update_operationRun an update operationADestructiveInspect
Runs an update operation of the Aide API (https://docs.aide.app/api-reference), from list_operations, and returns its result: a write that overwrites saved settings, such as a topic or the chat widget.
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | The operation's arguments, as its `inputSchema` from list_operations describes. | |
| operation | Yes | The operation's `name`, from list_operations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare `destructiveHint: true` and `readOnlyHint: false`, and the description adds useful behavioral detail by explaining that this is a write that overwrites saved settings, with examples such as a topic or the chat widget. It does not add auth, rate-limit, or output-format details, but it meaningfully elaborates on the destructive behavior beyond the annotation.
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 that states what the tool does, where the operation comes from, what it returns, and what kind of write it performs. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic update-operation dispatcher with full schema coverage and annotations covering safety traits, the description provides enough context: it names the source list, explains the return, and warns that it overwrites saved settings. It could be slightly more complete by explicitly stating how it differs from the create/delete/read runner siblings, but the core 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 the schema already documents both `operation` and `arguments`. The description reinforces that the operation and its arguments come from `list_operations`, but it does not add syntax or detail beyond what the schema already 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?
The description gives a specific verb and resource: it runs an `update` operation of the Aide API, sourced from `list_operations`, and returns the result. It also characterizes the operation as a write that overwrites saved settings, with examples like a topic or chat widget, which clearly distinguishes it from `run_create_operation`, `run_delete_operation`, and `run_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?
It states that the operation comes from `list_operations` and that this tool is specifically for update operations. This gives clear context for when to use it, though it does not explicitly state when not to use it or name the sibling alternatives as exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch knowledge for citationsARead-onlyInspect
Search the workspace's published knowledge (help center articles, website pages and other sources) and return the best matching documents as results, each with its id, title and url. Read a result in full with fetch.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | A question or keywords, in the customer's words. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the bar is lower. The description adds meaningful behavior beyond them: the index is limited to *published* knowledge (implying drafts/internal docs are excluded) and results are ranked 'best matching' documents returned as a `results` collection. It does not mention 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: purpose and scope first, return shape second, follow-up action last. No filler, no restatement of the title, and it front-loads the most decision-relevant 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 single-parameter read tool with annotations and an output schema, the description covers source scope, result shape, and the natural next step (`fetch`). The one material omission is disambiguation from the near-identically-named sibling `search_knowledge`, which an agent must resolve to pick 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?
Only one parameter at 100% schema coverage, and the schema already documents it well ('A question or keywords, in the customer's words'). The description adds no query syntax, length, or formatting guidance 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 and resource with scope: search the workspace's *published* knowledge (help center articles, website pages, other sources). It also names the return shape (`results` with `id`, `title`, `url`). However, it does nothing to distinguish itself from the sibling `search_knowledge` (or `list_knowledge_documents`), which is a real ambiguity for a tool generically named `search`.
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 scope (find published knowledge to cite), and it explicitly chains forward: 'Read a result in full with fetch.' But it never says when to choose this over `search_knowledge`, `list_knowledge_documents`, or `get_knowledge_document`, so the selection condition 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.
search_knowledgeSearch knowledgeARead-onlyInspect
Search the workspace's published knowledge (help center articles, website pages and other sources) the way Aide does when it answers customers. Returns the best matches first, each with its document id, sourceId, kind, title, link, excerpt (the passages that matched) and score. Read one in full with get_knowledge_document.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | A question or keywords, in the customer's words. | |
| limit | No | How many documents to return, best first. Defaults to 5. | |
| knowledgeSourceIds | No | Only search these knowledge sources (ids from list_knowledge_sources); all of the workspace's knowledge when omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuinely new behavioral context: results are ranked best-first and each match carries the matched passages as excerpts, which tells the agent what to expect from a call. It omits any auth, rate-limit, or freshness/indexing caveats.
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 purpose, followed by the return shape and the handoff to get_knowledge_document. No filler or restatement 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?
There is no output schema, so the description correctly carries the return contract (id, sourceId, kind, title, link, excerpt, score) plus ranking order, and it names the follow-up tool for reading a full document. Nothing an agent needs to invoke or interpret results 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 q, limit, and knowledgeSourceIds are fully documented in the schema, including the default of 5 and the pointer to list_knowledge_sources. The description adds no input-side meaning 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 (search) and resource (the workspace's published knowledge) with concrete examples of what counts as knowledge (help center articles, website pages, other sources). This clearly separates it from siblings like list_knowledge_documents, list_knowledge_sources, and the generic search/fetch.
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 a clear usage context ('the way Aide does when it answers customers') and an explicit next step for full content via get_knowledge_document. It does not state when NOT to use it or contrast with other retrieval siblings, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_feedbackSend feedback to the Aide teamAInspect
Tell the Aide team when you can't do what the user asked with these tools, or something looks wrong: a tool or option you needed that doesn't exist, a result that didn't match the dashboard or the helpdesk, an error, or a description that misled you. Say what you were trying to do and what would have helped. It changes nothing in the workspace. Leave out customers' names, emails, order numbers and message text.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | What happened: `missing_tool`, `missing_option`, `wrong_result`, `error`, `confusing` (a description misled you) or `other`. | |
| tool | No | The tool it is about, if one. | |
| example | No | The call you made or wanted, and what came back. | |
| message | Yes | What you were trying to do, what was missing or wrong, and what would have helped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations say readOnlyHint=false / destructiveHint=false / openWorldHint=false; the description reconciles this well by stating it 'changes nothing in the workspace', so the agent knows it writes only a feedback record. The added privacy constraint (omit customer names, emails, order numbers, message text) is genuinely useful behavioral context not captured by annotations. Return behavior is not described, 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 compact sentences: trigger conditions first, then what to include, then the impact caveat and privacy rule. Every clause carries operational weight 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 100% schema coverage, annotations present, and no output schema, the description supplies exactly what structured fields don't: when to file feedback, what to write, what not to include, and that it is side-effect-free for the workspace. 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 adds real meaning: it tells the agent what content belongs in `message` (what you tried, what was missing, what would have helped) and imposes an exclusion rule that no schema field encodes. This goes beyond restating the enum and field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and recipient ('Tell the Aide team') and immediately enumerates the concrete situations that trigger it (missing tool/option, wrong result, error, misleading description). No sibling tool does anything similar, so it is unambiguous in the toolset.
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?
Explicit when-to-use with enumerated triggers, plus content guidance ('Say what you were trying to do and what would have helped') and a clear scope caveat ('It changes nothing in the workspace'). It also gives a when-not-to-include rule for sensitive data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_forwarding_testTest email forwardingAInspect
Send a test email to the mailbox's support address to check it forwards to Aide. When it arrives, the mailbox's forwarding becomes verified (check with get_setup_status after a minute). Returns the mailbox.
| Name | Required | Description | Default |
|---|---|---|---|
| mailboxId | Yes | The mailbox id, from add_support_email or get_setup_status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-destructive, open-world write action. The description adds important context beyond them: the email is actually sent externally, forwarding becomes verified on arrival, and verification should be checked after a minute using get_setup_status.
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, front-loaded with the action and purpose, followed by the verification flow and return value. No obvious 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?
With annotations covering safety and openness, the schema covering the only parameter, and no output schema, the description provides what an agent needs: the side effect (sends email), the resulting verification, the follow-up tool, and the return value. Minor gaps like retry/rate-limit behavior are not addressed but are not essential 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?
The single mailboxId parameter is already fully documented in the schema, including its source from add_support_email or get_setup_status. The description does not add any new parameter-level detail, which is acceptable given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific action (send a test email), target (the mailbox's support address), and goal (check that it forwards to Aide). This clearly separates it from setup siblings like add_support_email and points to get_setup_status for the verification check.
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 context in which to use it: to verify forwarding after setup, then check status after a minute. It does not explicitly state when not to use it or contrast it with add_support_email, but the intended workflow is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_inbox_aiLet an agent answer an inboxADestructiveInspect
Turn on AI replies on an inbox (a support mailbox, a Gmail or helpdesk inbox) by assigning it to this AI agent, replacing the agent that answered it before. While the agent is deployed, it answers that inbox's customers (or drafts replies, where the inbox's replies is draft). Confirm with the user first. Answers ai_unavailable for an inbox Aide can't answer (answerable: false). Returns the inbox.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | The agent id, from list_agents. | |
| entryPointId | Yes | The inbox id, from list_agent_channels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: it discloses the destructive detail that the previously assigned agent is replaced, that replies are drafted rather than sent when the inbox's `replies` is `draft`, the failure mode `ai_unavailable`, and that the inbox is returned. These are concrete side effects an agent needs before invoking a destructive write.
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 action and packs genuine information into each clause — replacement behavior, draft mode, user confirmation, error code, return value — with little filler. The middle sentence is dense but 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, open-world mutation with no output schema and fully documented params, the description covers side effects, the confirmation requirement, an error case, and the return value. Minor gaps remain (permission requirements, effect on in-flight conversations), 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 required params are already documented (agentId from list_agents, entryPointId from list_agent_channels). The description adds no syntax, format, or source detail 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 (turn on AI replies) and resource (inbox), and pins down the exact mechanism: assigning the inbox to this agent and replacing whoever answered it before. An agent can distinguish this from deploy_agent or pause_agent 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?
Gives a clear precondition ("Confirm with the user first") and an outcome rule for the case where the inbox can't be answered (ai_unavailable / answerable: false). It never explicitly names alternative tools such as deploy_agent or pause_agent, 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.
set_up_helpdeskSet up Aide in a helpdeskAInspect
Choose where Aide's drafts appear in a connected helpdesk (Zendesk, Front or Gorgias): as an internal note, on Aide's card in the ticket sidebar, or both. Connecting already turns drafts on with the note and the card (the note alone when the connection can't take the card); use this to change that, or to turn drafts on when get_setup_status asks for it. Deploys an agent on the helpdesk's inboxes no other agent answers; nothing is sent to customers. Returns the connection's inboxes.
| Name | Required | Description | Default |
|---|---|---|---|
| drafts | Yes | Where Aide's drafts appear, `{ note, sidebar }`, each true or false; at least one true. | |
| connectionId | Yes | The helpdesk connection's id, from get_setup_status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses a significant side effect: it deploys an agent on helpdesk inboxes that no other agent answers. It also reassures that nothing is sent to customers and states what the call returns, which is valuable behavioral context for a non-read-only, open-world mutation.
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 front-loaded with the core action and then adds only high-value context: default behavior, when to use it, the deployment side effect, and the return value. Every sentence earns its place, including the parenthetical detail about connections that cannot take the card.
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 covers the return value by stating that it returns the connection's inboxes. Together with the disclosed side effect and the clear usage conditions, an agent has enough context to invoke this nested-parameter mutation 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 already 100%, so the schema carries the formal parameter documentation. The description still adds useful meaning by mapping the `note` and `sidebar` booleans to concrete outcomes: an internal note, Aide's card in the ticket sidebar, or both.
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 configuration action: choosing where Aide's drafts appear in a connected helpdesk, with the concrete options (internal note, sidebar card, or both). It also distinguishes the tool from the initial connection flow by explaining that connecting already enables drafts by default and this tool is for changing that behavior.
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 says when to use this tool: to change the default draft placement or to turn drafts on when get_setup_status asks for it. It also clarifies the when-not condition by noting that connecting already turns drafts on, so the agent does not need this tool merely to establish the initial draft behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_agentTest an AI agentAInspect
Ask an AI agent a question as a customer would, in a private preview no customer sees, whether or not it is deployed, and wait (up to about 25 seconds) for its answer. It never deploys the agent. With pending: true, read the answer with list_messages after a few seconds; don't ask again. When stillLearning is set, Aide is still reading the website and found nothing yet: tell the user, ask them meanwhile for the facts customers ask most and save each with add_knowledge_article, and test again after the minutes it gives. When sources is empty otherwise, the agent found nothing to answer from: add it with add_knowledge_article and test again. Show the user the reply; ask follow-ups with continue_agent_test.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The customer's message. | |
| agentId | Yes | The agent id, from list_agents. | |
| customer | No | Test as an identified shopper, as the widget would identify them: `{ name, email, attributes }`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reply | Yes | |
| pending | Yes | |
| sources | Yes | |
| handedOver | Yes | |
| stillLearning | Yes | |
| conversationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses the ~25 second wait, that the run is a private preview invisible to customers, and that it never deploys the agent — exactly the side-effect context an agent needs. The one flaw is the reference to 'pending: true', a parameter that does not exist in this tool's schema, which could mislead an agent trying to set it.
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?
Purpose, timeout, and no-deploy guarantee are front-loaded, and the subsequent sentences are conditional routing rules that each earn their place. It runs long, but the density of actionable branches justifies most of the length.
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 an output schema present, the description needn't explain return shape, yet it helpfully interprets the two response states (stillLearning, empty sources) and prescribes recovery. The stale 'pending' parameter reference is the only incompleteness against the actual 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 the customer object is fully described in the schema, so the schema carries the parameter burden. The description adds only the framing of `text` as 'the customer's message' and does not explain agentId sourcing beyond what the schema says (from list_agents).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb, resource, and execution context: ask an AI agent a question as a customer would, in a private preview, deployed or not. It explicitly separates itself from deploy_agent ('never deploys') and from continue_agent_test ('ask follow-ups with continue_agent_test').
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 when-to-use branches: poll with list_messages when pending is true and do not re-ask; if stillLearning is set, collect facts via add_knowledge_article and retest after the stated minutes; if sources is empty, add knowledge and retest. It also names the follow-up tool (continue_agent_test) rather than leaving continuation implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unpublish_knowledge_documentUnpublish a knowledge documentAInspect
Turn a published article back into a draft: Aide Chat's public help section hides it and Aide stops answering from it. Snippets can't be unpublished; to keep any document out of answers, set usedByAide to false with update_knowledge_article. Returns the document.
| Name | Required | Description | Default |
|---|---|---|---|
| documentId | Yes | The knowledge document id, from list_knowledge_documents or search_knowledge. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say this is a non-read-only, non-destructive, open-world write; the description adds the real behavioral consequences (document hidden from public help section, Aide stops citing it) and notes it returns the document. It doesn't state reversibility (i.e., that publish_knowledge_document can undo it) or any permission requirements, so it stops just short of full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler: effect first, restriction and alternative second, return value last. Every sentence carries information an agent 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 low-complexity single-parameter mutation with no output schema and light annotations, the definition covers effect, exclusion, alternative, and return value. Only the reversibility path (republish) and permission expectations are missing, which are minor gaps 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?
The single parameter has 100% schema description coverage, including provenance hints ('from list_knowledge_documents or search_knowledge'), so the schema already carries the semantics. The description adds nothing about the id format or validity, making the baseline score 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 ('Turn a published article back into a draft') and spells out the concrete effect on both the public help section and Aide's answers. An agent can distinguish this from publish_knowledge_document and update_knowledge_article 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?
Explicitly excludes an unsupported case ('Snippets can't be unpublished') and names the alternative action with its parameter ('set `usedByAide` to false with update_knowledge_article') for keeping a document out of answers. This is a clear when/when-not/alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_agentUpdate an AI agentADestructiveInspect
Change how an AI agent answers. Only the fields given change; instructions and lists replace the previous ones, so start from get_agent's. A deployed agent uses the new settings at once. Returns the agent; suggest test_agent next.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The name customers see. | |
| model | No | `fast` answers sooner on a lighter model; null for the default. | |
| agentId | Yes | The agent id, from list_agents. | |
| greeting | No | The first chat message visitors see. | |
| teamName | No | The team the agent signs as, such as `Acme Support`. | |
| signature | No | The sign-off on email replies. | |
| description | No | A note for teammates on what the agent is for. | |
| instructions | No | How it answers, in plain words: tone, policies, what to hand to a person. | |
| botIdentifier | No | What it calls itself when asked, such as `AI agent`. | |
| usePastTickets | No | Draw on how the team answered past conversations. | |
| collectedFields | No | Custom fields to collect in chat, in order (list_custom_fields ids). | |
| suggestedActions | No | Chat buttons visitors can tap. | |
| knowledgeSetNames | No | Knowledge source names (list_knowledge_sources); empty for all. | |
| contactInformation | No | How customers reach a person, for when the agent hands over. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantive behavior beyond the destructiveHint annotation: partial-update semantics (only given fields change), replace-not-merge semantics for instructions and lists, and immediate effect on a deployed agent. The replacement warning is exactly the risk an agent needs flagged before a destructive write.
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, each carrying distinct information: purpose, partial-update rule, propagation timing, and next step. Nothing is redundant and the key constraint 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?
For a 14-parameter destructive mutation with no output schema, the description covers return value (the updated agent), overwrite hazards, and immediate deployment effect. No output schema explanation is needed since it states the return.
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 field meanings are already documented and the baseline is 3. The description earns above baseline by explaining that instructions and list-valued fields overwrite rather than merge — semantics the schema does not encode — though it doesn't name which parameters are the list-valued ones.
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?
"Change how an AI agent answers" gives a specific verb and resource, and the mention of get_agent/test_agent situates it among siblings. Slightly narrow framing — the tool also edits name, description, and teamName, not just answering behavior — but an agent can still identify it immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly says to start from get_agent's current values and to follow up with test_agent, which is real workflow routing. It does not address when-not-to-use cases (e.g., deploy_agent for deployment, or pause_agent for disabling), so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_conversationUpdate a conversationADestructiveInspect
Change a conversation's status, priority, assignee, team or custom fields, as the signed-in teammate; only the fields given change. Closing it may send the customer a satisfaction survey when the workspace's CSAT settings ask for one. It can't snooze: the only tool that snoozes is reply_to_conversation, and only while it sends the customer a reply. Returns the updated conversation.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | The new status. `on_hold` takes an onHoldReason; `snoozed` needs a time, which this tool does not take. | |
| teamId | No | A team id from list_members, or null for no team. | |
| priority | No | The new priority. | |
| assigneeId | No | A teammate id from list_members, or null to unassign. | |
| fieldValues | No | Custom field values as { key, value }; a null value clears one. | |
| onHoldReason | No | Why the conversation is on hold, with status `on_hold`. | |
| conversationId | Yes | The Aide conversation id (`cnv_…`), from find_conversation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true; the description goes beyond them by disclosing the CSAT survey side effect on closing, the partial-update merge semantics, and that the updated conversation is returned. It still doesn't say whether a close is reversible or what permissions are required, 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?
Three short sentences, front-loaded with the action and scope, followed by the riskiest side effect disclosure and the return value. No filler, and the snooze clause is compact despite doing real disambiguation work.
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 updated conversation' line is necessary and present, and the mutation's side effect is disclosed. For a destructive 7-parameter mutation it could still say more about reversibility and failure behavior, but an agent has enough to call 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 description coverage is 100%, so every parameter is already documented, including the snoozed/onHoldReason caveat. The description's field list and snooze remark largely restate the schema; only the 'only the fields given change' merge rule adds semantics 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 concrete verb ('Change') with the exact mutable fields (status, priority, assignee, team, custom fields) and the acting identity (signed-in teammate). It also names the sibling that owns the one capability it lacks (reply_to_conversation for snoozing), so the agent can tell it apart 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?
The partial-update rule ('only the fields given change') and the explicit snooze exclusion give clear conditions for use and non-use, with the alternative named. What's missing is guidance on when to prefer this over reply_to_conversation for status changes that accompany a reply, or any prerequisite such as fetching the conversation first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_knowledge_articleUpdate a knowledge articleADestructiveInspect
Change a knowledge document's title, body, slug or collection, star it, turn an article into a snippet or back, or keep it out of Aide's answers; once published, Aide answers from the new text at once and, for an article, Aide Chat's public help section shows it. The body replaces the previous one, so start from get_knowledge_document's and change only what is wrong or missing. Returns the document.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | `snippet` to make an article internal (never shown to customers), `article` to make a snippet a draft article. | |
| slug | No | Its new help center address, lowercase words joined by `-`. | |
| title | No | The new title. | |
| bodyHtml | No | The whole new body, as simple HTML (`<p>`, `<ul>`, `<a>`…). | |
| isStarred | No | True to star it, false to unstar it. | |
| documentId | Yes | The knowledge document id, from list_knowledge_documents or search_knowledge. | |
| usedByAide | No | False to keep it out of Aide’s answers (a published article still shows in the help section); true to use it again. | |
| collectionId | No | The collection to file it in, or null for none. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint=true annotation, it discloses the key consequence: the body replaces the previous one entirely. It also states the downstream effects — published text is used by Aide answers immediately and appears in Aide Chat's public help section — and clarifies that usedByAide=false still leaves a published article visible in the help section.
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 operational scope is front-loaded in the first sentence, followed by a replacement warning and a return-value note. The opening sentence is dense with comma-separated clauses, but every sentence 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 an 8-parameter mutation tool with no output schema, the description covers the destructive replacement behavior, the immediate downstream effects, the read-before-write guidance, and the return value ('Returns the document'). Nothing essential to 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%, so the schema already documents every parameter including kind, usedByAide, isStarred, and collectionId. The description's prose mapping of these options to their effects adds only marginal meaning 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?
The description names specific verbs and resources: change title/body/slug/collection, star, convert between article and snippet, and exclude from Aide answers. It is clearly distinguishable from siblings like add_knowledge_article, publish_knowledge_document, and get_knowledge_document.
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 directs the agent to start from get_knowledge_document's body and change only what is wrong or missing, which is a concrete workflow instruction tied to a sibling tool. It does not, however, contrast itself against publish_knowledge_document or explain when a publish step is separately required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_support_email_settingsChange a mailbox's reply settingsADestructiveInspect
Change who gets sent replies on a support mailbox and its quiet period; only the fields given change. A wider rollout emails Aide's replies to those customers from then on, and sent emails can't be recalled.
| Name | Required | Description | Default |
|---|---|---|---|
| reset | No | Setting paths to clear, so they go back to the default. | |
| rollout | No | Who gets sent replies: `shadow` (nobody), `test_senders` (`testSenders`), `percentage` or `everyone`. | |
| mailboxId | Yes | The mailbox id, from add_support_email or get_setup_status. | |
| quietPeriodSeconds | No | Seconds to wait for more customer messages before answering (0 to 600). |
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 real substance: a wider rollout causes Aide to email customers 'from then on' (clarifying non-retroactivity) and 'sent emails can't be recalled' spells out the concrete irreversibility behind the destructive hint. It omits permission requirements and whether changes can be rolled back by resetting.
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 no filler; the resource and partial-update rule come first, followed by the risk warning. Every clause carries information an agent 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 destructive mutation tool with a nested rollout object and no output schema, the description covers the main risk and the patch semantics, which is what an agent needs before calling it. It leaves out permissions and return behavior, but the schema carries the field-level 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 description coverage is 100%, and the schema already documents rollout modes, quietPeriodSeconds bounds, and reset paths in detail, so the baseline of 3 applies. The description only references 'quiet period' and rollout at a high level and never mentions the reset parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: changing who receives replies on a support mailbox plus its quiet period, and clarifies the partial-update semantics with 'only the fields given change.' It is clearly distinguishable from read-oriented siblings like get_support_email_settings, 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 the mutation verb and the note that unspecified fields are preserved, but there is no explicit statement of when to use this versus get_support_email_settings (to inspect current values) or set_inbox_ai. 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.
update_workspaceUpdate the workspaceADestructiveInspect
Save the onboarding answers (the profile setup step); only the fields given change. Once the workspace has a name, a website or noWebsite, a channel and a use, onboarding is complete, as in the dashboard. Aide uses the answers in replies. A first website is imported as knowledge unless the workspace already has knowledge besides products, so add_website is not needed for it. Returns the workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The company's name, as customers know it. | |
| uses | No | What Aide should do: `helpdesk` (the team answers from Aide), `ai_agent` (answer customers), `human_copilot` (draft replies for the team) or `other` (with otherUse); send with toolsUsed. | |
| stage | No | The dashboard's onboarding step reached; only moves forward. | |
| website | No | A full URL, such as `https://example.com`. | |
| channels | No | Where customers contact it: `website_chat` (the Aide chat widget), `email` or `other` (with otherChannel); replaces the list. | |
| industry | No | The company's industry, when the user says it. | |
| otherUse | No | With uses `other`: what else Aide should do. | |
| teamSize | No | People answering support, in the user's words. | |
| completed | No | `true` ends onboarding. | |
| noWebsite | No | `true` when the company has no website. | |
| toolsUsed | No | Tools the company uses today; send with uses. | |
| contactEmail | No | The user's work email, when get_setup_status asks for one. | |
| otherChannel | No | With channels `other`: which channel. | |
| ticketsPerMonth | No | Tickets a month, in the user's words. | |
| dismissedActions | No | Dashboard reminder slugs to hide for good, such as `home-checklist`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and openWorldHint=true; the description adds real context beyond them by disclosing a non-obvious side effect — the first website is imported as knowledge unless the workspace already has knowledge besides products — and by clarifying that only supplied fields mutate. It does not explain what the destructive risk actually is (e.g., that list fields are replaced wholesale, which is only visible in the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the action and the mutation contract, and each subsequent sentence adds a distinct fact (completion criteria, downstream use of answers, website import shortcut, return value). The prose is dense and could be broken into shorter clauses, but nothing is 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?
For a 15-parameter, optional-all mutation with no output schema, the description covers the mutation model, the completion goal, the notable side effect, and the return value ("Returns the workspace"). Remaining gaps — such as the monotonic `stage` behavior and wholesale replacement of `channels` — are documented in the schema, so the definition is adequately complete overall.
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 3 baseline applies, but the description goes further by explaining cross-parameter completion rules and the partial-patch contract that no single property description conveys. Per-field meaning (enums, formats, lengths) is left entirely to the schema, which 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 opens with a specific verb and resource — "Save the onboarding answers (the `profile` setup step)" — and adds partial-update semantics ("only the fields given change"). It also distinguishes itself from add_website for the first-website case, though it does not contrast itself with other update tools such as update_agent or set_up_helpdesk.
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 completion condition clearly (name, website or noWebsite, a channel, and a use) and tells the agent that add_website is not needed when the first website is provided here. It lacks an explicit "do not use when..." clause or a named alternative for later website additions, but the routing guidance is concrete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_email_domainVerify a mailbox's domainBInspect
Check the DNS records that let Aide send a mailbox's replies from its own domain. Returns the mailbox with the domain's status and the records to add.
| Name | Required | Description | Default |
|---|---|---|---|
| mailboxId | Yes | The mailbox id, from add_support_email or get_setup_status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds useful context beyond annotations: it performs an external DNS lookup (consistent with openWorldHint) and returns records the user must add. However, 'Check' reads as read-only while readOnlyHint=false implies it may persist state/status; the description does not clarify that the mailbox status is written, and says nothing about failure cases or propagation delay.
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 no filler: the purpose leads and the return shape follows. Nothing is repeated from the title and every sentence carries 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?
There is no output schema, and the description only partially covers returns ('the mailbox with the domain's status and the records to add') without indicating status values, record format, or what happens on lookup failure. Adequate for a one-parameter tool, but leaves real gaps an agent would hit when interpreting results.
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 mailboxId parameter is fully documented (including its source from add_support_email or get_setup_status). The description adds no further meaning 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 ('Check the DNS records') and resource (a mailbox's domain / sending domain), and clarifies the goal is enabling replies to be sent from the mailbox's own domain. It is distinguishable from nearby tools like send_forwarding_test or get_setup_status, 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 only implied: 'the records to add' suggests this belongs to the email setup flow, but there is no explicit when-to-call guidance, no prerequisites (e.g. call after add_support_email), and no mention of alternatives or how often to re-check.
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
update_workspace1 field changed- changed
Input schema / properties / channels / items / enumPrevious value: -[ - "website_chat", - "email", - "other" -]New value: +[ + "website_chat", + "email", + "whatsapp", + "messenger", + "instagram", + "other" +]
1 tool update
- Changed
list_knowledge_gaps2 fields changed- changed
Input schema / properties / kind / enumPrevious value: -[ - "topic_create", - "topic_merge", - "topic_split", - "topic_examples", - "scenario_create", - "scenario_edit", - "template_create", - "routing_rule_create", - "field_create", - "knowledge_create", - "knowledge_edit", - "instruction_edit", - "threshold_change", - "tool_request", - "ai_level_change", - "view_create", - "sla_change" -]New value: +[ + "topic_create", + "topic_merge", + "topic_split", + "topic_examples", + "scenario_create", + "scenario_edit", + "template_create", + "routing_rule_create", + "field_create", + "knowledge_create", + "knowledge_edit", + "instruction_edit", + "threshold_change", + "tool_request", + "ai_level_change", + "view_create", + "sla_change", + "style_edit" +] - changed
Input schema / properties / status / enumPrevious value: -[ - "open", - "applied", - "dismissed", - "snoozed", - "superseded", - "resolved" -]New value: +[ + "open", + "applied", + "dismissed", + "snoozed", + "superseded", + "resolved", + "reverted" +]
1 tool update
- Changed
list_operations1 field changed- changed
Input schema / properties / area / descriptionPrevious value: -"The area: `topics` (Read, create, edit and delete topics, their categories and training examples; accept or dismiss suggested topics); `knowledge` (Move and delete articles; help center collections; business facts; product pairings; rename, narrow or delete knowledge sources; policy questions); `analytics` (Conversation counts, the support report (resolution, handoffs, response times, CSAT, sales), customer satisfaction with comments, and which knowledge answered); `agents` (Instructions agents follow in every conversation (list, add, edit, delete, reorder), handoff messages and reasons, Copilot drafting settings, and taking an inbox away from the AI agent); `channels` (A connection's details, inboxes and disconnecting it, reply settings and rollout, helpdesk extras (AI agent rule, sidebar, agent links, Salesforce sync, activity and retries), the support mailbox list, and the chat widget's settings); `helpdesk` (Inbox, CSAT and sender settings, routing and sender rules, SLA policies, schedules and holidays, custom fields and saved views); `scenarios` (Procedures: create, edit and delete them, save a draft and set it live, versions, check a When to use on recent conversations, Only if condition values, estimate and preview, run on existing conversations, list fields for collect steps; read, fill, create, edit and delete macros); `conversations` (Act on conversations: reply, notes, status, priority, assignee or team (also in bulk), take over or hand back, CSAT, macros, Copilot, draft feedback; order refunds, cancels, address, items, reships, returns and holds); `team` (Teammates, teams and invitations: roles, team membership, invite, resend or revoke, remove a teammate, transfer ownership); `billing` (The billing summary, plans, ending the trial, cancelling or keeping the subscription, the Stripe billing portal and AI usage)."New value: +"The area: `topics` (Read, create, edit and delete topics, their categories, training examples and near misses; accept or dismiss suggested topics); `knowledge` (Move and delete articles; help center collections; business facts; product pairings; rename, narrow or delete knowledge sources; policy questions); `analytics` (Conversation counts, the support report (resolution, handoffs, response times, CSAT, sales), customer satisfaction with comments, and which knowledge answered); `agents` (Instructions agents follow in every conversation (list, add, edit, delete, reorder), handoff messages and reasons, Copilot drafting settings, and taking an inbox away from the AI agent); `channels` (A connection's details, inboxes and disconnecting it, reply settings and rollout, helpdesk extras (AI agent rule, sidebar, agent links, Salesforce sync, activity and retries), the support mailbox list, and the chat widget's settings); `helpdesk` (Inbox, CSAT and sender settings, routing and sender rules, SLA policies, schedules and holidays, custom fields and saved views); `scenarios` (Procedures: create, edit and delete them, save a draft and set it live, versions, check a When to use on recent conversations, Only if condition values, estimate and preview, run on existing conversations, list fields for collect steps; read, fill, create, edit and delete macros); `conversations` (Act on conversations: reply, notes, status, priority, assignee or team (also in bulk), take over or hand back, CSAT, macros, Copilot, draft feedback; order refunds, cancels, address, items, reships, returns and holds); `team` (Teammates, teams and invitations: roles, team membership, invite, resend or revoke, remove a teammate, transfer ownership); `billing` (The billing summary, plans, ending the trial, cancelling or keeping the subscription, the Stripe billing portal and AI usage)."
6 tool updates
- Changed
change_plan1 field changed- changed
Input schema / properties / returnTo / enumPrevious value: -[ - "home", - "billing", - "setup_gorgias", - "setup_zendesk", - "setup_front", - "integration_front", - "integration_zendesk", - "integration_gmail", - "integration_gorgias", - "integration_shopify", - "integration_woocommerce", - "integration_arlo", - "integration_salesforce", - "integration_whatsapp", - "integration_facebook", - "integration_instagram", - "integration_slack" -]New value: +[ + "home", + "billing", + "setup_gorgias", + "setup_zendesk", + "setup_front", + "integration_front", + "integration_zendesk", + "integration_gmail", + "integration_gorgias", + "integration_shopify", + "integration_woocommerce", + "integration_arlo", + "integration_salesforce", + "integration_whatsapp", + "integration_facebook", + "integration_instagram", + "integration_slack", + "integration_posthog" +]
- Added
get_procedure - Removed
get_scenario - Changed
list_operations1 field changed- changed
Input schema / properties / area / descriptionPrevious value: -"The area: `topics` (Read, create, edit and delete topics, their categories and training examples; accept or dismiss suggested topics); `knowledge` (Move and delete articles; help center collections; business facts; product pairings; rename, narrow or delete knowledge sources; policy questions); `analytics` (Conversation counts, the support report (resolution, handoffs, response times, CSAT, sales), customer satisfaction with comments, and which knowledge answered); `agents` (Handoff messages and reasons, Copilot drafting settings, and taking an inbox away from the AI agent); `channels` (A connection's details, inboxes and disconnecting it, reply settings and rollout, helpdesk extras (AI agent rule, sidebar, agent links, Salesforce sync, activity and retries), the support mailbox list, and the chat widget's settings); `helpdesk` (Inbox, CSAT and sender settings, routing and sender rules, SLA policies, schedules and holidays, custom fields and saved views); `scenarios` (Create, edit, delete, estimate and preview scenarios, their condition values, run them on existing conversations, list fields for COLLECT_FIELD; read, fill, create, edit and delete macros); `conversations` (Act on conversations: reply, notes, status, priority, assignee or team (also in bulk), take over or hand back, CSAT, macros, Copilot, draft feedback; order refunds, cancels, address, items, reships, returns and holds); `team` (Teammates, teams and invitations: roles, team membership, invite, resend or revoke, remove a teammate, transfer ownership); `billing` (The billing summary, plans, ending the trial, cancelling or keeping the subscription, the Stripe billing portal and AI usage)."New value: +"The area: `topics` (Read, create, edit and delete topics, their categories and training examples; accept or dismiss suggested topics); `knowledge` (Move and delete articles; help center collections; business facts; product pairings; rename, narrow or delete knowledge sources; policy questions); `analytics` (Conversation counts, the support report (resolution, handoffs, response times, CSAT, sales), customer satisfaction with comments, and which knowledge answered); `agents` (Instructions agents follow in every conversation (list, add, edit, delete, reorder), handoff messages and reasons, Copilot drafting settings, and taking an inbox away from the AI agent); `channels` (A connection's details, inboxes and disconnecting it, reply settings and rollout, helpdesk extras (AI agent rule, sidebar, agent links, Salesforce sync, activity and retries), the support mailbox list, and the chat widget's settings); `helpdesk` (Inbox, CSAT and sender settings, routing and sender rules, SLA policies, schedules and holidays, custom fields and saved views); `scenarios` (Procedures: create, edit and delete them, save a draft and set it live, versions, check a When to use on recent conversations, Only if condition values, estimate and preview, run on existing conversations, list fields for collect steps; read, fill, create, edit and delete macros); `conversations` (Act on conversations: reply, notes, status, priority, assignee or team (also in bulk), take over or hand back, CSAT, macros, Copilot, draft feedback; order refunds, cancels, address, items, reships, returns and holds); `team` (Teammates, teams and invitations: roles, team membership, invite, resend or revoke, remove a teammate, transfer ownership); `billing` (The billing summary, plans, ending the trial, cancelling or keeping the subscription, the Stripe billing portal and AI usage)."
- Added
list_procedures - Removed
list_scenarios
5 tool updates
- Changed
add_knowledge_article3 fields changed- changed
Input schema / properties / draft / descriptionPrevious value: -"True to save it as a draft Aide does not answer from yet."New value: +"True to save an article as a draft Aide does not answer from yet. Not for snippets." - added
Input schema / properties / kindAdded value: +{ + "description": "`article` (the default) for the help center, or `snippet` for an internal note customers never see.", + "enum": [ + "article", + "snippet" + ], + "type": "string" +} - changed
Input schema / properties / slug / descriptionPrevious value: -"Its address in the help center, lowercase words joined by `-`; from the title when omitted."New value: +"Its address in the help center, lowercase words joined by `-`; from the title when omitted. Articles only."
- Changed
list_ai_app_changes1 field changed- changed
Input schema / properties / resourceType / enumPrevious value: -[ - "account", - "user", - "member", - "invitation", - "api_key", - "integration", - "subscription", - "webhook_endpoint", - "scenario", - "scenario_backfill", - "agent", - "topic", - "topic_category", - "topic_suggestion", - "macro", - "reply_template", - "helpdesk_settings", - "routing_rule", - "sender_rule", - "sla_policy", - "schedule", - "saved_view", - "custom_field", - "widget", - "email_mailbox", - "email_domain", - "knowledge_source", - "knowledge_collection", - "knowledge_document", - "knowledge_entity", - "product", - "order_action" -]New value: +[ + "account", + "user", + "member", + "invitation", + "api_key", + "integration", + "subscription", + "webhook_endpoint", + "scenario", + "scenario_backfill", + "agent", + "agent_instruction", + "topic", + "topic_category", + "topic_suggestion", + "macro", + "reply_template", + "helpdesk_settings", + "routing_rule", + "sender_rule", + "sla_policy", + "schedule", + "saved_view", + "custom_field", + "widget", + "email_mailbox", + "email_domain", + "knowledge_source", + "knowledge_collection", + "knowledge_document", + "knowledge_entity", + "product", + "order_action" +]
- Changed
list_knowledge_documents1 field changed- changed
Input schema / properties / kind / enumPrevious value: -[ - "article", - "product", - "macro", - "web_page", - "transcript" -]New value: +[ + "article", + "snippet", + "product", + "macro", + "web_page", + "transcript" +]
- Changed
update_agent1 field changed- changed
Input schema / properties / instructions / maxLengthPrevious value: -20000New value: +6000
- Changed
update_knowledge_article2 fields changed- added
Input schema / properties / kindAdded value: +{ + "description": "`snippet` to make an article internal (never shown to customers), `article` to make a snippet a draft article.", + "enum": [ + "article", + "snippet" + ], + "type": "string" +} - added
Input schema / properties / usedByAideAdded value: +{ + "description": "False to keep it out of Aide’s answers (a published article still shows in the help section); true to use it again.", + "type": "boolean" +}
3 tool updates
- Added
get_connection - Added
list_ai_app_changes - Added
send_feedback
37 tool updates
- Changed
add_knowledge_article4 fields changed- added
Input schema / properties / collectionIdAdded value: +{ + "description": "The help center collection to file it in (list_knowledge_collections).", + "maxLength": 64, + "minLength": 1, + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / draftAdded value: +{ + "description": "True to save it as a draft Aide does not answer from yet.", + "type": "boolean" +} - added
Input schema / properties / slugAdded value: +{ + "description": "Its address in the help center, lowercase words joined by `-`; from the title when omitted.", + "maxLength": 200, + "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", + "type": "string" +} - added
Input schema / properties / sourceIdAdded value: +{ + "description": "An articles source (list_knowledge_sources); the workspace's articles when omitted.", + "maxLength": 64, + "minLength": 1, + "type": "string" +}
- Changed
add_note1 field changed- added
Input schema / properties / mentionsAdded value: +{ + "description": "Teammate ids from list_members to notify.", + "items": { + "maxLength": 64, + "type": "string" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true +}
- Changed
add_website2 fields changed- added
Input schema / properties / excludePathsAdded value: +{ + "description": "Path prefixes not to import, such as `/blog`.", + "items": { + "maxLength": 200, + "pattern": "^\\/[^/\\s?#][^\\s?#]*$", + "type": "string" + }, + "maxItems": 50, + "type": "array" +} - added
Input schema / properties / nameAdded value: +{ + "description": "A name for the source; the site address when omitted.", + "maxLength": 255, + "minLength": 1, + "type": "string" +}
- Removed
analytics_overview - Removed
analytics_satisfaction - Removed
analytics_summary - Added
change_plan - Changed
connect_integration2 fields changed- changed
Input schema / properties / slug / descriptionPrevious value: -"`gmail`, `shopify`, `zendesk`, `front` or `gorgias`."New value: +"The service to connect." - added
Input schema / properties / slug / enumAdded value: +[ + "gmail", + "shopify", + "zendesk", + "front", + "gorgias" +]
- Added
dismiss_knowledge_gap - Changed
find_conversation17 fields changed- changed
Input schema / properties / assignee / descriptionPrevious value: -"Only conversations assigned to one of these: teammate ids (from list_members), `me`, `aide` (Aide is answering), `none` or `mentioned` (a note mentions me)."New value: +"Teammate ids (list_members), `me`, `aide` (Aide is answering), `none` or `mentioned` (a note mentions me)." - changed
Input schema / properties / channel / descriptionPrevious value: -"Only conversations on these channels, such as `zendesk`, `front`, `gorgias`, `gmail` or `chat`."New value: +"Channels such as `zendesk`, `front`, `gorgias`, `gmail` or `chat`." - changed
Input schema / properties / createdAfter / descriptionPrevious value: -"Only conversations created at or after this time (ISO 8601)."New value: +"Created at or after this time." - changed
Input schema / properties / createdBefore / descriptionPrevious value: -"Only conversations created before this time (ISO 8601)."New value: +"Created before this time." - changed
Input schema / properties / cursor / descriptionPrevious value: -"The previous page's `metadata.nextCursor`, to read the next page in the same sort and filters."New value: +"The previous page's `metadata.nextCursor`." - changed
Input schema / properties / externalId / descriptionPrevious value: -"The helpdesk's id for the conversation (a Zendesk ticket id, a Front `cnv_…`), exact match."New value: +"A Zendesk ticket id, a Front `cnv_…` or another helpdesk id, exact match." - changed
Input schema / properties / handoffState / descriptionPrevious value: -"Only conversations in one of these handoff states (`aide_handling`, `handoff_requested`, `person_handling`, `returned_to_aide`)."New value: +"Any of these handoff states." - changed
Input schema / properties / perPage / descriptionPrevious value: -"Conversations per page (at most 100)."New value: +"At most 100." - changed
Input schema / properties / priority / descriptionPrevious value: -"Only conversations with one of these priorities."New value: +"Any of these priorities." - changed
Input schema / properties / q / descriptionPrevious value: -"Keywords: matches the subject, the requester's name or email, or a conversation's Aide or helpdesk id."New value: +"Matches the subject, the requester's name or email, or an Aide or helpdesk id." - changed
Input schema / properties / resolvedBy / descriptionPrevious value: -"Only conversations resolved by Aide (`aide`) or by a teammate (`person`)."New value: +"Resolved by Aide or by a teammate (`person`)." - changed
Input schema / properties / scenario / descriptionPrevious value: -"Only conversations one of these scenarios (scenario ids) ran on."New value: +"Ids of scenarios that ran on it." - changed
Input schema / properties / sort / descriptionPrevious value: -"The order: `newest` (latest activity, the default), `oldest`, `waiting_longest`, `priority` or `sla_due`."New value: +"`newest` activity first by default." - changed
Input schema / properties / status / descriptionPrevious value: -"Only conversations with one of these statuses."New value: +"Any of these statuses." - changed
Input schema / properties / team / descriptionPrevious value: -"Only conversations of one of these teams (team ids from list_members), or `none`."New value: +"Team ids (list_members) or `none`." - changed
Input schema / properties / topic / descriptionPrevious value: -"Only conversations with one of these topics (ids from list_topics), or `any` / `none`."New value: +"Topic ids (list_topics), `any` or `none`." - changed
Input schema / properties / view / descriptionPrevious value: -"Only conversations in this inbox view: `needs_a_person`, `mine`, `unassigned`, `waiting`, `on_hold`, `closed`, `handled_by_aide`, `resolved_by_aide`, `handoffs`, `team:<team id>` or a saved view id."New value: +"An inbox view: `needs_a_person`, `mine`, `unassigned`, `waiting`, `on_hold`, `closed`, `handled_by_aide`, `resolved_by_aide`, `handoffs`, `team:<team id>` or a saved view id."
- Removed
get_chat_widget_install - Removed
get_macro - Added
get_scenario - Added
get_support_email_settings - Added
list_integrations - Changed
list_knowledge_documents2 fields changed- added
Input schema / properties / collectionIdAdded value: +{ + "description": "Only documents in this collection (an id from list_knowledge_collections).", + "maxLength": 64, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / starredAdded value: +{ + "description": "Only starred (true) or unstarred (false) documents.", + "type": "boolean" +}
- Added
list_knowledge_gaps - Removed
list_macros - Added
list_operations - Changed
list_products2 fields changed- added
Input schema / properties / integrationIdAdded value: +{ + "description": "Only products of this store connection.", + "maxLength": 64, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / sourceIdAdded value: +{ + "description": "Only products of this `products` knowledge source.", + "maxLength": 64, + "minLength": 1, + "type": "string" +}
- Added
list_scenarios - Added
mark_knowledge_gap_done - Added
publish_knowledge_document - Removed
render_macro - Added
run_create_operation - Added
run_delete_operation - Added
run_read_operation - Added
run_update_operation - Removed
start_trial - Changed
test_agent1 field changed- added
Input schema / properties / customerAdded value: +{ + "additionalProperties": false, + "description": "Test as an identified shopper, as the widget would identify them: `{ name, email, attributes }`.", + "properties": { + "attributes": { + "additionalProperties": { + "maxLength": 1000, + "type": "string" + }, + "maxProperties": 50, + "type": "object" + }, + "email": { + "format": "email", + "maxLength": 254, + "type": "string" + }, + "name": { + "maxLength": 120, + "type": "string" + } + }, + "required": [], + "type": "object" +}
- Added
unpublish_knowledge_document - Changed
update_agent7 fields changed- added
Input schema / properties / botIdentifierAdded value: +{ + "description": "What it calls itself when asked, such as `AI agent`.", + "maxLength": 60, + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / collectedFieldsAdded value: +{ + "description": "Custom fields to collect in chat, in order (list_custom_fields ids).", + "items": { + "additionalProperties": false, + "properties": { + "fieldId": { + "maxLength": 64, + "type": "string" + }, + "mode": { + "enum": [ + "extract", + "ask_if_missing", + "always_ask" + ], + "type": "string" + }, + "required": { + "type": "boolean" + } + }, + "required": [ + "fieldId" + ], + "type": "object" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true +} - changed
Input schema / properties / instructions / descriptionPrevious value: -"How the agent answers, in plain words (at most 20,000 characters)."New value: +"How it answers, in plain words: tone, policies, what to hand to a person." - added
Input schema / properties / knowledgeSetNamesAdded value: +{ + "description": "Knowledge source names (list_knowledge_sources); empty for all.", + "items": { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true +} - added
Input schema / properties / modelAdded value: +{ + "description": "`fast` answers sooner on a lighter model; null for the default.", + "enum": [ + "fast", + "standard", + null + ], + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / suggestedActionsAdded value: +{ + "description": "Chat buttons visitors can tap.", + "items": { + "additionalProperties": false, + "properties": { + "question": { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + "shortcut": { + "maxLength": 80, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "shortcut", + "question" + ], + "type": "object" + }, + "maxItems": 10, + "type": "array" +} - added
Input schema / properties / usePastTicketsAdded value: +{ + "description": "Draw on how the team answered past conversations.", + "type": "boolean" +}
- Changed
update_conversation1 field changed- added
Input schema / properties / fieldValuesAdded value: +{ + "description": "Custom field values as { key, value }; a null value clears one.", + "items": { + "additionalProperties": false, + "properties": { + "key": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "null" + }, + { + "items": { + "maxLength": 120, + "type": "string" + }, + "maxItems": 200, + "type": "array" + }, + { + "type": "boolean" + }, + { + "maxLength": 500, + "type": "string" + }, + { + "type": "number" + } + ], + "type": [ + "null", + "array", + "boolean", + "string", + "number" + ] + } + }, + "required": [ + "key", + "value" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" +}
- Added
update_knowledge_article - Added
update_support_email_settings - Changed
update_workspace12 fields changed- changed
Input schema / properties / channels / descriptionPrevious value: -"Where customers contact the company: `website_chat` (the Aide chat widget), `email` or `other` (with otherChannel); replaces the saved list."New value: +"Where customers contact it: `website_chat` (the Aide chat widget), `email` or `other` (with otherChannel); replaces the list." - added
Input schema / properties / completedAdded value: +{ + "description": "`true` ends onboarding.", + "type": "boolean" +} - changed
Input schema / properties / contactEmail / descriptionPrevious value: -"A work email for the user, asked when get_setup_status says they signed in with a personal address."New value: +"The user's work email, when get_setup_status asks for one." - added
Input schema / properties / dismissedActionsAdded value: +{ + "description": "Dashboard reminder slugs to hide for good, such as `home-checklist`.", + "items": { + "maxLength": 120, + "type": "string" + }, + "maxItems": 100, + "type": "array" +} - changed
Input schema / properties / industry / descriptionPrevious value: -"The company's industry, when the user says it; optional."New value: +"The company's industry, when the user says it." - changed
Input schema / properties / noWebsite / descriptionPrevious value: -"`true` when the company has no website, instead of website."New value: +"`true` when the company has no website." - added
Input schema / properties / stageAdded value: +{ + "description": "The dashboard's onboarding step reached; only moves forward.", + "maximum": 4, + "minimum": 0, + "type": "integer" +} - changed
Input schema / properties / teamSize / descriptionPrevious value: -"How many people answer support, in the user's words, such as `5`."New value: +"People answering support, in the user's words." - changed
Input schema / properties / ticketsPerMonth / descriptionPrevious value: -"Support tickets a month, in the user's words, such as `2,000`."New value: +"Tickets a month, in the user's words." - changed
Input schema / properties / toolsUsed / descriptionPrevious value: -"The tools the company uses today. Saved together with uses: send both."New value: +"Tools the company uses today; send with uses." - changed
Input schema / properties / uses / descriptionPrevious value: -"What Aide should do: `helpdesk` (be the inbox the team answers from), `ai_agent` (answer customers automatically), `human_copilot` (draft replies the team edits) or `other` (with otherUse). Saved together with toolsUsed: send both."New value: +"What Aide should do: `helpdesk` (the team answers from Aide), `ai_agent` (answer customers), `human_copilot` (draft replies for the team) or `other` (with otherUse); send with toolsUsed." - changed
Input schema / properties / website / descriptionPrevious value: -"The company's website, a full URL such as `https://example.com`."New value: +"A full URL, such as `https://example.com`."
- Added
verify_email_domain
4 tool updates
- Changed
continue_agent_test2 fields changed- added
Output schema / properties / stillLearningAdded value: +{ + "properties": { + "minutesLeft": { + "type": [ + "integer", + "null" + ] + }, + "pagesOutOf": { + "type": [ + "integer", + "null" + ] + }, + "pagesSoFar": { + "type": "integer" + }, + "site": { + "type": [ + "string", + "null" + ] + }, + "tellUser": { + "type": "string" + } + }, + "required": [ + "site", + "pagesSoFar", + "pagesOutOf", + "minutesLeft", + "tellUser" + ], + "type": [ + "object", + "null" + ] +} - changed
Output schema / requiredPrevious value: -[ - "conversationId", - "reply", - "handedOver", - "sources", - "pending" -]New value: +[ + "conversationId", + "reply", + "handedOver", + "sources", + "pending", + "stillLearning" +]
- Added
get_chat_page - Changed
start_trial1 field changed- changed
Input schema / properties / returnTo / descriptionPrevious value: -"The dashboard page Checkout returns to, such as `setup_zendesk` to continue connecting Zendesk."New value: +"The dashboard page Checkout returns to, such as `setup_zendesk` to continue setting up Zendesk."
- Changed
test_agent2 fields changed- added
Output schema / properties / stillLearningAdded value: +{ + "properties": { + "minutesLeft": { + "type": [ + "integer", + "null" + ] + }, + "pagesOutOf": { + "type": [ + "integer", + "null" + ] + }, + "pagesSoFar": { + "type": "integer" + }, + "site": { + "type": [ + "string", + "null" + ] + }, + "tellUser": { + "type": "string" + } + }, + "required": [ + "site", + "pagesSoFar", + "pagesOutOf", + "minutesLeft", + "tellUser" + ], + "type": [ + "object", + "null" + ] +} - changed
Output schema / requiredPrevious value: -[ - "conversationId", - "reply", - "handedOver", - "sources", - "pending" -]New value: +[ + "conversationId", + "reply", + "handedOver", + "sources", + "pending", + "stillLearning" +]
1 tool update
- Changed
connect_integration1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "tellUser": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "url", + "tellUser" + ], + "type": "object" +}
7 tool updates
- Changed
continue_agent_test1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "conversationId": { + "type": "string" + }, + "handedOver": { + "type": "boolean" + }, + "pending": { + "type": "boolean" + }, + "reply": { + "type": [ + "string", + "null" + ] + }, + "sources": { + "items": { + "properties": { + "title": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "title", + "url" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "conversationId", + "reply", + "handedOver", + "sources", + "pending" + ], + "type": "object" +}
- Changed
get_knowledge_source1 field changed- changed
Input schema / properties / sourceId / descriptionPrevious value: -"The knowledge source id, from add_website or list_knowledge_sources."New value: +"The knowledge source id, from add_website, list_knowledge_sources or get_setup_status."
- Added
get_support_email - Added
reimport_knowledge_source - Changed
send_forwarding_test1 field changed- changed
Input schema / properties / mailboxId / descriptionPrevious value: -"The mailbox id, from add_support_email."New value: +"The mailbox id, from add_support_email or get_setup_status."
- Added
set_up_helpdesk - Changed
test_agent1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "conversationId": { + "type": "string" + }, + "handedOver": { + "type": "boolean" + }, + "pending": { + "type": "boolean" + }, + "reply": { + "type": [ + "string", + "null" + ] + }, + "sources": { + "items": { + "properties": { + "title": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "title", + "url" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "conversationId", + "reply", + "handedOver", + "sources", + "pending" + ], + "type": "object" +}
2 tool updates
- Changed
find_conversation3 fields changed- added
Input schema / properties / handoffState / items / typeAdded value: +"string" - added
Input schema / properties / priority / items / typeAdded value: +"string" - added
Input schema / properties / status / items / typeAdded value: +"string"
- Changed
update_workspace9 fields changed- added
Input schema / properties / channelsAdded value: +{ + "description": "Where customers contact the company: `website_chat` (the Aide chat widget), `email` or `other` (with otherChannel); replaces the saved list.", + "items": { + "enum": [ + "website_chat", + "email", + "other" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": true +} - added
Input schema / properties / contactEmailAdded value: +{ + "description": "A work email for the user, asked when get_setup_status says they signed in with a personal address.", + "format": "email", + "maxLength": 254, + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / noWebsiteAdded value: +{ + "description": "`true` when the company has no website, instead of website.", + "type": "boolean" +} - added
Input schema / properties / otherChannelAdded value: +{ + "description": "With channels `other`: which channel.", + "maxLength": 200, + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / otherUseAdded value: +{ + "description": "With uses `other`: what else Aide should do.", + "maxLength": 114, + "type": "string" +} - added
Input schema / properties / teamSizeAdded value: +{ + "description": "How many people answer support, in the user's words, such as `5`.", + "maxLength": 40, + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / ticketsPerMonthAdded value: +{ + "description": "Support tickets a month, in the user's words, such as `2,000`.", + "maxLength": 40, + "type": [ + "string", + "null" + ] +} - added
Input schema / properties / toolsUsedAdded value: +{ + "description": "The tools the company uses today. Saved together with uses: send both.", + "items": { + "enum": [ + "gmail", + "gorgias", + "zendesk", + "front", + "shopify", + "woocommerce", + "salesforce" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": true +} - added
Input schema / properties / usesAdded value: +{ + "description": "What Aide should do: `helpdesk` (be the inbox the team answers from), `ai_agent` (answer customers automatically), `human_copilot` (draft replies the team edits) or `other` (with otherUse). Saved together with toolsUsed: send both.", + "items": { + "enum": [ + "helpdesk", + "ai_agent", + "human_copilot", + "other" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": true +}
19 tool updates
- Added
add_knowledge_article - Added
add_support_email - Added
add_website - Added
connect_integration - Added
continue_agent_test - Added
deploy_agent - Added
get_agent - Added
get_chat_widget_install - Added
get_knowledge_source - Added
get_setup_status - Added
list_agent_channels - Added
list_agents - Added
pause_agent - Added
send_forwarding_test - Added
set_inbox_ai - Added
start_trial - Added
test_agent - Added
update_agent - Added
update_workspace
11 tool updates
- Changed
analytics_overview1 field changed- added
Input schema / properties / channel / typeAdded value: +"string"
- Changed
analytics_satisfaction1 field changed- added
Input schema / properties / channel / typeAdded value: +"string"
- Changed
cancel_order9 fields changed- removed
Input schema / properties / notify / enumRemoved value: -[ - "1", - 1, - "true", - true, - "on", - "0", - 0, - "false", - false -] - added
Input schema / properties / notify / typeAdded value: +"boolean" - added
Input schema / properties / reason / typeAdded value: +"string" - removed
Input schema / properties / refund / enumRemoved value: -[ - "1", - 1, - "true", - true, - "on", - "0", - 0, - "false", - false -] - added
Input schema / properties / refund / typeAdded value: +"boolean" - removed
Input schema / properties / requestApproval / enumRemoved value: -[ - "1", - 1, - "true", - true, - "on", - "0", - 0, - "false", - false -] - added
Input schema / properties / requestApproval / typeAdded value: +"boolean" - removed
Input schema / properties / restock / enumRemoved value: -[ - "1", - 1, - "true", - true, - "on", - "0", - 0, - "false", - false -] - added
Input schema / properties / restock / typeAdded value: +"boolean"
- Changed
find_conversation2 fields changed- added
Input schema / properties / resolvedBy / typeAdded value: +"string" - added
Input schema / properties / sort / typeAdded value: +"string"
- Changed
list_conversation_order_actions1 field changed- added
Input schema / properties / status / typeAdded value: +"string"
- Changed
list_knowledge_documents2 fields changed- added
Input schema / properties / kind / typeAdded value: +"string" - added
Input schema / properties / status / typeAdded value: +"string"
- Changed
list_order_actions1 field changed- added
Input schema / properties / status / typeAdded value: +"string"
- Changed
list_products1 field changed- added
Input schema / properties / status / typeAdded value: +"string"
- Changed
refund_order4 fields changed- removed
Input schema / properties / notify / enumRemoved value: -[ - "1", - 1, - "true", - true, - "on", - "0", - 0, - "false", - false -] - added
Input schema / properties / notify / typeAdded value: +"boolean" - removed
Input schema / properties / requestApproval / enumRemoved value: -[ - "1", - 1, - "true", - true, - "on", - "0", - 0, - "false", - false -] - added
Input schema / properties / requestApproval / typeAdded value: +"boolean"
- Changed
reply_to_conversation1 field changed- added
Input schema / properties / status / typeAdded value: +"string"
- Changed
update_conversation2 fields changed- added
Input schema / properties / priority / typeAdded value: +"string" - added
Input schema / properties / status / typeAdded value: +"string"
Publisher details
- Operator
- Aide Superintelligence Corporation
- Operator website
- https://aide.app · Publisher source
- Vendor relationship
- First-party
- Documentation
- https://docs.aide.app/developers/mcp-server
- Trust center
- Unknown
- Restrictions
- Need to have an Aide account, Free to sign up
Related MCP Connectors
Build a customer support AI agent from your website, then analyze conversations and improve it.
AI help desk: set up a website support agent, train it, and work the ticket inbox.
Run your website's AI support agent: knowledge, conversations, leads and live replies.
AI phone agents for service businesses: calls, appointments, contacts, agents and Knowledge.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAI customer support MCP server with order status lookup and RAG-powered knowledge base search for e-commerce stores.1MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to answer customer questions from a shop's own product catalog, FAQs, and policy documents, with read-only access and cited answers.5MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to manage a customer-support inbox with guardrails, including replying safely, handling escalations, and leveraging upsell opportunities for e-commerce stores.MIT
- AlicenseNot gradedqualityCmaintenanceEnables an AI to perform customer support workflows by looking up customers, retrieving orders, and creating support tickets through MCP tools.3 npmX11 no permit persons clause
Glama MCP Gateway
Add one secure layer between your agents and this server.