AXL MCP
Server Details
Turn one prompt into a live landing page and leads in your CRM. AXL MCP lets your AI agent build pages, capture leads, manage contacts, book calls, run email campaigns, and deliver courses.
Open-source agent skill. Powered by AXL, a hosted SaaS platform.
Skill and demo: https://github.com/axlhq/business-stack
Install the skill:
npx skills add axlhq/business-stackConnect MCP: https://app.axl.tech/mcp — sign in to your AXL account in the browser (OAuth 2.1). Installation and connection are separate steps.
First run — paste this into your agent:
Using AXL, build a landing page for my [offer] with a name-and-email form that saves each signup to the CRM. Show me a preview and ask before publishing. After I approve, publish it and give me the public and admin links. I will submit a test signup; then find that contact in the CRM and confirm the form answers were saved.
MCP setup: https://axl.tech/developers/mcp
Documentation: https://docs.axl.tech/mcp
Product overview (77 seconds): https://www.youtube.com/watch?v=jlhR9CafIww
- Status
- Healthy
- Uptime
- 19.4% over 60 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 16 tools
Most tools target clearly distinct resources (list_modules vs list_operations vs search_operations; the five *_schema tools each cover a different domain — operations, fields, filters, quiz items, scenario nodes). The descriptions actively carve out boundaries (capability_map as router vs search_operations as fallback). Only mild overlap risk between the many schema/introspection tools and between search vs list variants, which the text resolves.
Nearly all names follow a consistent snake_case verb_noun pattern (get_*, list_*, search_*, generate_image, invoke_operation, check_scenario_node_payload). The lone deviation is capability_map, which is noun-only rather than verb-prefixed. Overall highly predictable and readable.
16 tools is slightly above the typical 3-15 band but justified for a meta-server fronting a full admin API with multiple task areas. Each tool serves a distinct role (routing, discovery, schema introspection, execution, docs, images). No obvious redundancy or bloat.
The surface covers routing, discovery, deep schema introspection, generic execution via invoke_operation, recipes, docs search, image workflows, and payload validation — a coherent lifecycle for a meta-API server. Minor gaps: no standalone operationId lookup beyond search, and execution is entirely delegated to one generic tool, but agents can work around both.
Available Tools
16 toolscapability_mapARead-onlyInspect
CALL THIS FIRST, before any other tool. Orientation map of the whole Admin API: the platform-wide conventions you cannot see from a schema, and six task areas — each listing what users ask for, the literal first calls that serve those requests, and the cross-module traps that would otherwise send you to the wrong module. Module names are namespace segments and several of them lie about their contents, so routing by name alone fails. Pass 'area' for that area's modules (purpose, gotcha, recipes) and its FULL trap list — the overview carries only the first two traps per area.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Optional area id from the overview (sales, learning, sites, communications, automation, platform). Omit for the overview. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, non-openWorld), yet the description adds substantial context the annotations cannot: that module names are namespace segments that 'lie about their contents', that routing by name alone fails, and that the overview is deliberately truncated to the first two traps per area. This is real, non-obvious behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action instruction is front-loaded ('CALL THIS FIRST'), and every sentence carries distinct information (routing hazard, area-vs-overview difference). It is dense but not padded; a slightly tighter phrasing of the trap-list distinction could improve it, keeping it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden and does so: it describes the return shape (platform-wide conventions plus six areas with purpose, recipes, gotchas, and traps). An agent knows exactly what it will receive and how 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 coverage is 100% and the schema already lists the six valid area ids, so the baseline would be 3. The description adds meaning beyond the schema by explaining the consequence of the parameter choice: passing 'area' returns the modules plus the FULL trap list, whereas omitting it yields only two traps per area.
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 purpose: an orientation/overview map of the whole Admin API, and explicitly positions it as the entry point ('CALL THIS FIRST'). This clearly distinguishes it from siblings like list_modules, list_operations, and list_recipes, which return raw listings rather than routing guidance.
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 use it ('before any other tool') and how to choose between its two modes: omit 'area' for the overview, or pass 'area' to get that area's full detail including its complete trap list. This is explicit when/when-not guidance with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_scenario_node_payloadARead-onlyInspect
Dry-run a scenario node 'payload' against its config class BEFORE writing it: reports unknown/misspelled properties and type mismatches, and returns the normalized JSON. Read-only — nothing is created or changed. Worth calling for any node type whose get_scenario_node_schema card says validation=NONE, because there the server accepts a broken payload silently and the node only misbehaves once a contact reaches it.
| Name | Required | Description | Default |
|---|---|---|---|
| payload | Yes | The payload JSON you intend to send, as a string. | |
| actionType | Yes | Node type (C# class name), e.g. 'SendEmailScenarioAction'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/destructiveHint=false, but the description still adds substance: it enumerates what the dry run reports (unknown/misspelled properties, type mismatches), states that it returns the normalized JSON (compensating for the absent output schema), and explains the silent-acceptance failure mode that motivates the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded with the operative information: the action and its read-only nature come first, then the conditional guidance. No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description covers the return value (normalized JSON plus reported problems), the safety profile, and the conditions for use. Nothing material is missing for a two-parameter validation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (payload as a JSON string, actionType as a C# class name) are already documented in the schema. The description adds no format or encoding 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: dry-run/validate a scenario node payload against its config class before writing. It also distinguishes itself from the sibling get_scenario_node_schema by naming it as a companion rather than a duplicate.
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 ('BEFORE writing it') and gives a precise triage rule: prioritize node types whose schema card reports validation=NONE, because the server accepts broken payloads silently there. The alternative behavior (proceeding to write without checking) is implicitly but clearly framed as the mistake to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageAInspect
Generate a BRAND-NEW image via Gemini; stores it and returns image_url (+ markdown preview). Billed — REQUIRES confirmSpend=true after a REAL human yes in a SEPARATE message. STANDALONE: omit sitePageId → account-root AI folder; after success SHOW the image. PAGE/SITE: forPage=true AND sitePageId= → Sites/{site}/{page}/AI; propose prompt+quality+charge first, then place the URL on the page. quality: standard/high/premium. On aiSpendExhausted: warn + Billing — do not retry.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Style hint: realistic, cartoon, minimal, abstract | |
| prompt | Yes | Detailed description of the image (role, subject, style, aspect ratio). | |
| forPage | No | true when this image is for a site/page you are building. | |
| quality | No | Quality tier: standard (default), high, or premium. | |
| sitePageId | No | Site page id. Required when forPage=true — files under Sites/{site}/{page}/AI. Omit for account-root AI. | |
| confirmSpend | No | Must be true only after the human explicitly accepted THIS generation (prompt/quality + AI charge) in a SEPARATE message. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal generic hints (readOnly=false, openWorld=true, idempotent=false, destuctive=false). The desciption adds the load-bearing behavioral facts: the operation is Billed, requires confirmSpend=true only after a REAL human yes in a SEPARATE message, stores the result, and must not be retried on spending exhaustion. No contradiction with 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?
Front-loaded purose, then the billing gate, then the two mode branches, then failure handling and quality. Scannable typography (caps, arrows, em-dashes) keeps dense information parseable. Every clause carries operational weight and none of it repeats what the input schema already states.
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 desciption discloses the return (image_url + markdown preview). For a billed 6-parameter mutation it also covers storage location, the human-approval sequence, post-success actions (SHOW / place URL on page), and the spending-exhaustion path. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The desciption adds meaning above the schema by explaining interdependencies: the forPage/sitePageId pair resolves the storage path, confirmSpend has an ordering requirement (separate-message human approval of prompt+quality+charge), and quality tiers are restated. Genuine added value, though not every param (e.g., style) is elaborated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+output: 'Generate a BRAND-NEW image via Gemini; stores it and returns image_url (+ markdown preview).' It names the engine, the side effect, and the return shape, and the 'BRAND-NEW' phrasing explicitly contrasts with the sibling regenerate_image so an agent can distinguish them 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?
Carves out the two usage modes explicitly: STANDALONE (omit sitePageId → account-root AI folder; SHOW the image after success) and PAGE/SITE (forPage=true AND sitePageId=<page id> → Sites/{site}/{page}/AI; propose prompt+quality+charge first). It also gives a when-not: 'On aiSpendExhausted: warn + Billing — do not retry.' The only implicit branch is regenerate_image for existing images, but 'BRAND-NEW' already signals that boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_extended_filter_schemaARead-onlyInspect
Format of extended filters ('extendedFilter' property of list filters): envelope, condition enum and filter types. Without arguments returns the full type catalog; 'search' filters it; 'filterType' returns the payload JSON schema of one type.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Optional search over type names/descriptions, e.g. 'payment'. | |
| filterType | No | Optional exact type name to get its payload schema, e.g. 'HasTag'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe read operation (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the safety bar is low. The description adds mode-dependent behavior — the full catalog by default vs. a filtered list vs. a single type's payload schema — which is real behavioral information, especially with no output schema. It says nothing about error handling or result limits, keeping it out of 5 territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single sentence with a parenthetical identification of the target property, then a compact three-part enumeration of behavior modes. Front-loaded and dense with no filler. Slightly packed with parenthetical clauses, but nothing is wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining returns, and it does so by mode (type catalog, filtered catalog, single payload JSON schema). For a zero-required-parameter, two-parameter read tool this is nearly complete; only finer details of the catalog contents 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%, so both parameters ('search' over names/descriptions, 'filterType' as an exact type name) are already documented in the schema. The description's restatement of these two modes adds little semantic detail (no format rules, matching behavior, or case sensitivity) beyond what the schema provides. 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+resource: it returns the format/schema of the 'extendedFilter' property of list filters, including envelope, condition enum and filter types. That is far more precise than a tautology. It does not explicitly contrast itself with siblings like get_fields_schema or get_operation_schema, so it stays at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It spells out three invocation modes: no arguments returns the full type catalog, 'search' narrows it, and 'filterType' returns the payload JSON schema for one type. That is clear usage context. It offers no explicit when-not-to-use guidance or named alternatives among the schema-lookup siblings, so it falls short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fields_schemaARead-onlyInspect
Exact set of fields supported by the operation's 'fields' selector (GraphQL-like syntax: '{id, firstName, tags{id, text}}'), respecting the current admin's rights. Returns the root entity's scalar fields in full; nested entities are stubs marked expandable=true — expand one by re-calling with 'path'.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional dot-path to expand a nested node, e.g. 'orders.product'. | |
| operationId | Yes | Operation id from list_operations/search_operations. |
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), but the description adds a non-obvious behavioral contract that annotations cannot express: root scalar fields come back in full while nested entities are stubs flagged expandable=true, requiring a follow-up call with 'path'. Without this, an agent would misread a partial response as complete. It also discloses rights-based filtering of the returned 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 dense sentences with no filler. The core capability and its syntax example are front-loaded, and the expansion workflow follows immediately after, so the agent hits the most decision-relevant information first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-shape burden and does so well (scalar root fields, stub nested nodes, expandable flag, rights filtering). It is complete enough to call correctly, though it says nothing about limits on selector depth/size or failure behavior for an invalid path.
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 meaning beyond the schema by showing the 'fields' selector grammar ('{id, firstName, tags{id, text}}') and explaining that 'path' is used to expand a stub on a repeat call. The schema's own path example ('orders.product') is only slightly extended, so the gain is modest but real.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: it returns the exact set of fields an operation's 'fields' selector supports, with a concrete syntax example. That is far more precise than a generic 'get schema' statement, but it never names or contrasts with its closest siblings (get_operation_schema, get_extended_filter_schema), so the agent must infer the boundary itself.
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 real usage context: the result respects the current admin's rights, and nested nodes are expanded by re-calling the tool with 'path'. That tells the agent how to drive the tool iteratively. It stops short of saying when to prefer this over get_operation_schema or the filter-schema tool, so no explicit exclusions are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_operation_schemaARead-onlyInspect
Full schema of one operation: parameters, request body (schema + example) and responses, plus 'hints' and any matching 'recipes'. Nested schemas are inlined up to depth 4; deeper objects are marked truncated. Large schemas are trimmed to fit — use section='request'/'response' to fetch one part in full.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | Which part to return: 'request' (params + body), 'response' (responses), 'guide' (the full site-page HTML-editing guide + ackToken, gated operations only) or 'all' (default). | all |
| operationId | Yes | Operation id from list_operations/search_operations, e.g. 'crm.Lead.GetItems.post'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe-read profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds meaningful behavioral detail beyond annotations: nested schemas are inlined up to depth 4, deeper objects are marked truncated, large schemas are trimmed to fit, and hints/recipes are included. It stops short of discussing auth, rate limits, or the ackToken gating, which appears only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the tool's output scope and then the behavioral caveats. Every sentence carries information (truncation limits, trimming behavior, section workaround) 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?
The description is complete for a schema-fetching tool with no output schema: it describes what the response contains (parameters, request body with schema and example, responses, hints, recipes), how nested and large schemas are handled, and how to fetch full sections. Annotations cover the safety profile, so the agent has what it needs to call this 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. The description adds value by explaining the reason for the 'section' parameter: large schemas are trimmed, so section='request'/'response' fetches one part in full. It also identifies the source of the required operationId, providing practical meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource: 'Full schema of one operation' and enumerates exactly what is returned (parameters, request body, responses, hints, recipes). It clearly targets 'operation' schemas, which differentiates it from sibling schema tools for fields, filters, or scenario nodes, though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides useful workflow context by noting that 'operationId' comes from list_operations/search_operations, and it explains the 'section' escape hatch for fetching one part in full. However, it gives no explicit when-to-use versus when-not guidance relative to sibling tools, leaving usage mostly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quiz_item_schemaARead-onlyInspect
Quiz/form item types and the shape of their 'SettingsJson' — a STRINGIFIED JSON object whose keys depend entirely on the item's 'Type', which the OpenAPI schema cannot show (it types the property as an opaque string). CALL THIS BEFORE creating or updating ANY form item: the server stores SettingsJson verbatim, never fills a default and never validates a key, so a guessed blob is saved with HTTP 200 and only breaks in the respondent's browser — and it must never be null or empty, not even for a separator. Without arguments returns the shared base settings, the conventions and the traps; 'category'/'search' list types; 'itemType' returns one type's full settings card with a ready-to-send example and the system contact attributes it may be bound to.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Optional search over type names and purposes, e.g. 'choose one' or 'image'. | |
| category | No | Optional category filter: input, selection, scale, upload, data, layout, media, social. | |
| itemType | No | Optional exact item type, e.g. 'monoSelect' or 'separator'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare a safe read, but the description goes far beyond: the server stores SettingsJson verbatim, never defaults and never validates keys, a guessed blob returns HTTP 200 and only fails client-side, and the value must never be null/empty even for a separator. This is exactly the failure-mode context an agent needs.
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 purpose and the imperative call-before warning, and every clause carries real information. However, the long em-dash-chained sentences pack multiple ideas together, slightly taxing 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?
There is no output schema, so the description must describe returns — and it does, covering base settings, conventions/traps, type lists, and a single type's full card with example. For a zero-required-param lookup tool with high complexity, nothing needed 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%, but the description adds semantics the schema cannot express: omitting all params yields shared base settings/conventions/traps, 'category'/'search' list types, and 'itemType' returns a full settings card with a ready-to-send example plus bindable system contact attributes.
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 ('Quiz/form item types and the shape of their SettingsJson') and frames the exact artifact returned. It is clearly distinguishable from sibling schema lookups like get_fields_schema or get_operation_schema by scoping to form-item SettingsJson.
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 commands 'CALL THIS BEFORE creating or updating ANY form item' and gives the consequence of skipping it. It also names the three invocation modes (no args, category/search, itemType), so the agent knows which call shape to use for which need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scenario_node_schemaARead-onlyInspect
Scenario node types and the JSON schema of their polymorphic 'payload' config — the shape the OpenAPI schema cannot show (it types 'payload' as an opaque string). CALL THIS BEFORE creating or configuring ANY scenario node: the server fills a default payload only for events and listeners (every ACTION comes back null) and type-checks only 13 of 137 node types, so a guessed payload is stored with HTTP 200 and breaks at run time. Without arguments returns the graph model and workflow; 'kind'/'search'/'outputs' list node types (outputs='fail' answers "which steps can I attach error handling to?"); 'actionType' returns one node's payload schema, default payload and — critically — which link types it routes to; 'scenarioId' returns the trigger events THAT scenario accepts.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Optional kind filter: 'action', 'event' or 'listener'. | |
| search | No | Optional search over node type names, titles and categories, e.g. 'send email' or 'tag'. | |
| outputs | No | Optional link-type filter: 'fail' lists every node an error branch can actually hang off (most actions have none), 'success' the branching ones, 'default' the linear ones. | |
| actionType | No | Optional exact node type (the C# class name), e.g. 'DelayScenarioAction'. | |
| scenarioId | No | Optional scenario id — returns the events that scenario accepts as triggers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations declaring read-only, the description adds crucial non-obvious server behavior: default payload only for events/listeners (actions null), only 13 of 137 types type-checked, and guessed payloads accepted but break at runtime. This is exactly the context annotations cannot provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and the call-before warning, and every clause carries operational detail. The long semicolon-separated argument explanation is dense and could be better structured, but there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is present, yet the description specifies the return shape for each argument mode (graph model, node type lists, one node's schema/default/link types, trigger events). That sufficiently covers what an agent needs 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 coverage is 100%, but the description adds meaning beyond the parameter descriptions by explaining what each mode returns (no args: graph model and workflow; outputs='fail': error-branch nodes; actionType: payload schema, default, link routing; scenarioId: accepted trigger events). This adds substantial semantic value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the tool returns scenario node types and the JSON schema of their polymorphic 'payload' config, and explicitly notes the OpenAPI limitation (payload typed as opaque string). This is a specific verb+resource and differentiates it from sibling schema getters.
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 instructs 'CALL THIS BEFORE creating or configuring ANY scenario node' and explains the consequence of guessing (HTTP 200 then runtime break). It does not name a sibling alternative or a when-not condition, so it falls short of full 5-level routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_image_from_urlAInspect
Import an EXTERNAL http(s) image into account storage (no Gemini charge). Returns image_url (+ preview). Optional sitePageId → Sites/{site}/{page}/AI; omit → account-root AI. SSRF-guarded.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Absolute http(s) URL of an EXTERNAL image to import. | |
| name | No | Optional display name for the file manager. | |
| sitePageId | No | Optional site page id — when set, store under Sites/{site}/{page}/AI. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond annotations: it is SSRF-guarded, incurs no Gemini charge, stores at account-root or sitePage-specific path, and returns image_url plus preview. These details help an agent anticipate side effects and constraints without contradicting any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences with no wasted words, front-loding the core action and key differentiator (external, no Gemini charge) before optional routing details.
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 3-parameter tool with a full schema and no output schema, the description covers purpose, return value, storage behavior, security guard, and cost implication. It could name sibling alternatives explicitly for fully complete routing, 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 the schema already documents all three parameters accurately. The description adds a useful routing explanation for sitePageId but does not need to expand the url or name parameters further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: imports an external http(s) image into account storage, and distinguishes itself from sibling generation tools via 'EXTERNAL' and 'no Gemini charge'. It also states the return value, image_url + preview, and the optional storage routing.
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 clearly defines when to use this tool: to import an external image rather than generate or regenerate one. It provides context about account storage and the no-Gemini-charge benefit, but it does not explicitly name alternative 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.
invoke_operationADestructiveInspect
Execute an Admin API operation through the standard HTTP pipeline (caller's token, account context and permissions apply). Success returns {success: true, body: ...}; an API error returns {success: false, errors: [{code, type, message, hint?}]} (statusCode added only when not 200); a guard refusal returns {error, details?}.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body — a JSON object ({"page":1}) or that same JSON as a string. Both work. | |
| confirm | No | Set true ONLY to confirm an intentional un-scoped bulk delete (empty/omitted filter, hits EVERY record). This must reflect a REAL reply from the human — ask them directly what it affects, wait for their next message, and never infer it from their original request or set it in the same turn where you explain the risk. Leave false normally; a refusal explains what to ask. | |
| guideAck | No | Acknowledgement token from an HTML-editing guide (get_operation_schema section="guide", or the refusal). REQUIRED when writing a site page's BodyHtml/HeadHtml, a site header/footer's BodyHtml (fragment only — no HeadHtml), OR a course step's theory designHTMLPublished/designStylePublished/customTheoryHtml — confirms you read and applied that operation's guide; otherwise the write is refused. | |
| pathParams | No | Route parameters, scalars only — a JSON object ({"id":"a1b2"}) or that same JSON as a string. | |
| operationId | No | REQUIRED. Operation id to execute, e.g. 'crm.Lead.GetItems.get'. Get one from capability_map -> list_recipes(search="<intent>") -> search_operations(query). A recipe INTENT is not an operation id — open the recipe and use its operationId. | |
| queryParams | No | Query parameters — a JSON object or that same JSON as a string; array values are sent as repeated keys. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the safety profile (destructiveHint=true, openWorldHint=true), and with no output schema the description adds real value by enumerating the three return shapes: success, API error with {code, type, message, hint?}, and guard refusal. It also notes that the caller's token, account context and permissions apply. It does not explain when a guard refusal fires or what triggers confirmation, but it goes well 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?
Front-loads the core action ('Execute an Admin API operation') before enumerating return shapes, then spends its remaining words on genuinely useful contract details. Dense but not padded; the long second sentence earns its place because no output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, open-world generic dispatcher with no output schema, the description supplies the missing return contract (success/error/guard refusal) and names the pipeline semantics. It omits the confirm and guide-ack preconditions, but those are fully documented in the schema, so 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 the rich confirm/guideAck/operationId descriptions already carry parameter meaning. The description itself mentions no parameters and adds nothing beyond the schema, 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?
States a specific verb and resource ('Execute an Admin API operation through the standard HTTP pipeline'), which is clearer than a tautology and tells the agent this is the generic dispatcher. It does not explicitly contrast with sibling discovery tools like search_operations or list_recipes, but the verb+resource 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?
The description gives no when-to-use or when-not-to-use guidance, and names no alternatives. The routing workflow (capability_map -> list_recipes -> search_operations) lives only in the operationId schema field, not in the description, so an agent reading the description alone gets no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modulesARead-onlyInspect
Flat index of every Admin API module: operation count, the area it belongs to, what it owns and its known trap. This is a drill-down, NOT the entry point — call capability_map first to route a request to an area, then use this to see every module or list_operations(module) for one module's operations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the one thing the annotations can't: what the index actually contains per module (operation count, owning area, known trap), which is valuable since 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, zero filler, and the routing constraint ('NOT the entry point') is front-loaded before the alternatives. The dense enumeration in sentence one is information, not 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 compensates by describing the return contents and by placing the tool correctly in the capability_map -> list_modules/list_operations workflow. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description correctly implies a no-argument, whole-corpus listing and never invents parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Flat index of every Admin API module') and enumerates the exact payload fields (operation count, area, ownership, known trap). It is immediately distinguishable from capability_map and list_operations, which it names.
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 frames itself as a drill-down and NOT the entry point, tells the agent to call capability_map first to route, and offers list_operations(module) as the narrower alternative for a single module. Both the when and the when-not are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_operationsARead-onlyInspect
List operations of one API module: operationId, HTTP method, path, summary. Paginated by 100. Optional 'search' filters within the module (every word must match operationId, path or summary). Module names come from capability_map (which also says what each module owns and where its traps are).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number. | |
| module | Yes | Module name from capability_map or list_modules, e.g. 'crm'. | |
| search | No | Optional search query to filter operations within the module. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, non-destructive, closed-world behavior. The description adds useful context beyond them: pagination is fixed at 100 and search requires every word to match operationId, path, or summary. It does not discuss permissions or response metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action and followed by pagination, search behavior, and module-source guidance. No sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description lists the returned fields and states pagination size and search matching. It is nearly complete, though it does not describe pagination metadata or whether total counts are returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description still adds meaning to 'search' by specifying all-words matching across operationId, path, and summary, and clarifies where module values come from; 'page' remains covered only by 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 operations of one API module, with the returned fields named. The module scope distinguishes it from the broader search_operations sibling, so an agent can tell what it does 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?
Explains that module names come from capability_map and that search filters only within the selected module. It does not explicitly say when to use search_operations instead, nor mention list_modules as an alternative module source even though the schema does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recipesARead-onlyInspect
Ready-made, VERIFIED recipes: intent -> operationId + a correct example body + notes on non-obvious conventions the schema can't show (e.g. 'a new tag is created only when id == text', or 'this endpoint adds, the *.Update endpoint replaces'). capability_map names the recipe for a task as 'recipe:' — fetch it here with search= before building that call by hand. Search is AND over every word, so ask for ONE intent per call ('upload_file', then 'create_landing_site') — bundling several returns nothing. With 'search' the closest few come back in FULL (an exact intent match always among them) and any further matches as stubs — intent + operationId, usually all you need; without 'search', lightweight stubs of every recipe. A recipe that CREATES something also carries 'deadUnless': the surface a real client meets that artifact on and the connection that makes it work. Treat it as part of the job — most things here are invisible until something a visitor actually opens carries them, and the same text comes back on the invoke_operation result that creates one.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Optional search over recipe intent/title/notes. ONE intent per call, e.g. 'tag contact' or 'upload_file' — every word must match, so multi-intent queries return zero. Empty returns all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this read-only, non-destructive, and closed-world, and the description is consistent with them. Beyond that it discloses real behavior the schema cannot: search matches on intent/title/notes only, exact intent match always appears in the FULL results with further matches as stubs, and creating recipes carry a 'deadUnless' surface/connection field. That is substantive 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?
It is front-loaded with what the tool returns, then usage, then the deadUnless caveat, and nearly every sentence carries information. It is a dense single paragraph with some run-on phrasing in the deadUnless explanation, which slightly hurts scannability, but there is little pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain returns, and it does: FULL recipes vs. stubs, what an exact match guarantees, and the extra 'deadUnless' field on creating recipes. Combined with the parameter guidance, 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% for the single 'search' parameter, and the schema already documents the AND matching, the one-intent-per-call rule, and empty-returns-all. The description largely restates that (e.g. 'upload_file, then create_landing_site') without adding syntax or format 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 states a concrete verb and resource: it serves ready-made, VERIFIED recipes that map an intent to an operationId, an example body, and convention notes. It also distinguishes itself from siblings by naming capability_map and invoke_operation, so an agent knows this is the recipe lookup rather than the operation schema lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing: capability_map names a recipe as 'recipe:<intent>', and the agent should fetch it here with search=<intent> before building the call by hand. It also states the constraint (one intent per call, AND over every word) and what happens with and without 'search', leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
regenerate_imageAInspect
Edit/restyle an existing image; stores a NEW file and returns image_url (+ markdown preview). Does NOT patch site HTML. Billed — REQUIRES confirmSpend=true. PAGE/SITE: forPage=true + sitePageId; propose edit+quality+charge first. STANDALONE: show the new image.
| Name | Required | Description | Default |
|---|---|---|---|
| forPage | No | true when this edit is for a site/page you are building. | |
| quality | No | Quality tier: standard (default), high, or premium. | |
| sitePageId | No | Site page id. Required when forPage=true. | |
| confirmSpend | No | Must be true only after the human explicitly accepted THIS edit in a SEPARATE message. | |
| edit_instruction | Yes | What to change; keep the rest of the image. | |
| source_image_url | Yes | Current absolute URL of the image to edit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false and say nothing about cost. The description discloses the two most critical behavioral traits: this is a BILLED operation that REQUIRES confirmSpend=true, and it stores a NEW file — which explains why destructiveHint=false despite the mutation. It also promises a concrete return (image_url + markdown preview) and rules out a side effect (no HTML patching). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four telegraphic sentences, each carrying a distinct fact: core behavior, return value, billing gate, and the two usage modes. The core edit/restyle behavior is front-loaded before caveats. The PAGE/SITE vs STANDALONE shorthand is dense but efficient — no sentence is redundant or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a billed, high-stakes mutation tool with no output schema, the description covers everything an agent needs to invoke it correctly: what it does, what it returns, the billing gate, the two invocation contexts, and what it deliberately does not do. The schema's confirmSpend human-approval requirement complements the workflow guidance. Missing error/rejection behavior is a minor omission against this level of coverage.
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 covers 100% of parameters with individual descriptions, so the baseline is 3. The description adds value by encoding workflow semantics: it binds forPage + sitePageId together for site edits, elevates confirmSpend to a hard gate ('REQUIRES confirmSpend=true'), and orders the flow as propose edit+quality+charge first. Minor gap: 'charge' is referenced but is not a named parameter, leaving the term slightly undefined.
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+resource pair ('Edit/restyle an existing image') and immediately differentiates from siblings: it stores a NEW file (vs generate_image creating from scratch), returns image_url + markdown preview, and explicitly says it does NOT patch site HTML. An agent can distinguish this from generate_image and import_image_from_url 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?
Provides clear invocation context for the two modes — PAGE/SITE (forPage=true + sitePageId, propose edit+quality+charge first) versus STANDALONE (show the new image) — plus the required workflow ordering (propose before confirmSpend). However, it never names a sibling like generate_image as the alternative for creating new images, so when-not-to-use is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsARead-onlyInspect
The AXL product documentation (docs.axl.tech, the knowledge base an admin reads) — searchable, and readable in full. Use it for PRODUCT questions the API surface cannot answer: what a feature is, which flow it belongs to, what the business rules are, what the UI calls the thing the user just asked about, whether the platform can do X at all. It does NOT document the API — for operations, bodies and field semantics use capability_map / list_recipes / get_operation_schema. TWO STEPS: (1) search_docs(query="…") returns a ranked shortlist — title, UI section, the article's own summary, a matched snippet — and NOT the articles; (2) pick what looks relevant and call search_docs(slugs="slug-a,slug-b") to read those in full. Call with no arguments for the section outline, or section="CRM" to list one section. Articles are English-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max search hits (default 8, max 25). | |
| query | No | Natural-language question or keywords, e.g. 'why did my mailing not reach a contact' or 'subscription auto renewal'. Returns a shortlist, never article bodies. | |
| slugs | No | Comma-separated article slugs to return IN FULL (from a previous search's 'slug', from a recipe's docs[].slug, or from a docs.axl.tech URL). Max 3 per call. | |
| section | No | Optional sidebar-section filter, e.g. 'CRM', 'Sales', 'Mail and mailings', 'CRM / Contact card'. With no query it lists that section's articles. |
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), and the description adds substantial behavior beyond them: search returns a ranked shortlist and NOT article bodies, full reads require a second call with slugs, max 3 slugs per call, English-only articles, and the no-argument/section listing 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?
Long but tightly structured and front-loaded: identity, use/don't-use, then a numbered two-step procedure. Every clause carries information (scope, sourcing of slugs, limit, language constraint) with no filler or restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by describing the return shape of a search (title, UI section, article summary, matched snippet) versus a full read. Combined with the usage routing and slug-sourcing rules, an agent has everything needed to call both modes 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 schema documents all four parameters, but the description still adds cross-call semantics the schema cannot: that slugs should come from a previous search's 'slug', a recipe's docs[].slug, or a docs.axl.tech URL, and that query+slugs are the two halves of a workflow rather than independent 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 (search/read) and resource (AXL product documentation), and explicitly distinguishes itself from the API-side siblings by naming capability_map, list_recipes and get_operation_schema. An agent can tell immediately this is the product-docs tool, not the API tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('PRODUCT questions the API surface cannot answer: what a feature is, which flow it belongs to, business rules, UI naming') and when-not-to-use, routing API questions to named alternatives. The TWO STEPS block dictates the exact call sequence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_operationsARead-onlyInspect
Search operations across all API modules. Every word of the query must match the operationId, path, module, summary or a request-body property name (order-insensitive). Results are ranked by relevance; zero results include which words didn't match. It matches API vocabulary, not business vocabulary — if the request is phrased the way a user would phrase it, capability_map routes it faster; come here when no area fits or you already know the API's word for it.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results. | |
| query | Yes | Search query, e.g. 'lead list'. |
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 behavior beyond that: results are ranked by relevance, and zero-result responses report which query words failed to match. It stops short of describing pagination or the result object shape, but the behavioral disclosure is well above the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and match rules before the routing caveat. Every sentence carries information, though the final sentence's trade-off explanation is slightly long relative to the rest. Nothing is boilerplate.
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 return-value burden and does so partially: it discloses relevance ranking and the diagnostic content of empty results. Annotations cover the safety profile. It could say more about the fields present in each returned operation, but for a two-parameter search tool the coverage is solid.
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 earns the extra point by explaining query semantics the schema does not: matching is order-insensitive, applies to five specific fields, and is API vocabulary rather than business vocabulary. The 'limit' parameter is left to the schema, which is acceptable given full 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 a specific verb ('Search') and resource ('operations across all API modules'), then goes further by naming exactly which fields are matched (operationId, path, module, summary, request-body property names). It explicitly distinguishes itself from capability_map, so an agent can route between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-not-and-use-alternative: if the request is phrased in user vocabulary, capability_map routes it faster. It also states the two positive conditions for coming here (no area fits, or you already know the API's word). This is the rare definition that fully resolves the routing decision.
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.
16 tool updates
- First observed
capability_map - First observed
check_scenario_node_payload - First observed
generate_image - First observed
get_extended_filter_schema - First observed
get_fields_schema - First observed
get_operation_schema - First observed
get_quiz_item_schema - First observed
get_scenario_node_schema - First observed
import_image_from_url - First observed
invoke_operation - First observed
list_modules - First observed
list_operations - First observed
list_recipes - First observed
regenerate_image - First observed
search_docs - First observed
search_operations
Related MCP Connectors
Orbit is an MCP server that gives your AI agents a 4000+ tools, a shared memory brain and a live dashboard OS. Every agent reads active decisions, logs outputs to a searchable vault, and reports status in real time. 2-minute setup via MCP; works across Claude, ChatGPT, Codex, Cursor, Gemini, and Manus. Finally Agents work, agents that grow your business and bring you customers. https://orbitagents.xyz
Agent Commerce MCP — agent-native A2A storefront. Discovery, Stripe checkout, affiliate program.
Build, publish, capture leads from, measure and improve landing pages from your AI assistant.
Turn your offers into an AI agent. Set it up from your MCP assistant, answer customer questions, collect enquiries and connect with other agents via A2A. OAuth sign-in; free plan available.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server and Claude skills for AI agents to build landing pages, run A/B experiments, and track first-party conversions. Lets agents onboard clients, create and publish pages, manage variants, and pull performance reports via the UXON API.13MIT

@seldonframe/mcpofficial
AlicenseNot gradedqualityBmaintenanceEnables MCP-compatible agents to build and operate complete AI front offices for local businesses—branded websites, booking, intake, CRM, and AI agents in one workspace.67AGPL 3.0- AlicenseNot gradedqualityCmaintenanceProvides AI agents with 220+ tools for building websites, sending email, managing contacts, invoicing, databases, automation, and more through a single secure connection. Features hardware-bound authentication and works with Claude Desktop, Claude Code, Cursor, and other MCP-compatible clients.MIT
- FlicenseNot gradedqualityDmaintenanceEnables lightweight CRM pipeline management with email sequences, project scanning, and MCP-based interaction for AI agents.-
Glama MCP Gateway
Add one secure layer between your agents and this server.