Trackdolphin
OfficialEnables server-side conversion tracking for purchases and leads sent to Google Ads, with deduplication and consent-aware handling.
Enables server-side conversion tracking for purchases and leads sent to Meta advertising platforms, with deduplication and consent-aware handling.
Enables server-side conversion tracking for purchases and leads sent to Pinterest, with deduplication and consent-aware handling.
Enables server-side conversion tracking for purchases and leads sent to TikTok, with deduplication and consent-aware handling.
Trackdolphin MCP server & CLI
Server-side conversion tracking, as tools for your AI agent and as commands for your shell.
Trackdolphin sends purchases and leads server-to-server to Google Ads, Meta, LinkedIn, TikTok, Pinterest and Microsoft Ads — deduplicated, consent-aware, hosted in the EU. This repository holds the two ways to drive it from outside the dashboard.
Package | npm | Docs | What it is |
| MCP server: every API endpoint becomes a tool for Claude, Cursor and friends | ||
| Command line: every API endpoint becomes a command |
Looking for the browser and server SDK instead? That is @trackdolphin/sdk in trackdolphin/sdk.
Try it in one minute
export TRACKDOLPHIN_TOKEN=td_live_… # Dashboard → Settings → API
npx @trackdolphin/cli shops
npx @trackdolphin/cli tracking-health shop_meinshop_de_ab12cdFor the MCP server, point your client at it:
{
"mcpServers": {
"trackdolphin": {
"command": "npx",
"args": ["-y", "@trackdolphin/mcp"],
"env": { "TRACKDOLPHIN_TOKEN": "td_live_…" }
}
}
}Related MCP server: google-ads-mcp
One source, two tools
Neither package maintains a hand-written list of what it can do. Both derive their
capabilities from the OpenAPI description of the Trackdolphin API
(packages/openapi-client): a new endpoint is a new tool and a new command the same
day. That is what API-first buys you — no second list that quietly goes stale.
Development
pnpm install
pnpm test
pnpm buildNode.js 22 or newer.
About this repository
This is a snapshot of the Trackdolphin monorepo; each commit names the revision it came from. Issues and pull requests are welcome here — they are carried back by hand.
License: MIT.
Auf Deutsch
Zwei Werkzeuge, eine Quelle: Der MCP-Server und die Kommandozeile leiten ihre Fähigkeiten aus der OpenAPI-Beschreibung der Trackdolphin-API ab. Ein neuer Endpunkt ist sofort ein neues Werkzeug und ein neuer Befehl.
Deutsche Dokumentation: https://trackdolphin.com/docs/mcp und https://trackdolphin.com/docs/cli.
Available Tools
89 toolsapplyAdChangeA
Apply an approved change at the advertising platform — The only call that changes anything at the platform, and only for a request that is approved and not expired. It re-reads the current value first: if it no longer matches what the preview showed, the request becomes stale and NOTHING is sent - the preview is a contract, not a suggestion. After sending, the value is read again; only a reading that matches the proposal makes the request applied. A response that cannot be read after sending leaves the request uncertain, not failed, and keeps the campaign locked until resolveAdChange has established what actually happened. Once applied, the stored campaign list is updated immediately so it does not report the old value.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the change request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no read-only or idempotent hints, so the description carries the full burden of behavior disclosure. It details the re-read logic, the contract enforcement (preview is a contract, not a suggestion), the stale and uncertain states, the locking behavior, and the immediate update of the stored campaign list. This is exemplary transparency that goes far beyond the sparse 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 dense but each sentence carries essential information. It is front-loaded with the core purpose and exclusivity, then progressively explains the state machine, error handling, and post-conditions. No word is wasted, and the structure logically guides the reader from purpose to usage to edge cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the operation (state transitions, contract enforcement, locking, and resolution), the description covers all critical aspects: preconditions, stale handling, uncertain outcome and its implication, resolution path, and immediate data consistency update. It also references resolveAdChange, ensuring the agent knows the follow-up action. Nothing essential is missing 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?
The only parameter, id, has a schema description ('Id of the change request.') that is 100% covered. The description adds semantic meaning by specifying that the id must refer to an approved and non-expired change request, and that the request's state will transition based on the operation. This goes beyond the schema's basic description, providing context on what the id represents in the workflow.
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: 'Apply an approved change at the advertising platform.' It also states it is 'The only call that changes anything at the platform,' clearly distinguishing it from siblings like previewAdChange, approveAdChange, and rejectAdChange. The purpose is unambiguous and contextually rich.
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 states the precondition: only for a request that is 'approved' and not expired. It further explains when the operation will not proceed (stale request) and that an uncertain outcome keeps the campaign locked until resolveAdChange is called. This gives clear guidance on when and how to use the tool, and implicitly when not to (e.g., unapproved or expired requests).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approveAdChangeA
Approve a previewed change so it may be applied — Records the approval together with its origin. Only a request in state previewed and not yet expired can be approved. An API key may NOT approve a request it created itself: that is answered with 403, because an approval has to come from somewhere else than the request - a human in the dashboard, or the rule on the ad account. Approving does not change anything at the platform; applyAdChange does.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the change request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses important behavioral details beyond the annotations: it records approval with its origin, enforces the previewed/expiry constraint, and clarifies the distinction between approval and actual platform mutation. No contradiction with annotations is present.
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 organized with a clear purpose statement followed by constraints and clarifications. It is slightly verbose with repeated emphasis, but all sentences contribute useful information and the structure is easy 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?
Given the single-parameter input and absence of an output schema, the description provides sufficient context: valid states, error condition, and the relationship to applyAdChange. It does not describe success response details, but that is not required by the schema setup.
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 only parameter, 'id', has a basic description ('Id of the change request') and schema coverage is 100%. The description does not add additional detail about the id format, scope, or validation, so the semantics are adequate but not enriched.
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?
Clearly states the tool approves a previewed change, with the verb 'approve' and object 'ad change'. It is well distinguished from sibling tools such as applyAdChange, rejectAdChange, and previewAdChange.
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 defines when approval is valid (state 'previewed' and not expired), states a key restriction (API keys cannot self-approve, resulting in 403), and clarifies that approval does not apply the change to the platform—that is applyAdChange's role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assignConnectionTargetsC
Decide where the credentials live and which accounts this project feeds — Takes both halves of the decision at once: ebene (project or org — where the credentials are stored) and umfang (eines, mehrere or alle of the accounts from getConnectionInventory, listed in konten). Every chosen account is set up the same way autoconfigureConnection sets up a single one; an account that fails is NOT assigned and named separately in nicht_eingerichtet — half an assignment sends into the void and nobody sees why. ebene: "org" decides for the other projects of the organisation and is therefore owners only; it answers 409 when the organisation already has a connection, and ersetzen: true overwrites it.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Plattform: ga4, google_ads, meta, linkedin, gtm, tiktok, pinterest, microsoft_ads, openai_ads. Alle ausser openai_ads werden über authorizeConnection verbunden; openai_ads nimmt einen API-Schlüssel über setConnectionBearerKey. | |
| projectId | Yes | Kennung des Projekts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses some behaviors: accounts that fail are not assigned and are listed in 'nicht_eingerichtet', a 409 response occurs when an org connection already exists, and the 'ersetzen' flag can overwrite. However, side effects on existing connections and the full response structure are not explained.
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 verbose, repetitive, and unstructured. It uses a single long paragraph with convoluted phrasing (e.g., 'half an assignment sends into the void and nobody sees why') and mixes German terms, making it hard to parse quickly.
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 provided, and the description does not explain the response format or how it fits with sibling tools beyond vague references. It omits details about authentication, error handling for standard cases, and the relationship to connection inventory and configuration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only contains 'type' and 'projectId', but the description refers to multiple parameters not present in the schema ('ebene', 'umfang', 'konten', 'nicht_eingerichtet', 'ersetzen'). This mismatch severely confuses parameter handling and adds no meaningful detail about the actual schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a general purpose ('Decide where the credentials live and which accounts this project feeds') but uses cryptic, non-standard terminology (e.g., 'ebene', 'umfang', 'konten') without explicitly naming the operation as assigning connection targets. It does not clearly differentiate from related tools like autoconfigureConnection or enableConnection.
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 references autoconfigureConnection and getConnectionInventory but does not explicitly state when this tool should be used instead of those alternatives. It implies batch/org-level assignment but lacks clear conditional guidance or a 'when not to use' note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
authorizeConnectionA
Get the link that connects an ad platform to this project — Returns the provider consent URL (Google, Meta, …) in authorize_url. A person must open it in a browser and approve access — there is no headless way, so hand the link to the user. The link is valid for ten minutes. Afterwards the connection shows up as connected in the project overview and the account inventory is fetched in the background; then call autoconfigureConnection or getConnectionInventory. Answers 503 when the platform is not enabled on this installation yet.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Plattform: ga4, google_ads, meta, linkedin, gtm, tiktok, pinterest, microsoft_ads, openai_ads. Alle ausser openai_ads werden über authorizeConnection verbunden; openai_ads nimmt einen API-Schlüssel über setConnectionBearerKey. | |
| projectId | Yes | Kennung des Projekts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only and non-idempotent behavior, and the description aligns by noting that the connection shows as connected after approval. No contradictions, and it adds context about side effects without being redundant.
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 slightly longer than necessary but includes essential details (return field, user interaction, validity, next steps, error code) in a logical flow. No fluff, but 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?
Given the simple output (an authorize_url), the description covers the return value and a potential error (503). It does not specify other error cases, but that is acceptable for a tool of this simplicity.
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?
Both parameters have meaningful descriptions, including the list of valid platform values and a note that openai_ads uses a different tool (setConnectionBearerKey). Schema coverage is 100%.
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?
Clearly states it returns an authorization URL for connecting an ad platform to a project, and distinguishes from org-level and API-key alternatives.
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 the URL must be opened by a human in a browser, mentions no headless method, and provides follow-up actions (autoconfigureConnection or getConnectionInventory). Could more explicitly contrast with similar sibling tools like authorizeOrgConnection, but the guidance is clear for typical usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
authorizeOrgConnectionA
Get the link that connects an ad platform for the whole organisation — Same as authorizeConnection, but the resulting connection belongs to the organisation and is inherited by all of its projects. A person must open the link in a browser; it is valid for ten minutes. Owners only. Answers 503 when the platform is not enabled on this installation yet.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Plattform, z. B. meta oder google_ads. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only basic hints (readOnlyHint false, idempotentHint false, destructiveHint false), so the description carries the full burden of behavioral disclosure. It adds crucial details: the link requires human browser action, expires in ten minutes, is restricted to owners, and returns 503 when the platform is not enabled. These are exactly the behavioral nuances an agent needs and are not covered by 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 tight and efficient, delivering the primary purpose, the contrast with the sibling, and all operational constraints in three sentences. The core action is front-loaded, and every sentence adds value without fluff. It is exemplary in structure.
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 tool with no output schema, the description covers all necessary aspects: what it does, when to use it, how to use it (human opens link), validity, permissions, and an error condition. An agent has everything needed to invoke it correctly and interpret the outcome, 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?
The schema already fully documents the single 'type' parameter with a description (coverage 100%), so the description doesn't need to add parameter-level detail. The description does provide context about the ad platform, but it doesn't elaborate on the parameter's format or values beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get the link that connects an ad platform for the whole organisation' – a specific verb and resource. It immediately distinguishes itself from the sibling authorizeConnection by explaining the org-level scope and inheritance. This leaves no ambiguity about what the tool does.
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 names the alternative (authorizeConnection) and explains the difference: the resulting connection belongs to the organisation and is inherited by all projects. It also provides concrete usage constraints: a person must open the link, it is valid for ten minutes, owners only, and a 503 error occurs if the platform is not enabled. This fully informs when to use this tool vs. its sibling and what to expect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autoconfigureConnectionA
Let Trackdolphin pick the account, property, pixel or conversion action — Runs after the user has authorized. Looks at what the connected account holds and answers with exactly one of three states: fertig (everything found or created, config shows what), auswahl (several equal candidates — frage and optionen carry readable names, call again with auswahl set to the chosen id), or manuell (not possible automatically for this platform; use saveConnectionConfig). Send neu_waehlen: true to see the same list again without a new authorization, for "pick another account".
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Plattform: ga4, google_ads, meta, linkedin, gtm, tiktok, pinterest, microsoft_ads, openai_ads. Alle ausser openai_ads werden über authorizeConnection verbunden; openai_ads nimmt einen API-Schlüssel über setConnectionBearerKey. | |
| projectId | Yes | Kennung des Projekts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool may create entities ('everything found or created') and explains the state machine (fertig, auswahl, manuell) and the need to call again with 'auswahl' to select a candidate. Since annotations only give false for read-only/idempotent/destructive, the description carries the burden and provides useful behavioral insight.
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 long, run-on paragraph with em dashes and parenthetical asides. It contains redundant phrasing (e.g., the explanation of 'auswahl' and the trailing 'for pick another account'). It could be better structured and more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description adequately explains the three possible response states and the follow-up action for 'auswahl'. It covers the main flow but lacks details on error cases or edge conditions, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes type and projectId clearly. The description adds context about the flow but also references parameters ('auswahl', 'neu_waehlen') that are not part of the current input schema, which may confuse. It adds some value but not a great deal beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lets Trackdolphin pick an account, property, pixel, or conversion action, and explains the three possible outcomes. It is a specific action on a specific resource and is distinguishable from other connection-related 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?
The description notes that it should be used after the user has authorized, and references saveConnectionConfig as an alternative for the 'manuell' case. This gives some guidance on when to use the tool, though it could be more explicit about when to prefer it over other configuration tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancelAccountDeletionADestructiveIdempotent
Cancel a pending deletion request — Bricht einen laufenden Löschantrag ab — möglich bis zur letzten Sekunde vor der Ausführung.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true. The description adds the valuable behavioral detail that cancellation is possible 'until the last second before execution,' which is not covered by annotations. It doesn't describe side effects, but for a simple cancel operation the annotations carry the safety profile and the description adds timing context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences (one in English, one in German) with zero fluff. The core action is front-loaded, and the timing constraint is included without padding. Every word 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 zero-parameter tool with no output schema, the description fully covers what an agent needs: the action, the target, and the timing constraint. There are no missing details that would prevent correct invocation. The sibling set further clarifies its role in the deletion workflow.
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 are zero parameters, so the baseline is 4. The description doesn't need to explain any parameters, and the schema is empty. No additional parameter information is required or expected.
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 ('cancel') and resource ('pending deletion request'), clearly distinguishing it from sibling tools like requestAccountDeletion (which creates) and getAccountDeletionStatus (which reads). The German phrase reinforces the exact action. An agent can immediately understand what this tool does without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when a deletion is pending and you want to cancel it. It adds the timing constraint 'possible until the last second before execution,' which clarifies the valid window. It doesn't explicitly name alternatives, but the context is clear enough that an agent would know this is the cancellation action, distinct from requesting or checking status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancelShopifySubscriptionA
Cancel the Shopify subscription — Beendet das Abonnement über appSubscriptionCancel und setzt den Plan auf free. Wirkt sofort und ohne weitere Bestätigung des Händlers; bis zum Ende des bezahlten Zeitraums bleibt der Zugang unverändert. Es wird nichts anteilig gutgeschrieben. Läuft kein Abonnement, ist das kein Fehler — gekuendigt steht dann auf false.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Kennung des Projekts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnly=false, idempotent=false, destructive=false, which are minimal. The description adds substantial behavioral detail: immediate effect without merchant confirmation, access remains until end of paid period, no pro-rata credit, and that a missing subscription is not an error with the cancelled flag set to false. It also names the underlying API method (appSubscriptionCancel). This fully compensates for the sparse annotations and does not contradict them.
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 compact paragraph that front-loads the core action and then lists consequences. It mixes English and German, which slightly reduces clarity, but every sentence conveys meaningful information with no filler. It is appropriately sized for the tool's complexity.
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 tool with no output schema, the description covers the critical behavioral aspects: immediate effect, access continuity, no proration, and edge-case handling (no active subscription). It also references the exact API call. Nothing essential for an agent 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?
The schema has one parameter (projectId) with a description ('Kennung des Projekts'), giving 100% schema description coverage. The description does not add any additional parameter-specific context or explain how to obtain projectId, so the schema already carries the meaning. Baseline of 3 is appropriate because the description adds nothing beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool cancels the Shopify subscription, using a specific verb and resource, and details the effect (sets plan to free). It distinguishes itself from sibling tools like getShopifySubscription and createShopifySubscription by its action, even without naming them. No tautology or ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (cancelling a subscription) but does not explicitly contrast with alternatives like getShopifySubscription or createShopifySubscription. It provides some contextual guidance (immediate effect, no merchant confirmation, no proration, and behavior when no subscription exists) but stops short of explicit when-to-use vs. when-not-to-use guidance. Score 3 reflects implied usage without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
changeAdCampaignA
Change a campaign at the advertising platform in one call — This is THE way to change a campaign: it builds the preview, records the change request, sends it to the platform and reads the value back, all in this single call. Do not wait for anybody and do not call approveAdChange or applyAdChange afterwards. The answer is the complete ledger entry: status (applied, failed, stale, uncertain or reconciliation_required), observed_before, observed_after, provider_response and warnings. Read status: applied means the new value was read back from the platform and is a fact; stale means somebody changed the value after the preview was built and NOTHING was sent; uncertain and reconciliation_required mean the outcome could not be established - call resolveAdChange, and do not repeat the change. warnings never blocks anything, it records what was known: a shared budget, a paused campaign, or conversions of that account not arriving. idempotency_key is yours to choose: the same key with the same values returns the same ledger entry without sending a second time, the same key with different values is a 409. A campaign whose previous change has an open outcome refuses a new one. The only exception to all of this is an ad account whose rule says require_approval: then the answer is 202, waiting_for_approval is true, nothing was sent, and approveAdChange plus applyAdChange follow.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description thoroughly discloses side effects: it sends the change to the platform, records a ledger entry, reads back the value, and details idempotency behavior (same key returns entry without sending), conflict detection (different values with same key gives 409), and the refusal of new changes when an outcome is open. It also explains the approval exception and statuses, providing comprehensive behavioral 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?
The description is dense but well-organized, front-loading the core purpose and then covering exceptions and edge cases in a logical flow. It is a single paragraph but each sentence builds on the previous, avoiding unnecessary repetition while still conveying all critical information. Slightly long but not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the full context needed to use the tool correctly: the primary action, idempotency guarantees, conflict handling, open outcome refusal, the approval exception, and the meaning of the returned statuses and fields. It even names the ledger entry fields and statuses, making the behavior complete even without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the input schema is empty, the description adds meaning by explicitly mentioning the behavior of `idempotency_key` and how it interacts with the change values. However, it does not enumerate the actual parameters for the change payload (e.g., campaign ID, fields to update), leaving some parameter semantics implicit. Given the empty schema, the description adds substantial value, but not exhaustive.
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 the verb ('Change'), the resource ('a campaign at the advertising platform'), and positions it as the primary method for changing campaigns. It explicitly distinguishes it from sibling tools like approveAdChange and applyAdChange, making the tool's purpose 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 provides explicit guidance on when to use this tool vs alternatives: it says not to call approveAdChange or applyAdChange after using this tool, except in the specific case of require_approval, where those follow-ups are required. It also explains what happens with idempotency keys and open outcomes, giving clear usage rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cohort_createB
Create a cohort — Legt eine Kohorte mit Namen und Regeln an. Alle Regeln sind optional und werden mit UND verknüpft: purchases_min/purchases_max (Anzahl Käufe), revenue_min (Mindestumsatz), last_seen_days / first_seen_days (zuletzt bzw. erstmals gesehen innerhalb der letzten n Tage), event_types (hat eines davon ausgelöst), traits (Eigenschaften aus identify(), Gleichheit je Schlüssel). Antwortet mit der Kohorte und der aktuellen Anzahl Personen.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that rules are combined with AND and that the response includes the cohort and current person count, adding behavioral context beyond the annotations. However, it does not explain side effects like persistence or require authentication. The annotations already indicate it is not read-only, so the description adds some value but not extensive behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that front-loads the action and then lists rule types and response. It packs a lot of information efficiently without excessive verbosity. The structure is acceptable, though the long list could be broken into separate 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?
The schema is minimal (only projectId), and there is no output schema. The description compensates by explaining the rule types and response, but it does not specify the format for passing parameters (e.g., JSON structure for event_types, traits), nor whether name is a required parameter. The mismatch between the description and the actual input schema creates ambiguity, making the description incomplete for an agent to reliably call the 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?
The schema only lists projectId, while the description details many other parameters (name, purchases_min, revenue_min, etc.) and explains their meanings. This is valuable because the schema coverage is 0%, but the mismatch between the schema and the description could confuse an agent about how to pass these parameters. The description provides semantics but not syntax or required/optional status beyond 'all rules optional'.
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 the verb 'Create a cohort' and specifies the resource (cohort) and the action (creating with name and rules). It lists the rule types, which helps distinguish it from sibling tools like cohort_update or cohort_delete. The purpose is unambiguous, though it doesn't explicitly contrast with siblings beyond the verb.
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 does not provide any guidance on when to use this tool versus alternatives such as cohort_update, cohort_preview, or cohort_export. It mentions that all rules are optional, which is a parameter guideline, but not about selection. There is no 'when not to use' or mention of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cohort_deleteADestructiveIdempotent
Delete a cohort — Löscht die Regel. Personen und Events bleiben unberührt, die Kohorte war nur eine Sicht darauf.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description transparently discloses the key side effect that deleting the cohort does not delete the underlying people or events. Combined with the destructive and idempotent annotations, an agent understands exactly what will and will not happen.
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 sentence that front-loads the action and then provides a brief side-effect clarification. It is concise and well-structured, though the bilingual text is slightly 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?
The description gives enough context for the tool's core purpose and side effects. It does not mention prerequisites or error conditions, but given the simplicity of a delete operation and the presence of sibling tools, this is largely sufficient. The lack of parameter explanations is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no descriptions for the id and projectId parameters, and the description does not clarify their meanings or constraints. While the names are somewhat self-explanatory, the lack of any explicit explanation leaves room for ambiguity.
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 the tool deletes a cohort and explicitly clarifies that underlying people and events are unaffected, which precisely distinguishes it from sibling tools like cohort_create, cohort_update, and cohorts_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 does not explicitly say when to use this tool over alternatives, but the action is unambiguous and the sibling list makes the use case obvious. The note that underlying data remains unaffected provides helpful guidance for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cohort_exportBRead-onlyIdempotent
Export a cohort as a customer list — Die Mitglieder mit den Spalten em, ph, ph_e164, external_id, SHA-256-Hashes in Kleinbuchstaben, wie Meta (Custom Audience) und Google Ads (Customer Match) sie beim Hochladen erwarten. ph ist der Hash ohne Pluszeichen (Meta), ph_e164 mit (Google). Der Export enthält keinen Klartext — auch dann nicht, wenn zu einer Person Name und E-Mail lesbar vorliegen: Die Plattformen erwarten Hashes, und mehr geht hier nicht hinaus. format=csv liefert eine Datei, sonst JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| format | No | „csv“ für eine Datei; sonst JSON. | |
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and idempotent. The description adds valuable behavioral detail about SHA-256 hashing, no plaintext output, and the specific phone number formats for Meta vs Google, which goes beyond the annotation 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?
The description is somewhat redundant, repeating the no-plaintext and hashing points in both English and German. It is still reasonably concise but could be tightened while preserving the important 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?
There is no output schema, and the description only vaguely indicates a CSV file or JSON response. It does not specify the response structure, error behavior, or required parameter meanings, so an agent lacks enough information for robust 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?
Only the 'format' parameter is described. The required 'id' and 'projectId' parameters have no schema description and are not mentioned in the description, leaving most parameters undocumented.
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 the tool exports a cohort as a customer list, using a specific verb and resource. It also explains the purpose of the hashed columns, making the tool's function 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 explains the output format (CSV vs JSON) but does not explicitly say when to choose this tool over sibling tools like cohort_preview or cohorts_list. Context implies export use, but no direct alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cohort_previewARead-onlyIdempotent
Preview a cohort — Wie viele Personen die Regeln gerade treffen, dazu bis zu zehn Beispiele (umsatzstärkste zuerst). E-Mail-Hashes erscheinen gekürzt.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation already indicates read-only, idempotent, and non-destructive behavior, and the description reinforces this by framing the tool as a preview. It also discloses a key output behavior (truncated email hashes). No side effects are described, but the annotations cover that aspect adequately.
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 concise and well-structured, providing the essential purpose and key output details in a single sentence. It avoids unnecessary verbosity while covering the most important behavioral aspects.
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 gives useful output context but omits parameter explanations and explicit usage boundaries. Given the low schema coverage and no output schema, a bit more detail about the meaning of 'id' and 'projectId' would make the tool self-contained. Still, for a simple preview operation, the core behavior is adequately conveyed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage for the two parameters, and the description does not explain what 'id' or 'projectId' refer to. While the names are somewhat self-explanatory in context, 'id' is ambiguous and could refer to a cohort ID, rule ID, or other entity without explicit documentation.
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 the tool's purpose: previewing a cohort by showing the number of matching persons and up to ten examples sorted by revenue. It also specifies that email hashes are truncated, removing ambiguity about the output. The name and description distinguish it from sibling tools like cohorts_list and cohort_export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need a quick preview of cohort membership), but it does not explicitly state when not to use it or contrast it with alternatives such as cohort_export or cohorts_list. Usage guidance is mostly inferable from the verb 'preview' and the output details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cohorts_listARead-onlyIdempotent
Cohorts of a project — Alle gespeicherten Kohorten mit ihren Regeln und der aktuellen Anzahl Personen. Die Anzahl wird bei jeder Anfrage neu gerechnet; ist die Auswertung gerade nicht erreichbar, fehlt sie (null).
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Kennung des Projekts, z. B. 3f9a1c62-8d4e-4b71-9a02-5c1e7b0d4a88 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond annotations: the count is recalculated per request and can be null when the evaluation is unreachable. This is valuable runtime behavior an agent needs to interpret results correctly. 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?
Two concise sentences, front-loaded with purpose. Every sentence earns its place: the first states what is returned, the second clarifies the dynamic count behavior. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one fully documented parameter and no output schema, the description covers the essential return content (cohorts, rules, person counts) and flags the nullable count edge case. Minor gap: it doesn't enumerate exact fields returned, but with no output schema the description does the job adequately.
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% — the single projectId parameter is fully documented in the schema with a concrete example. The description adds no parameter-specific detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource ('Cohorts of a project') and clearly describes what is returned: saved cohorts with their rules and current person counts. It's clear and distinguishable from the sibling cohort tools (cohort_create/update/delete/preview/export) by the verb 'list' in the name plus the explicit content. Not a 5 because it doesn't explicitly name the sibling it differs from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. It does not mention that cohort_create/update/delete exist for mutations, nor does it give conditions for when listing is appropriate. The behavioral note about the count being recalculated is informative but not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cohort_updateAIdempotent
Change a cohort — Ersetzt Name und Regeln einer Kohorte.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Kennung der Kohorte. | |
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as non-read-only, idempotent, and non-destructive; description adds that it replaces the cohort's name and rules, which is concrete behavioral context beyond the annotations. It does not mention auth or side effects, but annotations lower the bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the action and object, with no filler or redundant elaboration.
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?
Although low-complexity and no output schema, it omits how new name/rules are passed given the schema only lists id/projectId, and it provides no usage context or prerequisites. This leaves the agent with an incomplete call contract.
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?
Input schema describes only id; projectId is undocumented in both schema and description. The description mentions replacing name/rules, but the schema exposes no parameters for supplying them, so it does not clarify parameter meaning and may confuse.
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 explicit action 'Change' plus target 'cohort', and the German clause clarifies exactly what is altered ('Ersetzt Name und Regeln'). This distinguishes it from sibling create/delete/list/export/preview cohort 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?
No explicit statement of when to use this over cohort_create/cohort_delete/cohort_preview or any prerequisites (e.g., cohort must already exist). Only inference from the verb 'Change'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createApiKeyA
Create an API key — Erzeugt einen Schlüssel für Zugriffe ohne Browser (MCP-Server, Kommandozeile, eigene Skripte). Der Klartext wird EINMAL zurückgegeben und ist danach nicht mehr abrufbar, auch nicht für uns.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a critical behavioral detail: the plaintext key is returned only once and is never retrievable afterwards, even by the system. This is not present in the annotations and provides essential transparency about the operation's 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?
The description is concise, consisting of two sentences, and is bilingual but compact. It front-loads the purpose and adds essential behavioral information without unnecessary fluff.
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 creation tool with no output schema, the description adequately covers the core behavior, including the one-time return. It does not mention error conditions or authentication requirements, but these are likely assumed in the broader API context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline score of 4 applies. The description does not reference any parameters because there are none, which is consistent.
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 the action (create an API key) and specifies the intended use cases (MCP server, command line, scripts), distinguishing it from listApiKeys and revokeApiKey by implying creation of a new key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (for non-browser access) but does not explicitly contrast it with listing or revoking keys. The context is clear enough for an agent to decide, but explicit alternatives are not named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createBillingPortalSessionA
Open the Stripe customer portal — Erzeugt eine Sitzung für das Stripe-Kundenportal (Rechnungen, Zahlungsmethode, Kündigung) und liefert die URL. Kein eigenes Rechnungs-Rendern — das Portal ist Stripes Oberfläche. Ohne Stripe-Kunde (noch nie gebucht) oder ohne eingerichtetes Stripe kommt eine ehrliche Meldung statt einer URL.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries the behavioral disclosure. It states that the tool returns a URL and that it may return an honest message instead when prerequisites are missing. It also clarifies it does not render invoices itself, adding meaningful context beyond the basic annotation flags.
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?
Concise and front-loaded with the primary action. Each sentence serves a purpose: stating the function, distinguishing from custom rendering, and noting failure modes. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema and minimal annotations, the description covers the essential behaviors: what it does, what it returns, when it fails, and how it differs from related tools. It is complete enough for an agent to decide when to invoke it and what outcome to expect.
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 are zero parameters, so the baseline is 4. The description adds context about implicit prerequisites (existence of a Stripe customer and Stripe configuration) which is relevant for the agent even though there are no explicit parameters.
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 the action (create a Stripe customer portal session) and the resource (Stripe customer portal), and specifies what it returns (URL). It also differentiates from related tools by noting it is Stripe's surface for invoices, payment methods, and cancellation, and explicitly excludes custom invoice rendering.
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 context on when to use the tool (for Stripe-hosted customer portal) and when not (if custom invoice rendering is needed). It also outlines failure conditions (no Stripe customer or no Stripe setup) which guides an agent on when not to expect a URL. It does not name specific sibling tools, but the exclusion and scenario details are sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createCheckoutA
Start a plan change — Erzeugt eine Stripe-Checkout-Sitzung für den Mengentarif und liefert die Bezahl-URL. Die Menge im Abonnement ist die Zahl eigener Projekte, mindestens eine. Ab 26 eigenen Projekte gibt es keinen Listenpreis; dann antwortet der Endpunkt mit einer Bitte um Kontakt statt einer Bezahl-URL. Ist Stripe noch nicht eingerichtet, kommt ebenfalls eine ehrliche Meldung statt eines Fehlers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses side effects (creates a Stripe session) and edge-case behavior (25+ projects returns contact request, Stripe not set up returns message instead of error). This goes beyond the annotations, which already indicate a mutation (readOnly=false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it opens with the primary action, then elaborates on quantity rules and exception handling. No redundant or vague statements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main outcome (payment URL) and exceptions, but does not specify the exact response format or error codes. Since no output schema is provided, the description gives enough context for an agent to understand what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the baseline of 4 applies. The description does not need to explain any input fields, and none are omitted.
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 the tool's purpose: creating a Stripe checkout session for a volume plan change and returning the payment URL. It distinguishes itself from billing portal operations like createBillingPortalSession by focusing on the checkout flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (starting a plan change to the volume plan) and includes specific conditions (e.g., for 26+ projects no list price, returns contact request). It does not explicitly name alternative tools, but the context is sufficient for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createProjectA
Create a project in the organisation — Legt ein weiteres Projekt an und gibt ihn samt Ingest-Kennung zurück — derselbe Weg, den der Registrier-Assistent geht. Damit lässt sich ein Onboarding vollständig über die Schnittstelle fahren, ohne Klickstrecke. Die Domain wird normalisiert (ohne Schema, ohne www); dieselbe Domain zweimal in derselben Organisation wird abgelehnt, nicht stillschweigend verdoppelt. Ein weiterer eigener Projekt erhöht die Abo-Menge.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false), the description discloses that it returns an ingest key, normalizes domains (removes schema and www), rejects duplicate domains in the same organisation, and increases the subscription count. This gives an agent concrete expectations about side effects and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is verbose and bilingual, repeating the same core action in English and German ('Create a project' / 'Legt ein weiteres Projekt an'). It includes extraneous promotional phrases like 'ohne Klickstrecke' and 'Abo-Menge' that do not aid tool invocation. It is front-loaded with the primary action but could be trimmed.
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 creation tool with no input schema and no output schema, the description covers the essential behavior: what it creates, what it returns (ingest key), constraints (domain normalization, duplicate rejection), and a side effect (subscription increase). It does not specify error handling or authentication, but these are not expected given the minimal schema and the operation type.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the input schema is empty, so the baseline is 4. The description does not need to elaborate on parameters, though it mentions domain handling which implies an implicit input that is not reflected in the schema – this is a minor mismatch but does not affect scoring since there are no formal parameters.
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 clear verb+resource: 'Create a project in the organisation'. It distinguishes this from all sibling tools because it is the only creation tool among many listing/reading tools. The bilingual phrasing adds context but the intent 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 states a use case ('Damit lässt sich ein Onboarding vollständig über die Schnittstelle fahren') and implies this is the programmatic path for onboarding. It does not explicitly name an alternative tool or a 'when not to use', but as the sole create operation, the guidance is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createShopifySubscriptionA
Start a Shopify subscription — Legt über die Shopify Billing API ein wiederkehrendes Abonnement an und liefert die confirmation_url — die Seite, auf der der Händler bei Shopify zustimmt. Erst danach wird der Plan gesetzt, ausgelöst durch den Webhook app_subscriptions/update oder beim nächsten Abruf des Status. Auf einem Entwicklungs-Store entsteht ein Testabonnement, es fliesst kein Geld. Läuft bereits ein Abonnement (etwa nach einer Neuinstallation innerhalb des bezahlten Zeitraums), kommt bereits_aktiv gleich true und keine URL — es entsteht bewusst kein zweites. Die URL MUSS im obersten Fenster geöffnet werden (target _top), sonst bleibt der eingebettete Rahmen leer.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Kennung des Projekts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the asynchronous plan activation via webhook, the dev-store test subscription with no money, and the intentional prevention of duplicate subscriptions. These behaviors are not captured by the annotations (readOnly=false, idempotent=false, destructive=false) and add essential context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient, front-loading the core action and then covering edge cases (dev store, already active) and a critical usage requirement (target _top). Each sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the full lifecycle: creation, confirmation flow, dev-store behavior, duplicate prevention, and the top-window requirement. It even explains the return values (confirmation_url, already_aktiv) despite no output schema, making it complete 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?
The only parameter, projectId, is already fully described in the schema (100% coverage). The tool description does not add further semantics for this simple identifier, 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 states a specific action (start a Shopify subscription via the Billing API) and the key output (confirmation_url), clearly distinguishing it from sibling tools like getShopifySubscription and cancelShopifySubscription. The verb and resource are 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?
It explains when the tool should be used (starting a subscription), what happens if a subscription already exists (returns already_aktiv=true, no URL), and provides a critical usage instruction (open URL in top window, target _top). This gives clear contextual guidance beyond the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteConnectionADestructiveIdempotent
Disconnect a platform from this project — Deletes the row including the encrypted tokens — for accounts that were revoked at the provider or changed hands. Use disableConnection instead when sending should only pause. Answers 409 when the connection belongs to the organisation.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Plattform: ga4, google_ads, meta, linkedin, gtm, tiktok, pinterest, microsoft_ads, openai_ads. Alle ausser openai_ads werden über authorizeConnection verbunden; openai_ads nimmt einen API-Schlüssel über setConnectionBearerKey. | |
| projectId | Yes | Kennung des Projekts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true, so the description adds value by specifying that it deletes encrypted tokens and the exact error scenario. It does not contradict annotations; it enriches them with concrete consequences and edge-case behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences: the first defines the primary action and effect, the second gives the alternative and a key error. No filler, all information is relevant and 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?
The description covers the essential operational context: the destructive nature, the alternative tool, the intended scenario, and a distinguishing error. Given the schema fully documents parameters and there is no output schema to describe, nothing critical is missing for an agent to invoke 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%, and the schema already thoroughly describes both parameters, especially 'type' with a detailed list of accepted values and connection methods. The description adds no additional parameter-specific guidance, so it meets the baseline for high coverage without extra explanation.
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 the tool's function: 'Disconnect a platform from this project' and 'Deletes the row including the encrypted tokens'. It distinguishes itself from siblings like disableConnection and deleteOrgConnection by specifying the exact operation and scope (project-level, full deletion with tokens).
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 provides an alternative: 'Use disableConnection instead when sending should only pause.' It also specifies the ideal use case ('for accounts that were revoked at the provider or changed hands') and an error condition (409 when connection belongs to organisation), giving clear guidance on when to invoke this tool versus others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteOrgConnectionADestructiveIdempotent
Disconnect a platform from the organisation — Deletes the row including the encrypted tokens. Every project that inherited it stops sending to this platform; affected_projects says how many that is. Owners only.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and non-read-only behavior. The description adds valuable context: it deletes encrypted tokens and reports affected_projects, and it states the permission restriction. It does not contradict the annotations and enriches the safety picture beyond what structured data provides.
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 main action, and each sentence adds essential information: the operation, the consequence on projects, and the permission. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While it covers the destructive effect and permission, it omits the required parameter explanation and provides only partial response details (affected_projects). Since there is no output schema, the description should describe the full return value, but it only mentions one field. The missing parameter documentation is a significant completeness failure.
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 only parameter 'type' is completely undocumented in both the schema and the description. Schema coverage is 0%, and the description never mentions what 'type' should be (e.g., platform identifier). The agent has no way to know what value to pass, making this a critical gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Disconnect a platform from the organisation' and specifies the deletion of the row including encrypted tokens. It differentiates from disableOrgConnection by highlighting permanent deletion, making the purpose 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?
It mentions the permission requirement ('Owners only') and the effect on projects, which gives context. However, it does not explicitly contrast with alternatives like disableOrgConnection or explain when to choose deletion over disabling. The usage guidance 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.
detectAndSaveProjectPlatformA
Detect the project platform and save it — Wie detectProjectPlatform, prüft aber die hinterlegte Domain des Projekts und speichert ein eindeutiges Ergebnis direkt am Projekt. Bei unklarem Befund wird nichts geändert, lieber weiter fragen als falsch raten.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and idempotentHint=false, indicating mutation. The description adds valuable behavioral context: it saves a result directly to the project, and it conditionally does nothing on unclear findings ('wird nichts geändert'). This goes beyond the annotations by explaining the conditional behavior and the safety stance of preferring to ask over guessing. It doesn't contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and efficiently conveys the key differences from the sibling tool and the conditional behavior. No filler words; every sentence 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 tool with one simple parameter and no output schema, the description covers the essential action, the condition for inaction, and the distinction from its sibling. It doesn't describe return values or error handling, but these are less critical given the tool's simplicity. The description is sufficiently complete for an agent to invoke 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?
The schema has one parameter, projectId, with no description coverage (0%). The description does not explain the parameter, but the name is self-explanatory as a project identifier. Since there is no schema description, the description should ideally compensate, but the single obvious parameter reduces the need. A score of 3 is appropriate because it doesn't add meaning beyond the parameter name, which is clear on its own.
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 the action: 'Detect the project platform and save it' — a specific verb and resource. It also distinguishes itself from the sibling detectProjectPlatform by noting it saves the result and checks the project's domain. This makes the tool's purpose unambiguous and differentiates it from its nearest alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly references detectProjectPlatform and explains the difference (this one saves), giving context for when to choose this tool. It also includes a critical usage guideline: 'Bei unklarem Befund wird nichts geändert, lieber weiter fragen als falsch raten' — when findings are unclear, the tool does nothing and suggests asking rather than guessing. This provides clear when-to-use and when-not-to-use guidance, though it could be even more explicit about alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detectProjectPlatformA
Detect the project platform at an address — Ruft die Startseite und ein paar bekannte Pfade ab und schließt daraus auf das Projekt-System (WooCommerce, Shopware, Shopify, Magento, PrestaShop, OXID). Nennt die Belege im Klartext. Bei zu wenigen eindeutigen Merkmalen lautet die Antwort „unbekannt“, ein falsch geratenes System schickt den Kunden in die falsche Anleitung.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no read-only or idempotent hints, so the description carries the full burden. It discloses that the tool fetches pages (network activity), infers the platform, and returns 'unknown' on ambiguity, warning about false guesses. This adds meaningful behavioral context beyond annotations, though it does not mention error handling for unreachable addresses.
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, well-structured sentence that covers the method, expected outputs, and fallback behavior without any fluff. It is appropriately sized and 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?
While the description explains the detection method and outputs, it omits details such as the exact output format (since there is no output schema), how the address is determined, and error scenarios. This leaves some gaps for an agent relying solely on the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. The description mentions 'an address' but does not explain where it comes from given the empty schema, which could be a source of confusion. However, since there are no params to document, the description adequately compensates.
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 the tool detects the project platform by fetching pages and inferring from known paths, listing specific systems. However, it does not differentiate from the sibling detectAndSaveProjectPlatform, so it lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus detectAndSaveProjectPlatform. The description implies usage for detection but provides no exclusions or alternatives, leaving the agent to infer the distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disableConnectionA
Pause sending to a platform — Keeps the credentials, so resuming needs no new authorization. Events are held back and delivered once the connection is enabled again. Answers 409 when the connection is inherited from the organisation.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Plattform: ga4, google_ads, meta, linkedin, gtm, tiktok, pinterest, microsoft_ads, openai_ads. Alle ausser openai_ads werden über authorizeConnection verbunden; openai_ads nimmt einen API-Schlüssel über setConnectionBearerKey. | |
| projectId | Yes | Kennung des Projekts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description discloses that credentials are preserved, events are queued and delivered upon re-enablement, and that a 409 is returned for inherited connections, providing clear side-effect and error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, uses three focused sentences covering purpose, behavior, and error condition, with no redundant 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?
Given the simple two-parameter interface and absence of output schema, the description fully explains the tool's effect, side effects, and edge case (409), making it complete for correct usage.
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?
Both parameters (type and projectId) have schema descriptions covering 100% of params, but the tool description adds no additional meaning beyond what the schema already 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 clearly states the tool pauses sending to a platform (specific verb 'Pause' and resource 'connection'), and distinguishes it from sibling tools like enableConnection and deleteConnection by noting it keeps credentials and holds events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (temporary pause) by contrasting with resuming via enableConnection, and mentions a 409 error for inherited connections, but does not explicitly name alternatives or state 'use this instead of deleteConnection'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disableOrgConnectionA
Pause an organisation connection — Affects every project inheriting it — affected_projects says how many; events are held back until it is enabled again. The credentials stay. Owners only.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, idempotentHint=false, destructiveHint=false. The description adds substantial behavior beyond that: it affects every inheriting project, holds events back until re-enabled, and preserves credentials. The 'credentials stay' note confirms the destructiveHint=false annotation, and no claim contradicts 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?
Compact and front-loaded with the primary action, using em-dash clauses that each carry distinct information (scope, effect, credential behavior, permission). Slightly dense punctuation, but no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Behavioral consequences are thoroughly covered, but for a mutation tool with no output schema and no annotations describing the response, the description should explain what type expects and what the call returns. The unexplained sole parameter is a significant gap for an agent needing to invoke 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?
There is one required parameter, type, with 0% schema description coverage, and the description never explains what type should contain or which values are valid. The only field mentioned, affected_projects, is a return value, not a parameter. The description fails to compensate for the schema gap entirely.
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 ('Pause') and resource ('organisation connection'), and the clause 'Affects every project inheriting it' distinguishes it from its sibling disableConnection, which targets a project connection. An agent can tell this apart from enableOrgConnection and deleteOrgConnection without inspecting 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 description implies usage context: pause (vs. delete, which removes, and enable, which resumes) via 'until it is enabled again' and 'credentials stay', and the 'Owners only' restriction gives a permission gate. It does not explicitly name the alternative tools or state when not to use it, but the contrast is reasonably inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disconnectShopifyADestructiveIdempotent
Disconnect Shopify — Entfernt Webhooks und Web Pixel im Store und löscht das Zugriffstoken. Die App bleibt im Store installiert, bis der Händler sie dort deinstalliert, sie kann nur nichts mehr. Ohne SHOPIFY_API_KEY/SECRET: 503.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Kennung des Projekts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint and idempotentHint annotations, the description details exactly what is removed (webhooks, pixel, token) and what remains (app installed but inert). It also discloses a specific error condition (503 without SHOPIFY_API_KEY/SECRET), offering rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the action, scope, and error condition without redundancy. The description is front-loaded with the primary purpose and each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description fully covers what the tool does, the resulting state, and a failure condition. An agent has all necessary information to decide and invoke 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?
The description does not elaborate on the projectId parameter, but the schema already provides a clear description ('Kennung des Projekts') with 100% coverage. No additional parameter meaning is needed, 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 clearly states the specific action: disconnects Shopify by removing webhooks and web pixel and deleting the access token. It also clarifies the app remains installed but non-functional, which distinguishes it from related tools like cancelShopifySubscription or getShopifyConnection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool (to disable the Shopify integration without uninstalling the app) and implies the alternative of full uninstall by noting the app remains. However, it does not explicitly name alternative tools or give 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enableConnectionA
Resume sending to a paused platform — Events held back while the connection was paused are delivered now. Answers 404 when the project has no connection of its own for this platform, and 409 when the connection is inherited from the organisation — resume that one with enableOrgConnection, where it says how many projects it affects.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Plattform: ga4, google_ads, meta, linkedin, gtm, tiktok, pinterest, microsoft_ads, openai_ads. Alle ausser openai_ads werden über authorizeConnection verbunden; openai_ads nimmt einen API-Schlüssel über setConnectionBearerKey. | |
| projectId | Yes | Kennung des Projekts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a mutating, non-idempotent, non-destructive operation. The description adds meaningful behavioral context: it delivers held-back events and specifies 404/409 error scenarios. It doesn't contradict annotations and goes beyond them by explaining side effects and error handling, though it doesn't cover potential edge cases like partial delivery or idempotency consequences.
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 zero redundancy. The core purpose is front-loaded, and the error/alternative guidance follows immediately. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter mutation tool with well-documented schema, the description covers purpose, usage conditions, error cases, and alternative. No output schema exists and none is needed. The only minor gap is the lack of an explicit statement about prerequisites (e.g., connection must exist), but that's implied by the error responses. Overall, 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 coverage is 100%: both parameters are described, with type listing valid platforms and connection method. The description adds no parameter-specific details beyond the schema, so the baseline of 3 applies—the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Resume sending to a paused platform.' It distinguishes itself from the sibling enableOrgConnection by explicitly naming the condition for each error case (404 vs 409), so an agent can confidently pick this tool for project-owned connections.
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 explicitly says when to use the tool (resume a paused platform) and when not to, routing the agent to enableOrgConnection for inherited connections and noting the error responses that indicate those conditions. This is direct, unambiguous guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enableOrgConnectionA
Resume an organisation connection — Affects every project inheriting it — affected_projects says how many; events held back meanwhile are delivered. Owners only.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations providing no hints (readOnlyHint, idempotentHint, destructiveHint all false), the description carries the behavioral disclosure burden. It discloses that the action affects all inheriting projects, that held events are delivered upon resume, and that it is restricted to owners. These are meaningful behavioral details beyond the bare annotations, though it omits idempotency and reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact—a single sentence with em dashes that front-loads the core purpose. It packs multiple pieces of context (scope, side effect, permission) without bloat. It could be structured more cleanly, but it is appropriately sized and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and one undocumented parameter, the description is incomplete. It covers side effects and permissions but entirely omits any explanation of the 'type' parameter, which is required. An agent would struggle to call it correctly without additional knowledge.
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 required parameter 'type' (string) is entirely undocumented. Schema description coverage is 0%, and the description never mentions the parameter, leaving the agent without any clue about what value to supply. The description fails to compensate for the schema gap, making this the weakest dimension.
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 the action 'Resume an organisation connection' with a specific verb and resource. The mention of 'Affects every project inheriting it' and the explicit 'organisation' qualifier distinguishes it from the sibling 'enableConnection' tool, which presumably handles non-org connections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for resuming an org connection after it was disabled, and it notes the scope ('affects every project inheriting it') and permission ('Owners only'). It doesn't explicitly name alternatives or state when not to use it, but the 'organisation' qualifier and side-effect context give adequate guidance for a typical agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getAccountDeletionStatusARead-onlyIdempotent
Deletion status of the organisation — Ob eine Löschung beantragt ist, und wenn ja, seit wann und für welchen Termin (sieben Tage nach Antrag). Nur für Inhaber — bei anderen Rollen 403.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral details beyond the readOnly/idempotent annotations: non-owners receive a 403, and the deletion date is always seven days after the request. These are useful runtime behaviors not captured by 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 names the resource and what it returns. The German phrasing is slightly dense but still concise and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with no parameters, no output schema, and annotations already covering safety, the description provides the essential details: the returned status fields and the 403 condition. 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?
The tool has zero parameters, so the schema is trivially covered. Per rubric, a zero-parameter tool gets a baseline of 4; the description adds no parameter-specific information because there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the exact purpose: returns deletion status of the organisation, including whether a deletion is requested, since when, and the target date (seven days after request). The name and description together clearly distinguish it from sibling tools like requestAccountDeletion and cancelAccountDeletion, which are action-oriented rather than status queries.
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 as a status check but does not explicitly contrast with the request/cancel deletion siblings. It does note an access restriction (only for owners, others get 403), which is a usage constraint but not guidance on selecting this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getAdChangeARead-onlyIdempotent
State of one change request — The current state of a single change request including the platform response that was recorded for it. A preview that has run past its expiry is reported as expired here, even when the background run has not touched it yet - a preview from yesterday must never take effect today.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the change request, from previewAdChange. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering safety. The description adds significant behavioral context: that expired previews are reported as 'expired' even if the background run hasn't caught up, and the business rule that old previews must not take effect. This goes beyond the annotations, though it doesn't cover other behaviors like error handling or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. The first sentence states the core purpose, and the second adds a crucial edge-case behavior. Both are front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description reasonably covers what the tool returns: state and platform response. It also explains the expiry behavior. It could be more explicit about the exact structure of the state, but the description is adequate for an agent to invoke 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?
The schema already fully describes the id parameter, including its source (from previewAdChange). Schema description coverage is 100%, so the baseline is 3. The description does not add further parameter-specific information, so no bonus is warranted.
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 the tool returns the current state of a single change request, including the recorded platform response. It distinguishes from listAdChanges (which lists) and other mutation tools. The phrasing 'State of one change request' is specific and uses an implicit verb that matches the 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?
The description does not explicitly state when to use this over alternatives, but it provides a key behavioral nuance about expired previews that is relevant for decision-making (e.g., checking status before approval). It implies this is the correct tool for retrieving current state, though it doesn't explicitly exclude other tools like approveAdChange or rejectAdChange.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getAdMetricsARead-onlyIdempotent
Platform metrics per campaign and day, as last synced — The numbers exactly as the advertising platform reports them - spend, clicks, impressions, conversions and conversion value per campaign. Every answer carries source: "platform" and synced_at, because these are their numbers and a stored copy of them: nothing here is recalculated, no currency is converted and no total is built across accounts. Amounts are micros of the ACCOUNT currency (35000000 = 35.00); the currency of each account is listed in ad_accounts, and each row repeats it. conversions may be fractional - Google counts attributed fractions - and is null when the platform did not report it, which is not the same as zero. Without parameters the window is the last 30 days over every ad account of the organisation; granularity=total sums the window per campaign and leaves day null. Numbers are read from our database, never fetched live - use syncAdAccount to refresh them.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last day of the window, inclusive, YYYY-MM-DD. Defaults to today (UTC). | |
| from | No | First day of the window, YYYY-MM-DD. Defaults to 29 days before `to`. | |
| platform | No | Restrict to one platform, e.g. google_ads. | |
| campaign_id | No | Campaign id as the platform knows it, from listCampaigns.external_id. | |
| granularity | No | day returns one row per campaign and day, total sums the window per campaign. | |
| ad_account_id | No | Id from listAdAccounts, not the id at the platform. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds substantial behavioral context: numbers are exactly as reported (no recalculations), amounts are micros of account currency, conversions may be fractional and null vs zero, data comes from the database (never live), and every row includes source and synced_at. This far exceeds what annotations provide and fully discloses data semantics.
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 long but every sentence earns its place. It is front-loaded with the core purpose, then dives into necessary details about data provenance, currency, null handling, defaults, and refresh alternatives. No fluff; each clause clarifies a behavior an agent would otherwise have to infer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six optional parameters and no output schema, the description compensates by explaining the return structure (source, synced_at, per-row currency, fractional conversions, null handling) and default behaviors. An agent has all information needed to call the tool correctly and interpret results without additional lookups.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds meaningful semantics beyond the schema: defaults for to/from, granularity=total sums per campaign and leaves day null, ad_account_id refers to listAdAccounts (not platform id), campaign_id from listCampaigns.external_id, and the platform enum is explained with an example. This enriches the agent's understanding of each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise purpose: returning platform metrics per campaign and day, as last synced. It distinguishes itself from siblings like syncAdAccount (live fetch) and clearly scopes what it does and does not do (no recalculation, no currency conversion, no cross-account totals). An agent can confidently select this tool for read-only metric queries.
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 states the default behavior without parameters (last 30 days across all ad accounts), explains the effect of granularity=total, and points to syncAdAccount as the alternative for live data. This gives clear when-to-use and when-not-to-use guidance beyond any sibling descriptions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getBillingStatusARead-onlyIdempotent
Plan and usage of the organisation — Aktueller Tarif, seine Grenzen und die Nutzung des laufenden Kalendermonats. Bezahlt wird nach der Zahl eigener Projekte (projects_eigene), mit Rabatt ab Menge; freigegebene Projekte (projects_freigegeben) sind beim Eigentümer bezahlt und kosten hier nichts. Das Feld preis nennt Preis je Projekt, Gesamtpreis und angewandte Rabattstufe in Cent, oder art gleich auf_anfrage ab 26 eigenen Projekte, dann sind beide Preisfelder null. Events sind ein Topf über alle eigenen Projekte; gezählt wird beim Empfang, nicht je Zielplattform, und Historienimport wie Stornos zählen nie mit. Zustand: ok, warnung (ab 80 %) oder überschritten.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds useful context about the returned data (e.g., pricing tiers, event counting) without contradicting the annotations. It does not introduce any unexpected 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?
The description is moderately concise, providing essential details in a few sentences. It is somewhat verbose with repetition (e.g., pricing and event counting explained twice in slightly different terms), but it is not overly long and each sentence adds meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description thoroughly explains what the tool returns: plan, usage limits, pricing per project, discount tiers, event counting rules, and status indicators. This gives an agent full context of the expected output, even without a separate 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?
The tool has no parameters, so schema coverage is trivially 100%. The description does not need to explain parameters, and none are referenced, making this a non-issue.
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 provides the plan and usage of the organisation, detailing pricing, events, and status. It is unambiguous that this is a billing/usage read operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to retrieve current billing status and usage details, which is clear from context. However, it does not explicitly mention when to use it over alternative tools, but given the lack of parameters and the read-only nature, the intended usage is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getChannelPullBRead-onlyIdempotent
One pull with its data — Wie die Liste, zusätzlich mit data, den tatsächlich geholten Konten, Kampagnen, Pixeln und Properties. Damit belegt der Assistent die Ziel-Konfiguration vor, statt den Kunden Kennungen abtippen zu lassen.
| Name | Required | Description | Default |
|---|---|---|---|
| pullId | Yes | ||
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so safety is covered. The description adds that the tool returns actual data (accounts, campaigns, pixels, properties), which is useful. However, it does not describe pagination, error handling, or the exact structure of the returned data. It adds some value beyond annotations but not deeply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long and front-loads the core purpose in the first sentence. The second sentence explains the benefit. It is concise and free of fluff, though the German phrasing is slightly awkward.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get operation with two required parameters, the description is reasonably complete: it states what the tool returns and its intended use. However, there is no output schema, and the description does not detail the exact return format (e.g., nested structure, field names). It also references 'the list' without naming listChannelPulls, which could confuse an agent unfamiliar with the domain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the parameters (projectId, pullId) at all. The agent must infer their purpose from the names alone. For a tool with undocumented parameters, the description should compensate, but it provides no parameter-specific 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?
The description states the tool retrieves a single pull with its data, specifically including fetched accounts, campaigns, pixels, and properties. It distinguishes itself from the list tool by mentioning 'Wie die Liste, zusätzlich mit data', implying it is the detailed variant of a list operation. The purpose is clear, though it could be more explicit in naming the sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains a concrete use case: pre-filling target configuration so the customer doesn't have to type identifiers. This implies when to use the tool, but it does not explicitly state when not to use it or compare with alternatives beyond the vague 'Wie die Liste' reference. More direct guidance would be better.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getConnectionInventoryBRead-onlyIdempotent
Which accounts this authorization can reach, and who already uses them — Everything the screen after the OAuth return needs: where the credentials sit today (ebene), whether that can still be changed, and one entry per reachable account with a readable name, a hint to recognise it by, whether this project is already assigned to it and which OTHER projects of the organisation use it (belegt_von) — the warning against a duplicate assignment nobody else notices. Answers 404 for platforms without an account picker and 409 while the account fetch is still running or the platform is not connected.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Plattform: ga4, google_ads, meta, linkedin, gtm, tiktok, pinterest, microsoft_ads, openai_ads. Alle ausser openai_ads werden über authorizeConnection verbunden; openai_ads nimmt einen API-Schlüssel über setConnectionBearerKey. | |
| projectId | Yes | Kennung des Projekts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds genuine value beyond that by disclosing 404 (platform without account picker) and 409 (fetch still running or platform not connected) error behaviors and describing the 'ebene' / 'belegt_von' fields. 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?
The description is a single dense run-on paragraph with nested parentheticals, making it hard to scan. Key facts like error codes and fields are packed into one long sentence rather than front-loaded or structured, hurting 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 burden of describing return values, and it does cover the per-account entries and error cases. Coverage is adequate but the disorganized style makes it harder to absorb, and it never names sibling tools for comparison.
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 (type, projectId) are already documented in the schema. The description does not add syntax or semantics for the parameters beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool lists reachable accounts for an authorization and who already uses them, with a clear post-OAuth context. It is specific about verb and resource, but the purpose is buried in a run-on sentence and never names a sibling tool it differs from, so differentiation is 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?
It gives a concrete usage context ('Everything the screen after the OAuth return needs'), which implies when to call it. However, it never states exclusions or names alternatives such as listOrgConnections, getOrgConnectionMap, or listAdAccounts, so routing among siblings 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.
getEventRoutingBRead-onlyIdempotent
Which events go to which destination — Die aktuellen Regeln, die Voreinstellungen mit Begründung und die tatsächlich eingetroffenen Event-Arten der letzten 30 Tage. Letztere sind wichtig, weil eigene Events als freier Text ankommen, ein Tippfehler erzeugt sonst lautlos eine neue Art.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (read-only, idempotent, non-destructive), the description reveals that the tool also returns actually received event types from the last 30 days and explains why this matters (typos can silently create new event types). This adds useful context about the returned data and its significance, going beyond the basic annotation flags.
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 relatively short and to the point, with two sentences. The first sentence states the main purpose, and the second adds a reason why the recent event types are included. It is slightly verbose with the explanation about typos, but it remains concise and well-structured, with no redundant 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?
The description covers the main functionality—retrieving routing rules, defaults, and recent event types—and even explains the rationale for the latter. However, it does not mention any output format, error conditions, or how the projectId parameter is used. Given that there is no output schema, some aspects are left to inference, but the core purpose is adequately covered.
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 only parameter, projectId, is not described in the schema (coverage 0%) and the tool description does not mention it at all. The name 'projectId' is fairly self-explanatory as an identifier for a project, but since the description provides no additional context about its role or format, it does not compensate for the lack of schema documentation.
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 what the tool does: it shows which events go to which destination, including current rules, defaults, and recent event types. This distinguishes it from the sibling saveEventRouting, which modifies routing. However, it does not use a standard verb like 'get' or 'retrieve', but the name and content make the purpose 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 implies the tool is for retrieving routing information, but it does not explicitly state when to use it or contrast it with alternatives. There is no direct guidance on when to prefer this over saveEventRouting or other read-only project tools. The purpose is clear enough to infer usage, but explicit guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getGtmImportCRead-onlyIdempotent
Status and findings of the last import — Der letzte Import dieses Projekts: Status, ein Satz für die Oberfläche und , sobald fertig, der Befund je Tag samt Empfehlung. import ist null, solange nie einer lief. pending erspart dem Frontend das Nachrechnen, ob es weiter abfragen muss.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable context about the response: it mentions the fields `import` (null if never run) and `pending` (indicating whether to keep polling), which goes beyond the annotations and helps the agent understand the tool's 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?
The description is not concise, mixing English and German awkwardly and containing a typo ('und , sobald fertig'). It front-loads the purpose but then adds details in German that may be less accessible. It is two sentences but could be streamlined and made language-consistent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main response content: status, UI sentence, per-day findings with recommendations, and the `import`/`pending` fields. However, it does not explain the output structure or format (since there is no output schema), nor does it differentiate from the sibling getProjectImportStatus, leaving some contextual 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?
The schema has 0% description coverage for the single required parameter `projectId`. The tool description does not mention the parameter at all, failing to compensate for the lack of schema documentation. The agent must infer that `projectId` refers to the project identifier, but no confirmation or additional context is provided.
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 the tool returns status and findings of the last import, which is clear enough for a basic understanding. However, it does not explicitly differentiate from the sibling tool getProjectImportStatus, and the term 'findings' is vague. The mixed English/German text may also reduce clarity for non-German-speaking agents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like getProjectImportStatus or startGtmImport. The description mentions that `pending` indicates if further polling is needed, but it does not state conditions for choosing this tool over others, nor does it provide exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getLatestTrackingAuditARead-onlyIdempotent
Latest scan for a domain — Der jüngste Lauf zu dieser Domain, die Grundlage für dauerhafte Report-Adressen. audit ist null, wenn die Domain noch nie gescannt wurde.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description does not need to repeat safety. It adds valuable behavioral detail: the `audit` field is null if the domain has never been scanned, and it explains the tool's role in generating permanent report addresses. This goes beyond the annotations and helps the agent understand return semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loads the primary purpose, and adds the null condition. There is no fluff or repetition. It is efficiently written and easy 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 tool with no parameters, no output schema, and annotations covering safety, the description provides the essential behavior (latest scan, null when never scanned) and a use case. However, it lacks explicit differentiation from the sibling 'getTrackingAudit' and does not specify what the audit object contains. These gaps are minor but prevent a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is trivially 100%. The description mentions 'for a domain' but does not explain how the domain is determined (likely from current context). With zero parameters, the description carries the burden of clarifying implicit inputs, and it leaves this ambiguous, so it does not fully compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the latest scan/audit for a domain, and even specifies the null case. It implies a 'get' operation on a resource (domain's latest audit). However, it does not explicitly differentiate itself from the sibling tool 'getTrackingAudit', which likely fetches a specific audit, so the purpose is clear but not sharply distinguished.
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 mentions a use case ('basis for permanent report addresses') which gives context, but it does not explicitly state when to prefer this tool over alternatives like 'getTrackingAudit' or 'startTrackingAudit'. There is no direct comparison or exclusion, so guidance 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.
getOrgConnectionMapARead-onlyIdempotent
Which project is attached to which advertising account — One row per project and platform: the level the credentials sit on, the account with its readable name and a hint to recognise it by, whether it is the primary one, and whether the setup is complete (vollstaendig, with fehlt naming what is still missing). Projekte WITHOUT an assignment are in here too, with konto_id: null — "not assigned" is the row people are looking for.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value beyond these by detailing the output structure: it explains that projects without assignments are included with konto_id: null, and that completeness is indicated by 'vollstaendig' with 'fehlt' for missing items. This gives the agent a clear picture of what to expect without contradicting 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 well-structured: it opens with the core question, then details the row structure, and ends with the special case of unassigned projects. It is informative without being excessively verbose, though a bit long. Every sentence contributes meaning, and the key point about null konto_id is front-loaded in the final sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with no parameters and no output schema, the description fully explains what the agent will receive: the exact fields per row, the inclusion of unassigned projects, and the naming conventions for completeness. There is nothing missing that an agent needs to understand the tool's behavior or interpret the response 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?
The tool has zero parameters and schema coverage is trivially 100%. Since there are no parameters to document, the baseline score of 4 applies. The description does not need to explain parameters, and it appropriately focuses on output semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: mapping projects to advertising accounts, with one row per project and platform. It specifies the output content including credential level, account name, hint, primary flag, and completeness status. While it does not explicitly differentiate from sibling tools like listOrgConnections, the focus on the project-to-account mapping and the inclusion of unassigned projects gives it a distinct identity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need a project-account mapping with completeness details), but it does not explicitly state alternatives or when not to use it. There is no guidance about choosing this over listOrgConnections or getConnectionInventory, leaving the agent to infer context from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getProjectChannelsBRead-onlyIdempotent
Most active channels — Woher die Besucher kommen, Google Ads, Meta, organische Suche, Verweise, direkt, mit Events, Käufen und Umsatz je Kanal.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, and non-destructive behavior. The description adds no further behavioral details or side-effect warnings, but it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that conveys the core purpose and key data dimensions without unnecessary detail or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no description of the return structure, and parameter semantics are missing. The description communicates the general content but leaves important invocation and response details unspecified.
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 schema provides no descriptions for projectId or days, and the description does not explain the meaning or format of either parameter. 'days' is especially ambiguous with no indication of lookback window or accepted values.
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?
Description clearly identifies the tool as returning the most active channels, with traffic sources, events, purchases, and revenue per channel. The resource (channels for a project) is unambiguous and distinct from sibling tools like top pages or funnels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to use this tool versus alternatives such as getProjectKpis, getProjectTopPages, or getProjectDailySeries. The description implies channel-level analysis but does not state when it should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getProjectDailySeriesBRead-onlyIdempotent
Events per day — Zeitreihe der empfangenen Events. Zeigt Einbrüche und Ausreißer auf einen Blick.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Anzahl Tage rückwärts (Standard 14). | |
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, idempotent, and non-destructive; the description adds that it returns received events per day, but does not disclose potential limitations like date ranges, pagination, or data availability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two short clauses convey the resource, metric, and typical use case without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description gives a high-level idea (daily event counts and trend anomalies) but omits output shape, units, and period details; acceptable for a simple read-only series yet not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the optional 'days' parameter (default 14), but the description adds no further meaning for either parameter and leaves 'projectId' semantics implicit.
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?
Clearly identifies a read-only time series of received events per day and highlights its purpose of surfacing dips and outliers. It is specific enough to distinguish from general project metrics tools, though it does not explicitly name alternatives.
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 a monitoring/analysis use case but provides no explicit guidance on when to choose this tool over sibling metrics or tracking-health tools, and no when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getProjectEventTypesBRead-onlyIdempotent
Events by type — Wie oft jede Event-Art vorkam. Nützlich, um zu sehen, ob ein Event-Typ ganz fehlt, etwa weil ein Hook im Projekt nicht greift.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds context about the purpose (detecting missing event types) but does not disclose additional behavioral traits such as pagination, response format, or edge cases. Given the annotations, a 3 is appropriate as the description adds some value but not rich behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose and a concrete use case. It is concise and to the point, with no wasted words. However, it could be slightly more structured by adding parameter guidance without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two parameters and no output schema, the description is incomplete. It does not clarify the meaning of 'days', does not specify the return format (e.g., a mapping of event type to count), and does not mention any filtering or pagination behavior. The agent would need to infer or guess at critical invocation details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter documentation. However, it does not mention projectId or days at all. While projectId is inferable from the tool name, the meaning of days (likely a lookback window) is unexplained. The description adds no parameter semantics, leaving the agent without guidance on how to populate these fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns event types with their occurrence counts ('Wie oft jede Event-Art vorkam') and gives a specific use case for detecting missing event types. It is specific about the resource (events by type) and the output (frequencies), though it does not explicitly differentiate from sibling tools like getProjectKpis or getProjectDailySeries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: checking if an event type is completely missing, e.g., due to a non-working hook. This implies when to use it, but it does not mention alternatives or exclusions, leaving the agent to infer that it is the right tool for event-type frequency analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getProjectFunnelCRead-onlyIdempotent
Purchase funnel — Wie viele Besucher von der Produktansicht über den Warenkorb bis zum Kauf kommen, und wo die meisten abspringen.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds the funnel concept and drop-off focus, which is useful context beyond the annotations, but it doesn't disclose any additional behavioral traits such as defaults for the optional days parameter or any limitations.
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 concise sentence with no fluff. It front-loads the core concept (purchase funnel) and immediately describes the value. There is no unnecessary repetition or padding, making it easy 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 tool with no output schema and low schema coverage, the description should compensate by explaining parameters and expected results. It explains the funnel concept but omits any detail about the optional days parameter, how to interpret the output, or any edge cases. An agent calling this tool would not know what to expect in the response or how to set parameters 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 0%, so the description must compensate by explaining parameters. It mentions the funnel stages (product view, cart, purchase) but does not clarify what projectId or days mean, nor does it explain how days affects the result. The description adds almost no parameter-specific meaning beyond the schema's bare property names.
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 the tool's purpose: a purchase funnel showing visitor progression from product view to cart to purchase and drop-off points. It is specific to a project (implied by projectId). However, it doesn't distinguish itself from sibling tools like getProjectKpis or getProjectDailySeries, so the differentiation is weak.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any exclusions, prerequisites, or alternative tools. An agent is left to infer that this is for funnel analysis, but there is no explicit context or routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getProjectImportStatusBRead-onlyIdempotent
Import status and match rate — Läuft gerade ein Import, wie liefen die letzten, und wie viele Bestellungen hat das bisherige Tracking übersehen.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds context about what the tool reports (current import, past imports, missed orders), which is useful but does not disclose any additional behavioral traits like pagination, limits, or response format. Given the annotations, this is adequate.
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 sentence, front-loaded with the core purpose ('Import status and match rate') followed by a clarifying German phrase. It is concise with no wasted words, though the German phrase might be slightly redundant for an English-speaking agent.
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 tool with one parameter and no output schema, the description is mostly adequate. It explains what the tool returns but omits usage guidance and parameter details. Given the annotations cover safety, the missing pieces are not critical but do leave some 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?
The schema has one parameter, projectId, with zero description coverage. The tool description does not explain what projectId refers to or how it should be formatted. Although the parameter name is self-explanatory, the description fails to compensate for the lack of schema documentation, leaving the agent to infer its 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?
The description states the resource ('Import status and match rate') and the specific information it provides (current import running, past results, missed orders). It is specific enough to distinguish from startProjectImport, but it does not explicitly differentiate from other status tools like getGtmImport, which also reports on import status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention that this is for project imports specifically, nor does it contrast with startProjectImport or getGtmImport. The agent must infer usage from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getProjectKpisARead-onlyIdempotent
Key figures for a project — Events der letzten 24 Stunden, Käufe und Umsatz der letzten 7 Tage sowie die Zustellquote an die Werbeplattformen. Die schnellste Antwort auf „läuft das Tracking?“.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Kennung des Projekts, z. B. 3f9a1c62-8d4e-4b71-9a02-5c1e7b0d4a88 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds behavioral context beyond annotations by specifying the exact data scope and time ranges returned, which helps the agent understand the nature of the response. It does not contradict annotations and adds meaningful information about what the tool reveals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero filler. The first sentence lists the concrete key figures, and the second provides a quick use-case. It is front-loaded with the most important information and remains compact, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one required parameter) and has no output schema, so the description carries the burden of explaining return values. It lists the metrics and timeframes, which is sufficient for an agent to know what to expect, though it does not specify the exact JSON shape. Given the simplicity and the presence of sibling tools with overlapping purposes, this description is adequately complete for a quick status check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already documents projectId with a clear description and example. The tool description does not add anything about the parameter beyond mentioning 'project' generically. Since the schema handles parameter semantics, a baseline score of 3 is appropriate — no additional value is provided by the description 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?
The description names the resource ('project') and specifies exact metrics: events from the last 24 hours, purchases and revenue from the last 7 days, and delivery rate to advertising platforms. It also conveys a clear purpose ('fastest answer to is tracking running?'), which distinguishes it from broader tools like getProjectTrackingHealth or getTrackingAudit without needing to open 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 description implies when to use it via the phrase 'Die schnellste Antwort auf „läuft das Tracking?“' — indicating it is a quick health check. However, it does not explicitly mention alternatives or when not to use it, such as when a deeper audit (getTrackingAudit) or daily series (getProjectDailySeries) is needed. The usage context is implied rather than explicitly contrasted with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getProjectOnboardingBRead-onlyIdempotent
Setup progress — Welche Schritte erledigt sind, welcher als Nächstes dran ist und was jeder bringt. Beantwortet „wo steht dieses Projekt gerade?“.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to repeat them. The description adds no extra behavioral details (e.g., rate limits, side effects) and does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, a single sentence that conveys the core purpose without superfluous words or repetition. It is well-structured and front-loaded with the key concept.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of a read-only getter, the description gives enough context for basic usage. However, there is no output schema provided and no mention of the response format, which leaves some ambiguity about what exactly is returned. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, projectId, has no description in the schema and the description does not mention it. The tool name and context imply it identifies the project, but no explicit semantics are provided. Schema coverage is 0%, and the description fails to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves onboarding/setup progress, listing completed steps, the next step, and their benefits. It answers the specific question 'where does this project stand?', which distinguishes it from more generic setup tools like getProjectSetup, though not explicitly naming alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use it (to understand project onboarding progress) and what question it answers, but it does not explicitly mention when not to use it or how it differs from similar tools like getProjectSetup. No alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getProjectSetupBRead-onlyIdempotent
Where this project sends its events — Die Collector-Adresse für den Einbau plus der Nachweis, ob schon Events ankommen: Anzahl, erstes und letztes Ereignis, zuletzt gesehener Typ. Der Wert gehört in die Umgebung der eigenen Anwendung (TD_ENDPOINT) oder ins Plugin — ohne ihn weiß das SDK nicht, wohin.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the tool is known to be safe. The description adds value by specifying what data is returned (collector address, event counts, timestamps, last event type), which is useful behavioral context beyond the annotations. No contradictions 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?
The description is somewhat verbose and includes extra context about where the returned value should be placed (environment or plugin), which is useful but not essential for tool invocation. It is structured as a single sentence but could be more concise and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter, the description adequately explains the return data (collector address, event counts, first/last event, last seen type). No output schema is needed since the description clarifies the response content. It is sufficiently complete for an agent to know what to expect.
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 0%, the description must compensate for undocumented parameters, but it does not mention projectId at all. The single required parameter is implied by the tool name and context, but the description lacks explicit guidance on its format or purpose, leaving the agent to infer from the schema alone.
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 the tool returns the collector address and event verification details (count, first/last event, last seen type). It distinguishes the purpose from routing or channel tools by focusing on setup and endpoint info, though it does not explicitly name sibling alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need the endpoint configuration for the SDK, mentioning where the value should be placed (environment or plugin). However, it does not explicitly state when to use this tool versus others or provide exclusion conditions, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getProjectTopPagesCRead-onlyIdempotent
Top pages — Meistbesuchte Seiten mit den Käufen und dem Umsatz, die auf ihnen entstanden sind.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No | ||
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds context that the result includes purchases and revenue, which is useful. However, it does not disclose behavioral details like pagination, default time ranges, or sorting, so it adds moderate value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence in German. It is short and front-loads the core purpose. While it could be more informative, it has no fluff or redundancy, making it appropriately concise for its 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?
Given there is no output schema and three parameters with zero explanation, the description is incomplete. It does not specify return format, default values, or how the parameters affect results. For a read tool, more context is needed to ensure correct invocation, especially around the 'days' and 'limit' parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention any of the three parameters (days, limit, projectId). With zero coverage, the description must compensate by explaining parameter meaning, but it does not. The agent has no information about what these parameters do or their formats.
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 the tool returns top pages along with their associated purchases and revenue. It specifies the resource (top pages) and the data included, making the purpose understandable. However, it does not differentiate this from sibling tools like getProjectKpis or getProjectDailySeries, so it lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention context, prerequisites, or exclusions. The agent is left to infer usage from the name and description alone, which is insufficient given the large set of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getProjectTrackingHealthARead-onlyIdempotent
Is tracking healthy? — Die Antwort auf „ist gerade etwas kaputt?“, offene Störungen des Wächters, der letzte Prüflauf und wann das letzte Event ankam. Ein Tracking-Ausfall ist still: Die Seite läuft weiter, nur die Messung nicht.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds valuable context about the silent nature of tracking failures ('the page keeps running, only the measurement not') and enumerates what the tool returns. This goes beyond the structured fields and helps the agent understand the tool's purpose without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core question, and includes a helpful analogy about silent failures. No fluff, but it could be slightly more structured with bullet points. Efficient for the information it conveys.
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 health check with one param and no output schema, the description explains the purpose and the key data points returned. It doesn't specify the response format, but that's not critical given the annotations and simplicity. The description is sufficiently complete for an agent to understand when and how to invoke 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 has one required parameter (projectId) with 0% description coverage. The description does not explain the parameter at all. Since schema coverage is low, the description should compensate, but it doesn't. However, projectId is a common identifier and the tool name makes it clear, so the gap is not severe.
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 the tool answers 'is something broken right now?' and lists the specific data points it returns (open disruptions, last check, last event). It is distinct from siblings like getTrackingAudit, though it doesn't explicitly name alternatives. The verb 'get' plus resource 'project tracking health' is specific.
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 usage is implied: use this when you need tracking health status. However, it provides no explicit when-to-use or when-not-to-use guidance, and doesn't mention alternatives like getLatestTrackingAudit. The context about silent failures hints at a scenario, but no direct exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getShopifyConnectionARead-onlyIdempotent
Status of the Shopify connection — Ob ein Store verbunden ist, seit wann, welche Webhooks und welches Web Pixel die App angelegt hat. configured: false heißt: Die Anbindung ist auf unserer Seite noch nicht freigeschaltet, dann ist auch nichts verbunden.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Kennung des Projekts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds value by explaining the meaning of `configured: false` and listing the data returned (connected, since when, webhooks, web pixels), which goes beyond the annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the main purpose, and includes a valuable clarification about the `configured` field. Every sentence earns its place; there is no redundant 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?
Given the tool's simplicity (one parameter, read-only, no output schema), the description adequately explains the return content (connection status, timing, webhooks, web pixels) and the meaning of a key field. It does not mention error conditions or additional context, but these are not critical for a status check tool with strong annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter, `projectId`, with a description ('Kennung des Projekts'), so schema coverage is 100%. The tool description does not add any additional parameter context, such as format or examples. Baseline 3 applies because the schema fully documents the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns the status of the Shopify connection, including whether a store is connected, since when, which webhooks and web pixels the app created. It also explains the meaning of the `configured: false` field. This is a specific verb-resource combination and distinguishes it from sibling tools like `disconnectShopify` or `getShopifySubscription`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for checking connection status, but it does not explicitly state when to use it versus alternatives, nor does it provide exclusions or conditions. It is clear enough for the agent to infer, but lacks explicit routing guidance compared to better examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getShopifySubscriptionARead-onlyIdempotent
Shopify billing status of the store — Aktueller Plan (free oder starter), Shopifys eigener Status (ACTIVE, PENDING, FROZEN, CANCELLED, EXPIRED, DECLINED), Testmodus, Preis, Probezeit und Ende des bezahlten Zeitraums. Gefragt wird Shopify, nicht die eigene Tabelle; ist Shopify nicht erreichbar, kommt der zuletzt gesehene Stand und aktuell steht dann auf false. Nur für Konten, die über Shopify abrechnen (billing_origin gleich shopify) — ein Stripe-Konto bekommt 403, ein Projekt ohne Shopify-Store 404.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Kennung des Projekts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds critical behavioral details beyond annotations: it queries Shopify live, falls back to the last seen status with 'aktuell' set to false if Shopify is unreachable, and specifies exact HTTP error responses (403 for Stripe, 404 for no store). This is valuable context that annotations do not 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?
The description is a single, well-structured sentence that front-loads the primary purpose and output fields, then provides source, fallback behavior, and error conditions. Every sentence earns its place with no redundancy or filler. The information is dense but efficiently organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter, no output schema, and annotations covering safety, the description is remarkably complete. It lists all expected return fields, explains the data source and fallback, and specifies error scenarios. An agent has everything needed to call the tool correctly and interpret the response, even without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the single parameter projectId, with a description 'Kennung des Projekts' (project identifier). The tool description adds no further detail about the parameter's format or semantics beyond the schema. Since the schema already documents it fully, the baseline of 3 applies; the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('get') and resource ('Shopify billing status of the store') and enumerates the exact fields returned (plan, status, test mode, price, trial period, end of paid period). It clearly distinguishes itself from other billing tools by specifying it queries Shopify directly rather than the internal table, and it names the error conditions for non-Shopify billing origins. This leaves no ambiguity about what the tool does.
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 explicitly states when the tool is applicable: only for accounts that bill via Shopify (billing_origin equals shopify). It gives clear exclusions: Stripe accounts get 403, projects without a Shopify store get 404. It also implies an alternative (internal billing status) by saying it queries Shopify, not the own table. This gives the agent strong guidance on when to select this tool over siblings like getBillingStatus.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTrackingAuditDRead-onlyIdempotent
Status and findings of a scan — Status, ein anzeigbarer Satz und, sobald fertig, die Befunde. Die vollständige Messung wird NICHT ausgeliefert: Sie enthält Rohdaten einer fremden Website. progress.percent steigt monoton und steht nur bei „done“ auf 100; progress.eta_seconds ist null, wenn wir die Restzeit ehrlich nicht kennen. preview erscheint, sobald der passive Durchgang durch ist, also lange vor den Befunden. Bei „failed“ und „blocked“ bleibt der letzte Fortschritt stehen: Er zeigt, wie weit wir kamen. robots MUSS die Seite als Meta-Angabe setzen, visibility ist immer „unlisted“, und nach retention_days Tagen wird der Bericht automatisch gelöscht.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnly, idempotent, and non-destructive behavior. The description provides some details about the response status fields and retention policy, but these describe the resource, not the tool's own side effects or operational behavior beyond what annotations cover.
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 verbose and mixes English and German, making it hard to follow. It dives into detailed response field semantics that are not relevant to the input, and could be much more concise and structured.
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 lacks critical information about the input parameter, the exact purpose, and when to use this tool. The mixed-language text and focus on response internals leave an agent without enough context to invoke 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?
The only parameter is 'id' (string) with no description in the schema or the description text. The description does not clarify what the ID refers to (e.g., audit ID, project ID), leaving the agent to guess.
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 begins with 'Status and findings of a scan' which gives a general idea, and the tool name 'getTrackingAudit' implies retrieval. However, it lacks an explicit verb like 'Retrieves' and the description is mostly about response fields, so the purpose is not crisply stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like getLatestTrackingAudit or startTrackingAudit. The description does not mention use cases or conditions for selecting this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inviteTeamMemberA
Invite a team member — Schickt eine Einladung per E-Mail. Der Link gilt sieben Tage und funktioniert einmal. Nur Inhaber der Organisation dürfen einladen, und nur über eine echte Anmeldung, nicht per API-Schlüssel.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, so the tool is known to be a mutation. The description goes well beyond this by detailing the email delivery, the seven-day validity, single-use link, owner-only permission, and the authentication restriction (real login, not API key). This is rich behavioral context that helps the agent anticipate side effects and constraints. 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?
The description is a single sentence that is information-dense but not bloated. It leads with the primary action ('Invite a team member') and then packs in the essential constraints. It is concise and front-loaded, though the German clause structure makes it slightly less scannable for an agent. It earns a 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description covers the key aspects: the action, the delivery method, the link behavior, permissions, and authentication method. It does not specify what the tool returns (e.g., success message or invitation ID), but since no output schema exists, this is not strictly required. The description is sufficiently complete for an agent to decide whether to invoke it and to understand its side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is nothing to document. The description adds meaning beyond the empty schema by explaining the tool's purpose and behavior. Since there are no parameters, the description carries the full explanatory burden, and it does so adequately, warranting a 4 rather than the baseline 4 for zero params.
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 the specific verb 'Invite' and resource 'team member', and explains the mechanism (email invitation with a one-time link valid for seven days). It clearly differentiates from siblings like listTeam (listing) and revokeInvitation (revoking), even without naming them, because the action and its scope are 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 provides clear context on when to use this tool (to invite a team member) and includes important constraints (only organization owners, only via real login, not API key). However, it does not explicitly mention alternative tools or exclusions, leaving the agent to infer that listTeam or revokeInvitation are different operations. The constraints are useful but not a full routing guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listAdAccountsARead-onlyIdempotent
Advertising accounts of the organisation, with their sync state — Every advertising account reachable through the connections of this organisation, once it has been discovered by a sync. Each row carries the account as the platform knows it (external_id, name, currency, timezone) plus the state of the last sync: last_synced_at, last_sync_error (empty when the last run was clean) and how many campaigns are currently known. Manager accounts (Google MCC) are listed too, with is_manager: true; they hold no campaigns of their own but are the path to the accounts below them. Each account also carries metrics_7d and metrics_30d: the platform totals of the last 7 and 30 days (spend_micros, clicks, impressions, conversions, conversions_value_micros and cpa_micros, all in micros of the account currency), labelled source: "platform" because they are their numbers, not ours. supports_changes says whether changeAdCampaign works on this account at all - false means the platform has no write adapter yet, so pausing or changing a budget would be refused. delivery_7d is OUR number next to theirs: how many events actually reached this account in the last 7 days (sent, failed, quote - the FAILURE rate between 0 and 1, null when there was nothing to deliver) and which projects feed it. It comes from the same ledger as the tracking gate of the change requests, not from a second calculation. Nothing is fetched from the platform for this call.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | Restrict to one platform, e.g. google_ads. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint=false. The description goes beyond these by stating 'Nothing is fetched from the platform for this call', clarifying that it returns cached data. It also explains the delivery_7d metric comes from the same ledger as tracking, not a second calculation, and describes the error field semantics. There is no contradiction with annotations; in fact, it reinforces the read-only nature.
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 long but well-structured, front-loading the core purpose in the first sentence. Each subsequent sentence adds distinct information about fields, metrics, and behavior. It is dense but not redundant; however, it could be trimmed slightly without losing essential info. The structure with semicolons and clauses is clear, earning a 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (many fields, no output schema), the description is remarkably complete. It explains every field in the response (external_id, name, currency, timezone, last_synced_at, last_sync_error, is_manager, metrics_7d, metrics_30d, supports_changes, delivery_7d) and their meanings. It also clarifies the source of metrics and the relationship to changeAdCampaign. There is no output schema, so the description carries the burden, and it does so thoroughly.
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 schema has one optional parameter 'platform' with a description that is clear ('Restrict to one platform, e.g. google_ads.'). Schema description coverage is 100%, so the description adds no additional meaning to the parameter. The tool description itself does not mention the platform parameter, but it is not required to since the schema covers it adequately. 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 clearly states the tool lists advertising accounts with their sync state, and details the fields returned. It is specific about the resource (ad accounts) and distinguishes itself from siblings like listCampaigns by focusing on accounts and their sync/metrics, not campaigns. The verb 'list' plus the resource and the explicit detail about manager accounts and metrics make the purpose 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 explains what the tool returns and that nothing is fetched from the platform, but it does not explicitly state when to use this tool versus alternatives. There is no mention of alternatives like listCampaigns or getAdMetrics, nor any conditions like 'use this when you need account-level sync status'. The usage is implied (when you need ad accounts) but not explicitly differentiated from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listAdChangesARead-onlyIdempotent
The change history of the organisation, newest first — The ledger, and the same list the dashboard shows as "Änderungsverlauf". Every row carries what was requested, the value observed before the change, the value observed after it, who asked, where the approval came from (direct means nobody had to approve because the ad account does not require it, user a person, account_rule the rule on the account) and what the platform answered. States are: applied, failed, stale (the value at the platform changed after the preview, so nothing was sent), uncertain (sent, but the outcome could not be read - it is neither applied nor failed until resolveAdChange has looked), reconciliation_required, applying, plus previewed (waiting for a human), approved, rejected and expired, which only occur on ad accounts that require approval. Filter with status (comma separated), ad_account_id and platform - filtering here rather than after the call matters, because limit cuts the newest rows BEFORE any filter of yours would see them. Returns the newest 100 rows unless limit says otherwise. Nothing is fetched from the platform for this call.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many rows, newest first. Default 100, at most 500. | |
| status | No | Comma separated: previewed, approved, rejected, applying, applied, failed, stale, uncertain, reconciliation_required, expired. Empty means all. | |
| platform | Yes | ||
| ad_account_id | No | Restrict to one ad account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It clearly describes the row contents (requested, before, after, who, approval source, platform answer) and enumerates all possible states, including edge cases like 'uncertain' and 'stale.' The explicit statement 'Nothing is fetched from the platform for this call' adds transparency beyond the readOnly 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 overly verbose and repetitive, repeating 'newest first' and 'newest 100 rows' near-identically. It includes redundant phrases like 'the same list the dashboard shows as' and lists states twice in different formalisms, making it harder to parse quickly.
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?
Even without an output schema, the description covers the return row structure and all state enumerations, which is sufficient for a consumer to understand the data shape. It also explains filtering behavior and the default limit. Minor omissions like pagination details are acceptable given the simplicity.
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 description adds semantic depth to the status parameter by explaining each enum value in a parenthetical, which is not present in the schema. It also clarifies the meaning of 'direct' in the approval source context. The limit and ad_account_id descriptions from the schema are sufficient, but the status explanation enhances understanding.
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 explicitly states 'The change history of the organisation, newest first' and references the dashboard equivalent, making the tool's purpose unambiguous. It also clarifies it returns a list of changes, distinguishing it from other ad-related 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?
The description does not explicitly compare this tool to alternatives like listCampaigns or getAdChange, though it notes 'Nothing is fetched from the platform for this call,' which implies a local operation. Usage context is implied but not clearly stated for when to choose this over other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listAdminUsersARead-onlyIdempotent
List all user accounts of the platform — Alle Zugänge über alle Organisationen hinweg, mit E-Mail-Adresse, Name, Organisationen samt Rolle, Staff-Recht, bestätigter Adresse und Anlagedatum. Gesucht und geblättert wird auf dem Server: q sucht ohne Rücksicht auf Groß- und Kleinschreibung in Adresse und Name, limit (höchstens 200) und offset schneiden die Seite zu, total nennt die Gesamtzahl der Treffer. Nur für das interne Team — für alle anderen gibt es diesen Endpunkt nicht.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Substring match on e-mail address or name, case-insensitive. | |
| limit | No | ||
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds meaningful behavioral context: server-side search and pagination, case-insensitive matching, the limit cap of 200, offset pagination, and the total count field. It also discloses the internal-team restriction, which is valuable beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but every sentence earns its place. It front-loads the core purpose and then packs parameter semantics and access restriction into the remaining text. The German is concise and the structure is logical, though it could be trimmed slightly without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema, the description covers the essential details: what it returns, how search and pagination work, and who may use it. It does not mention error handling or authentication, but given the annotations and the simple nature of a list operation, this is sufficient. The missing return format is implicitly covered by the field list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only 'q' has a description). The description compensates fully by explaining that 'q' performs case-insensitive substring matching on address and name, that 'limit' maxes at 200, and that 'offset' and 'total' handle pagination. This goes beyond the schema's minimal defaults and constraints, giving the agent complete parameter understanding.
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: 'List all user accounts of the platform' and enumerates the exact fields returned (email, name, organizations with role, staff right, confirmed address, creation date). It clearly distinguishes from siblings like listTeam and listApiKeys by focusing on all user accounts across all organizations.
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 explicitly states the access restriction ('Nur für das interne Team — für alle anderen gibt es diesen Endpunkt nicht.'), which is a clear when-to-use/not-use condition. It also explains the server-side search and pagination behavior, but does not name alternatives or exclusion criteria relative to other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listApiKeysARead-onlyIdempotent
List API keys — Alle gültigen Schlüssel der Organisation mit Name, Präfix und letzter Nutzung. Der Schlüssel selbst ist nicht dabei, er wird nur bei der Erstellung gezeigt.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive. The description adds a meaningful behavioral detail: the actual secret key is never returned, only shown during creation, which is beyond the annotation hints.
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 concise sentences with no redundant information; the limitation about the key not being included is valuable and placed upfront.
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 parameterless, read-only list operation with no output schema, the description fully covers what is returned and the key limitation. 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?
No parameters exist and schema coverage is 100%, so the description need not explain parameters. 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 the specific operation ('List API keys') and describes exactly what is returned (organization's valid keys with name, prefix, last usage), distinguishing it from siblings like createApiKey and revokeApiKey.
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 implies usage for listing keys and explicitly notes the key itself is not shown (only at creation), guiding when not to use this tool. Stops short of explicitly naming alternative tools, but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listCampaignsARead-onlyIdempotent
Campaigns of one ad account, as of the last sync — The stored state, never a live call to the platform - which is why every answer carries synced_at, the moment the data was fetched, and last_sync_error from the account. Each campaign keeps the platform values untranslated (status, channel type, bidding strategy, daily budget in micros of the account currency; the budget is null when it could not be read, which is not the same as zero). Campaigns that disappeared at the platform are marked is_removed and kept, because the numbers they produced stay true - they are hidden unless include_removed is set. Each campaign carries metrics_7d and metrics_30d, the platform totals of the last 7 and 30 days: spend_micros, clicks, impressions, conversions, conversions_value_micros and cpa_micros (spend divided by conversions, null when there were none). All amounts are micros of the account currency and are the numbers of the platform, not ours - use getAdMetrics for the daily series behind them.
| Name | Required | Description | Default |
|---|---|---|---|
| adAccountId | Yes | Id from listAdAccounts, not the platform id. | |
| include_removed | No | Include campaigns that have disappeared at the platform. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds substantial behavioral context: it returns the last synced state, explains null vs zero budget semantics, the is_removed flag and its inclusion rule, and the meaning of metrics_7d/30d fields. No contradictions 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?
Though long, every sentence contributes value: purpose and scope are front-loaded, followed by key field semantics, metrics explanation, and a pointer to an alternative tool. No redundancy or filler; structured logically for an agent 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?
With no output schema, the description must explain the returned shape. It covers campaign fields, null budget semantics, is_removed behavior, metric periods, and the distinction from getAdMetrics. An agent has enough detail to correctly interpret and use the tool's output.
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 descriptions for both parameters. The description adds nuance by explaining that include_removed reveals otherwise hidden removed campaigns and reiterates that adAccountId is from listAdAccounts (already in schema). It goes slightly beyond the schema but is not heavily needed.
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?
Clearly states the verb and resource: lists campaigns for one ad account. It distinguishes itself from getAdMetrics by noting it returns stored state, not live data, and explicitly points to getAdMetrics for daily series. The purpose is unambiguous and separate 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 names getAdMetrics as the alternative for daily series and states it is never a live call, which implies when to use it (need stored snapshot) versus when to use syncAdAccount for fresh data. Provides clear context on its role among ad-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listChannelPullsARead-onlyIdempotent
Status of the pulls — Die Abrufe dieses Projekts, neueste zuerst, Status plus eine Kurzfassung wie „3 Kampagnen, 2 Conversion-Actions“. Der Endpunkt, den Schritt 4 des Assistenten abfragt, solange noch etwas offen ist.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that results are returned newest first and include a status plus a summary with an example, providing useful output details beyond what annotations state. It does not contradict any annotations and adds contextual behavioral information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no unnecessary words. The first sentence front-loads the purpose and output format, while the second sentence provides usage context. It is concise and well-structured, earning a high 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?
The description is sufficient for a simple read-only list operation. It mentions the output includes status and a summary, and it gives usage context (step 4 of the assistant). There is no output schema, so the description provides some indication of the response format. It could be more detailed about response fields, but it covers the essential information an agent needs to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description carries the burden of explaining parameters. The only parameter, projectId, is not explicitly described, but it is implied through 'this project' (dieses Projekts). Given the single, simple parameter, this is a minor gap; however, the description could have stated that projectId is the project identifier to fully compensate for the missing schema documentation.
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 explicitly states the tool lists the status of pulls for a project, newest first, with a summary like '3 campaigns, 2 conversion-actions'. It distinguishes from related siblings (startChannelPull, getChannelPull) by indicating it lists all pulls for the project rather than initiating or fetching a single pull. The bilingual phrasing is clear and 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 provides a specific usage context: 'Der Endpunkt, den Schritt 4 des Assistenten abfragt, solange noch etwas offen ist' (the endpoint queried by step 4 of the assistant while something is still pending). This implies when to use it but does not explicitly mention alternatives or when not to use it. The guidance is clear enough for an agent to select this tool in the given scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listOrgConnectionsARead-onlyIdempotent
The organisation's own platform connections — Connections that every project of the organisation inherits unless it has one of its own. used_by_projects counts the projects that currently rely on each one — the number that has to be on the button before anybody disconnects it. Readable by every member of the organisation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations (readOnlyHint, idempotentHint, destructiveHint) already establish the read-only, safe nature. The description adds valuable behavioral details, such as the inheritance rule and the importance of `used_by_projects` count before disconnecting, which goes beyond the basic 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 somewhat verbose and includes cryptic phrasing ('the number that has to be on the button before anybody disconnects it'), which could be simplified for clarity. It is not overly long but could be more straightforward.
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 sufficiently explains the concept of inherited connections and the significance of the used_by_projects count. Given that there is no output schema and no parameters, this level of detail is adequate for an agent to understand what the tool does and its implications.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline score of 4 applies. The description does not need to explain any parameters since none exist, and it correctly focuses on the tool's behavior.
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 indicates this tool lists organisation-level platform connections, distinguishing them from project-specific ones. The verb 'list' is implied by the tool name and the context. However, the phrasing is somewhat convoluted, especially the 'button' metaphor, which slightly reduces clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context about inherited connections but does not explicitly state when to use this tool versus other connection-related tools (e.g., listChannelPulls, authorizeOrgConnection). The 'readable by every member' note hints at access, but no direct alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listProjectEnvironmentsBRead-onlyIdempotent
Environments seen for a project — Welche Umgebungen (production, staging, …) in den letzten 30 Tagen Events geschickt haben, mit Zählern. production steht immer zuerst, auch ohne Events, damit die Antwort nie leer wirkt, wenn nur noch nichts ankam. Auswertungen und Zustellung sehen ausschließlich production; alles andere wird gespeichert, aber nie gezählt oder an Werbeplattformen gemeldet.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations: production always appears first even without events, only production is used for evaluations and delivery, and other environments are stored but never counted or reported. This discloses important quirks and operational semantics that are not inferable from the schema or 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 two sentences, front-loaded with the core purpose, and includes essential behavioral details. It is slightly verbose with German and English mixing, but the content is necessary and efficiently 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?
The description covers the key behaviors: the 30-day window, counters, production ordering, and counting semantics. It does not describe the return format (no output schema exists), but for a simple listing tool the description provides sufficient behavioral detail. The main gap is the undocumented parameter.
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 schema has 0% description coverage for the only parameter, projectId, and the description provides no explanation of this parameter. There is no added meaning beyond the raw schema definition, which is just a string. The description fails to compensate for the lack of parameter documentation.
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 lists environments for a project, with which environments sent events in the last 30 days and counters. It identifies the specific verb (list) and resource (environments for a project). It does not explicitly distinguish from siblings, but the resource and scope are 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 provides context (30-day window, production-first ordering) but gives no guidance on when to use this tool versus alternatives. No alternatives or exclusions are mentioned, so an agent has no explicit basis to prefer it over other project-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listProjectsARead-onlyIdempotent
List the projects of the organisation — Alle Projekte, auf die der angemeldete Zugang Zugriff hat, mit Kennung, Name und Projekt-System. Der erste Aufruf für alles Weitere, jede andere Abfrage braucht eine dieser Projekt-Kennungen.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds value by clarifying access scoping (only projects the logged-in access can see), the returned identifiers, and the tool's role as the entry point for later calls. 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?
The English opening and the German elaboration partly duplicate the same purpose ('List the projects' vs 'Alle Projekte ...'), creating redundancy. The useful details about IDs and first-call sequencing are present but would be stronger with tighter, non-repetitive wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, read-only list tool, the description gives the essential outcome, the returned project identifiers/fields, and the key reason to call it first. Pagination and empty-result behavior are not mentioned, but these are minor gaps for such a simple 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?
The input schema has zero parameters, so the baseline is 4. The description correctly treats project IDs as outputs needed by later calls rather than inputs, and no parameter documentation is required.
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 projects of the organisation', and specifies the returned fields (Kennung, Name, Projekt-System). It does not explicitly contrast with siblings like suggestProjects or createProject, but the 'Alle Projekte ... Zugriff hat' wording defines the scope well enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly frames this as the first call: 'Der erste Aufruf für alles Weitere' and explains that every other query needs one of the returned project IDs. It gives clear sequencing guidance, though it does not 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.
listStaffRightsChangesARead-onlyIdempotent
Audit trail of console access changes — Wer hat wem wann das Staff-Recht gegeben oder genommen, samt hinterlegter Notiz. Neueste zuerst. Ein Protokoll, das niemand lesen kann, wäre nur die halbe Absicherung — deshalb steht es als eigener Endpunkt neben der Liste.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral detail beyond the readOnly annotation by stating results are newest first and include an associated note. It does not mention pagination or response format, but the read-only nature is already covered by 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 core purpose is front-loaded and the description is reasonably brief. The second sentence adds rationale for the endpoint's existence, which is somewhat useful but not strictly necessary.
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, no-parameter endpoint, the description provides enough context: what is logged, the ordering, and that notes are included. It does not detail output fields, but the absence of an output schema makes this acceptable.
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 are no parameters, so the schema coverage is trivially complete. The description does not need to explain parameter semantics, and the baseline for zero-parameter tools 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 clearly identifies the tool as an audit trail of console access changes, specifying who changed staff rights, when, and with what note. It is distinct from admin list and mutation tools among 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?
The description implies this is the dedicated read-only endpoint for historical staff-rights changes, positioned alongside the current admin list. It does not explicitly name alternatives like listAdminUsers or setAdminUserStaff, but the context makes the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listTeamARead-onlyIdempotent
Team of the organisation — Alle Mitglieder der aktuell gewählten Organisation mit Rolle und letzter Anmeldung, dazu die offenen Einladungen mit Ablaufdatum.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered by structured data. The description adds value by disclosing what the result contains (roles, last login, invitations with expiry), which is useful context beyond the annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste. The resource is front-loaded ('Team of the organisation') followed immediately by the return content. Every word 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 parameterless, read-only list tool with no output schema, the description is reasonably complete — it enumerates what the agent will get back (members with roles and last login, open invitations with expiry). It could mention ordering or pagination, but those are minor gaps for a simple list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The schema coverage is 100% trivially, and there are no parameters requiring documentation. The description appropriately focuses on return content rather than parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (team of the organisation) and details the content: members with role and last login, plus open invitations with expiry dates. This distinguishes it from the team-related siblings inviteTeamMember and revokeInvitation. Slight deduction because the description is written in German, which reduces accessibility for an English-speaking 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?
The usage is implied through the content description — it returns members, roles, last login, and open invitations. However, it does not explicitly state when to use this tool versus the invite/revoke siblings, nor does it name any alternatives or exclusions. Adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
person_journeyARead-onlyIdempotent
The journey of one person — Kennzahlen und alle Events einer Person in zeitlicher Folge, auch die anonymen Besuche, bevor sie sich zu erkennen gab. key ist der Schlüssel aus der Personenliste (Kundennummer, vollständiger E-Mail-Hash oder Besucherkennung).
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Personenschlüssel aus der Liste. | |
| limit | No | Höchstens so viele Events (Standard 200). | |
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so safety is covered. The description adds meaningful context by stating that the journey includes anonymous visits before the person revealed their identity, and clarifies that the key can be a customer number, full email hash, or visitor identifier. This goes beyond the annotations but doesn't describe pagination or response format, which is acceptable given the read-only nature.
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, well-structured sentence that front-loads the purpose and then explains the key parameter. It is concise and contains no fluff, though the German wording is slightly dense. It earns its place with no redundant 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?
No output schema is provided, so the description should cover return behavior, but it does not describe the structure or pagination of the response. Given that it's a read-only, idempotent tool with a limit parameter, a note about pagination or response format would improve completeness. The description is adequate for basic usage but not fully complete for an agent to anticipate the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% (key and limit have descriptions, projectId does not). The description adds significant value for the key parameter by explaining it comes from the person list and specifying the accepted identifier types (customer number, email hash, visitor identifier). This is more than the schema provides. The limit parameter is already clear from the schema, and projectId is a common identifier that doesn't need extra explanation.
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 the tool retrieves the full chronological journey of a single person, including metrics and all events, even anonymous visits before identification. It specifies the resource (one person) and the key parameter, distinguishing it from persons_list which lists persons. However, it lacks an explicit verb like 'get' or 'retrieve', so it's slightly less direct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a person's key and need their event history, but it does not explicitly state when to use this tool versus alternatives like persons_list. No when-not-to-use or alternative conditions are provided, leaving the agent to infer the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
persons_listARead-onlyIdempotent
People of a project — Alle Personen, die das Projekt kennt, je Person Schlüssel (Kundennummer, sonst gekürzter E-Mail-Hash, sonst Besucherkennung), erster und letzter Kontakt, Anzahl Käufe, Umsatz und die zuletzt per identify() gemeldeten Eigenschaften. contact_email und contact_name sind leer, solange kein Absender sie ausdrücklich im Klartext geschickt hat. Zuletzt aktive zuerst; mit cursor aus der vorigen Antwort blättern.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Personen je Seite (Standard 50, höchstens 200). | |
| cursor | No | Zeiger aus `next_cursor` der vorigen Antwort. | |
| projectId | Yes | Kennung des Projekts, z. B. 3f9a1c62-8d4e-4b71-9a02-5c1e7b0d4a88 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly and idempotent annotations, the description discloses important behaviors: pagination via cursor, sorting by most recent active first, and the condition that contact_email and contact_name are empty unless explicitly sent. This helps the agent understand data expectations.
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 reasonably concise and structured: it gives an overview first, then details about optional fields and sorting/pagination. It is not overly verbose and conveys necessary information effectively.
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?
Despite lacking an output schema, the description enumerates the data fields (key, first/last contact, purchase count, revenue, last identified properties) and mentions pagination behavior, giving the agent a solid understanding of what to expect.
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 schema already covers all parameters with descriptions (100% coverage). The tool description does not add significant extra meaning beyond what is already provided in the input schema, so it remains at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lists all persons known to a project with aggregated metrics like contact, purchases, and revenue. It is specific to persons, distinguishing it from sibling tools that handle channels, pages, or funnels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention conditions or contrast with other list tools, leaving the selection 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.
previewAdChangeA
Optional dry run: what a change would do, without doing it — Preview is OPTIONAL - changeAdCampaign is the way to change a campaign, and it builds the same preview itself. Use this only when you want to show somebody the before/after values first, or when the ad account has require_approval set and you deliberately want the three step route. NOTHING is sent to the advertising platform by this call: it records a change request that a human (or approveAdChange from another session) has to approve before applyAdChange can send it, and an API key may never approve the request it created itself. The approval field says which of the two it is: needed waits for a person, auto means the rule on the ad account approved it and only applyAdChange is missing. The answer also carries warnings and a tracking light. idempotency_key is yours to choose: the same key with the same values returns the same request, the same key with different values is a 409. A preview expires after 30 minutes, and a second request for a campaign that already has one in flight is refused.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint: false, idempotentHint: false, destructiveHint: false), so the description carries the full burden of behavioral disclosure. It does this thoroughly: it clarifies that nothing is sent to the advertising platform, that it records a change request requiring approval, that an API key may never approve its own request, explains the approval field semantics, mentions warnings and a tracking light, idempotency key behavior, 30-minute expiry, and refusal of duplicate requests. This goes well beyond the annotations and gives the agent a complete mental model.
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 long (over 200 words) but each sentence adds distinct value: purpose, usage conditions, behavioral caveats, approval flow, idempotency, expiry, and conflicts. It is front-loaded with the core purpose and structured logically. While it could be tightened, the complexity of the tool justifies the length, and it avoids redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with approval flow, idempotency, and expiration, the description covers nearly all behavioral aspects an agent needs to know. It mentions the response carries warnings and a tracking light, which is helpful since there is no output schema. However, it lacks a clear specification of required input fields (the schema is empty), so an agent might not know exactly what to send beyond the idempotency key and values. The description implies a 'values' object but doesn't define it, leaving a gap in construction of the request.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty (0 parameters), so the baseline is 4. The description adds semantic value by explaining idempotency_key behavior ('same key with the same values returns the same request, the same key with different values is a 409') and mentions 'values' and the approval field. However, it does not enumerate the actual change parameters (e.g., campaign ID, fields to modify) that would be needed to construct a valid request. Since the schema is empty, the description could have compensated more fully, but it provides crucial idempotency and approval semantics, earning a 4.
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 clear, specific statement: 'Optional dry run: what a change would do, without doing it.' It explicitly contrasts itself with changeAdCampaign, stating that changeAdCampaign is the normal way to change a campaign and builds the same preview itself. This distinguishes it from its siblings and leaves no ambiguity about its function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Use this only when you want to show somebody the before/after values first, or when the ad account has require_approval set and you deliberately want the three step route.' It also states when not to use it (changeAdCampaign is the way to change a campaign). This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recordProjectEntryB
Add a project address entered during signup to the directory
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description's 'Add' aligns with the non-read-only annotation. No contradictions, but it does not disclose side effects, idempotency, or failure behavior beyond what annotations already imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff, and the core action is stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a no-parameter, no-output-schema side-effect tool, but 'project address' and 'directory' are somewhat vague and would benefit from clarification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline applies. The description references the relevant context ('entered during signup') even though no formal parameters exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Add') and object ('project address entered during signup') targeting a 'directory'. The terms could be more precise, but the action is clear enough to distinguish from creating a project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like createProject or setContactDetailsFromOrders, and no prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rejectAdChangeA
Reject a change request so it can never be applied — Ends the request without touching the advertising platform. Works on a request that is still previewed and on one that was already approved - including one the account rule approved automatically, which would otherwise only be stoppable by waiting for it to expire. The reason is stored in the ledger.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the change request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint, idempotentHint, destructiveHint, all false. The description adds that it 'Ends the request without touching the advertising platform' and that 'The reason is stored in the ledger', giving context beyond annotations. It does not mention reversibility, but the 'never be applied' phrasing implies permanence.
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 sentence that front-loads the core action and then adds necessary context about applicability and ledger storage. It is efficient with no wasted words, though the dash and hyphen create a slightly dense read.
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 tool with no output schema and minimal annotations, the description covers the essential aspects: what it does, when it can be used, that it does not affect the advertising platform, and that the reason is recorded. It is complete enough for an agent to invoke 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% – the single 'id' parameter is fully described as 'Id of the change request.' The description does not add any extra semantics about the parameter, 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 clearly states the action: 'Reject a change request so it can never be applied' – a specific verb and resource. It differentiates from siblings like approveAdChange and applyAdChange by emphasizing the rejection prevents application, and it even distinguishes from resolveAdChange by specifying it works on previewed or approved requests.
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 specifies the applicable states (previewed and approved, including auto-approved) and notes the alternative of waiting for expiration for auto-approved ones. It does not name sibling tools explicitly, but the context is clear enough for an agent to choose this over other ad-change tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
requestAccountDeletionC
Request deletion of the organisation — Beantragt die Löschung der aktuell gewählten Organisation samt aller eigenen Projekte, Freigaben, Mitgliedschaften, API-Schlüssel und Sitzungen. Löscht NICHT sofort: Ein Cron-Lauf führt es sieben Tage nach dem Antrag aus, bis dahin lässt sich der Vorgang jederzeit abbrechen (DELETE auf denselben Pfad). confirm_name muss exakt dem Namen der Organisation entsprechen.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description directly contradicts the annotations: destructiveHint is false, yet the description clearly states the tool requests deletion of the organisation and all associated data (projects, API keys, sessions). This is a serious inconsistency, as the description discloses destructive behavior while annotations mark it as non-destructive. Although the description provides useful context about the seven-day delay and cancellation, the contradiction outweighs that value.
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 bilingual (English and German), which reduces clarity and adds unnecessary length. It contains essential details but is not well structured; the English opener is clear, but the German portion includes critical information that could be presented more concisely. While not overly long, the mixed-language format and redundant phrasing prevent a higher 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?
Given there is no output schema and no parameters in the schema, the description should fully explain the tool's behavior, expected inputs, and response. It covers the deletion scope, the delay, and the confirm_name requirement, but does not describe what the tool returns (e.g., a confirmation or status). The parameter mismatch also leaves the tool incomplete, as an agent would not know to provide confirm_name without schema support.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, but the description references a required `confirm_name` parameter that must exactly match the organisation name. This creates a mismatch between the description and the schema, as the parameter is not defined in the schema. The description adds a parameter that the schema does not acknowledge, which is misleading and confusing for the agent.
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 the action: 'Request deletion of the organisation' and elaborates on what gets deleted (projects, shares, API keys, etc.). It distinguishes itself by describing the delayed execution and cancellation possibility, but it does not explicitly differentiate from sibling tools like cancelAccountDeletion or getAccountDeletionStatus. The core purpose is unambiguous, but sibling differentiation is left implicit.
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 does not provide explicit guidance on when to use this tool versus alternatives. It mentions that cancellation is possible via DELETE on the same path, hinting at cancelAccountDeletion, but does not state conditions for choosing this tool over others. There is no when-to-use or when-not-to-use guidance, leaving the agent to infer usage from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
requestHeadlessGuideA
Send the SDK guide to the developer of a headless project — Nur für einen fertigen Bericht, in dem der Scanner ein eigenes Frontend (Next.js, Nuxt, …) vor dem Shopsystem erkannt hat. Schickt der angegebenen Adresse die SDK-Anleitung mit einem vorausgefüllten Snippet. Dieselbe Adresse bekommt für dieselbe Domain innerhalb von sieben Tagen keine zweite Mail (already: true). Die Adresse erscheint in keiner Audit-Antwort.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite having only basic annotations, the description discloses the side effect (sending an email), the seven-day deduplication window with an 'already: true' signal, and the privacy property that the address never appears in audit responses. This goes well beyond the annotations and is exactly the behavioral context an agent needs for a side-effecting tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler; purpose and usage condition are front-loaded, followed by dedup and privacy behavior. Every sentence adds distinct value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, no output schema), and the description covers when to use it and its behavioral traits. However, the ambiguous meaning of 'id' is a significant gap for correct invocation, and the return behavior beyond 'already: true' is not described.
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 schema has one required string 'id' with 0% description coverage, and the description never explicitly says what 'id' refers to. It mentions 'der angegebenen Adresse' (the specified address) and domain, but does not map those concepts to the id parameter, leaving the caller to guess whether id is a report ID, project ID, or email address.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: send the SDK guide to the developer of a headless project, and narrows it to a finished report where the scanner detected a custom frontend (Next.js, Nuxt, etc.) in front of the shop system. This distinguishes it from the many audit, connection, and project tools 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 explicitly restricts usage to finished reports with a detected custom frontend ('Nur für einen fertigen Bericht...'), which functions as a clear when/when-not condition. It also explains the dedup behavior over seven days, so an agent knows when calling again would be pointless.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolveAdChangeA
Settle a change request whose outcome was never confirmed — For a request in state uncertain or reconciliation_required. It reads the current value at the platform and decides from THAT: matching the proposal makes it applied, matching the value from before the change makes it failed. The caller does not get to choose - the code that never received the answer must not be the one that decides what happened. If the value matches neither, the request stays open and the campaign stays locked, because something else changed it in the meantime.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the change request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the internal logic: reads current value, compares to proposal and previous value, sets state accordingly, and notes that the request may stay open and campaign locked if no match. This goes beyond basic annotations and reveals 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?
The description is structured with a dash and is mostly concise, though the phrase 'the code that never received the answer must not be the one that decides what happened' is somewhat verbose and could be simplified without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description fully explains the decision outcomes (applied, failed, or stays open) and the impact on the campaign lock, providing sufficient context for an agent to understand the tool's 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?
The only parameter `id` has a schema description ('Id of the change request') and the tool description does not add extra meaning. Since schema coverage is 100%, baseline score 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 clearly states the tool settles a change request whose outcome was never confirmed, which is specific and distinguishes it from sibling tools like approveAdChange or rejectAdChange.
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 specifies when to use: for requests in state `uncertain` or `reconciliation_required`. It also contrasts with tools that allow caller choice, implying this is for cases where the platform value must decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revokeApiKeyADestructiveIdempotent
Revoke an API key — Macht den Schlüssel sofort ungültig. Der Eintrag bleibt als Spur erhalten.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint and destructiveHint, and the description adds that the entry remains as a trace, which is useful beyond the annotations. It also clarifies the immediacy of invalidation. 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?
The description is extremely concise, front-loaded with the action, and includes a useful behavioral note. Every word contributes; no fluff. The German translation is redundant but harmless.
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 destructive tool with no output schema, the description covers the core behavior and the trace detail. It lacks explicit mention of prerequisites or error conditions, but given the simplicity, it is reasonably 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 0% and the description does not explain what the 'id' parameter refers to (e.g., API key ID). The agent must infer this from context. The description adds no parameter-specific meaning beyond the schema's type.
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 the action ('Revoke an API key') and adds behavioral detail (immediately invalid, entry remains as trace). It is easily distinguished from sibling tools like createApiKey and listApiKeys by its verb and resource.
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 does not explicitly mention when to use this tool versus alternatives or any prerequisites. However, the name and context of siblings make the intended usage obvious. It would be stronger with an explicit note about not using it for creation or listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revokeInvitationADestructiveIdempotent
Revoke an invitation — Macht den Einladungslink sofort ungültig. Nur für Inhaber.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral detail beyond the annotations: the link becomes 'immediately invalid' and the action is owner-only. It aligns with destructiveHint and idempotentHint, though it does not explicitly state idempotency 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?
Extremely concise and well-structured. The action, effect, and permission are conveyed in a single compact sentence without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the essential aspects: purpose, effect, and permission. It could be slightly more explicit about the id parameter, but overall it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'id' has no schema description and the description does not explicitly state what the id refers to. It is implied to be the invitation id, but this is not made clear, leaving room for ambiguity.
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?
Clearly states the action ('Revoke an invitation') and the concrete effect ('makes the invitation link immediately invalid'). It also specifies the permission context ('only for owners'), distinguishing it from invitation creation 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?
Provides clear context on when to use the tool: to invalidate an invitation link, and notes it is restricted to owners. It does not explicitly reference alternatives like inviteTeamMember, but the purpose is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
saveConnectionConfigAIdempotent
Set the account fields of a connection by hand — The missing half of connecting: OAuth brings the token, but which account is meant nobody knows until it is stored here — pixel_id for meta, customer_id and conversion_action for google_ads, measurement_id and api_secret for ga4, and so on. Only the fields of the given platform are accepted; fields belonging to another platform come back in rejected instead of being swallowed. Credentials can never be set this way. Prefer autoconfigureConnection, which finds these values itself.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Plattform: ga4, google_ads, meta, linkedin, gtm, tiktok, pinterest, microsoft_ads, openai_ads. Alle ausser openai_ads werden über authorizeConnection verbunden; openai_ads nimmt einen API-Schlüssel über setConnectionBearerKey. | |
| projectId | Yes | Kennung des Projekts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare idempotentHint=true and readOnlyHint=false, but the description adds valuable context beyond them: it explains the rejection behavior ('fields belonging to another platform come back in `rejected` instead of being swallowed') and explicitly rules out credential setting. These are behavioral traits not present in annotations, and the description does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single long paragraph but is front-loaded with the core purpose and then provides necessary context and constraints. While it includes a stylistic flourish ('The missing half of connecting'), every sentence contributes information. It could be slightly more structured, but it is not 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?
Given the tool has only two parameters and no output schema, the description covers the essential points: what it does, when to use it versus the alternative, what inputs are accepted/rejected, and what cannot be done (credentials). The only missing piece is the exact format for providing the account fields, but that is not present in the schema either, so it may be assumed to be part of the request body not detailed. Overall, an agent can correctly decide when and how to call this tool based on the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters (type and projectId) with 100% coverage, including a list of platform values. The description adds some context about the fields the tool sets (pixel_id, customer_id, etc.), but these are not parameters in the schema and thus don't directly clarify parameter usage. It doesn't add meaning about the two existing parameters beyond what the schema already provides, so a 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 clearly states the verb 'Set' and the resource 'account fields of a connection', and differentiates it from autoconfigureConnection by naming the sibling explicitly. It explains the context of why this tool exists (OAuth brings token but not account mapping) and gives concrete examples for platforms, leaving no ambiguity about what it accomplishes.
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 'Prefer autoconfigureConnection, which finds these values itself', telling the agent when to choose an alternative. It also sets constraints: 'Only the fields of the given platform are accepted' and 'Credentials can never be set this way', which are clear when-to-use and when-not-to-use signals. No further guidance is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
saveEventRoutingAIdempotent
Save routing rules — Ersetzt die Regeln des Projekts. Gespeichert werden nur Abweichungen von der Voreinstellung, ein Projekt ohne Regeln trackt nach den Standardwerten.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, explains that only deviations are saved and default behavior when no rules exist, providing useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, includes bilingual repetition but remains succinct and clear.
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?
Sufficient for a simple save operation; no output schema required, description explains behavior and defaults.
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 parameter projectId is obvious from context, but description does not explicitly explain it; schema coverage is low but param is trivial.
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?
Clearly states it saves routing rules and replaces existing rules, distinguishing from getEventRouting.
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 it is for saving/updating rules, but does not explicitly mention when to use it over alternatives like getEventRouting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
saveProjectCredentialsB
Store credentials for the project platform — Speichert Schlüssel und Geheimnis verschlüsselt und probiert sie sofort aus. Leserechte genügen, Trackdolphin schreibt nichts in das Projekt. Die Werte werden nie wieder ausgeliefert.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate it is not read-only, not idempotent, and not destructive, which is minimal. The description adds valuable context: credentials are stored encrypted, immediately tested, Trackdolphin does not write to the project, and values are never returned again. This discloses side effects and limitations beyond annotations, which is a strong contribution.
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 concise, with a clear English opener followed by German details. It front-loads the core purpose and adds relevant operational notes without excess. The information about read rights and non-return is useful and efficiently phrased, though the mix of languages may reduce clarity for some agents.
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 does not explain the return value or behavior on failure (e.g., what happens if credentials are invalid). It mentions immediate testing but not the outcome. There is no output schema, so the description carries the burden of explaining the result, which it fails to do. Also, it does not address idempotency or overwriting behavior, which is relevant given the idempotentHint is false. Overall, it lacks critical operational details for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has only one parameter, projectId, with no description in the schema (coverage 0%). The tool description does not explain what projectId represents or how it should be formatted, relying on the tool name for inference. Since schema coverage is low and the description provides no parameter-specific details, it does not compensate adequately.
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 the action 'Store credentials' for the project platform, which is a specific verb and resource. It adds details about encryption and immediate testing, which clarifies the purpose. However, it does not explicitly differentiate from sibling tools like saveConnectionConfig or setConnectionBearerKey, though the context implies a distinct use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when you need to store project credentials and mentions that read permissions are sufficient, which is a usage prerequisite. It does not explicitly state when not to use it or name alternative tools, but the context of credential storage is clear enough to infer typical usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchDocsARead-onlyIdempotent
Full-text search over the public documentation — PUBLIC, no session required — the search field on the website. Searches section by section (td_docs), not whole pages, so a hit carries a direct anchor. Use this to find what the documentation says about a topic; use searchEverything for anything inside a customer's own account. Never 500s on a Typesense outage — degraded: true with empty groups instead.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search term, matched against title, heading and body. | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds valuable context beyond annotations: the public/no-session nature, section-level scoping, and the degraded mode behavior ('never 500s on a Typesense outage') with specific fields. This is meaningful additional 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?
Three sentences with zero waste. The core purpose is front-loaded, the sibling distinction follows, and the degraded mode is a final precise note. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only search tool with no output schema, the description covers purpose, scope, usage, and failure behavior. The only minor gap is the lack of parameter semantics, but the tool is simple enough that an agent can still call it correctly from 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 only 50% (q has a description, limit does not). The description does not compensate by explaining the parameters or their usage; it only implies q is the search term but adds no syntax, format, or edge-case guidance. For a 2-parameter tool, the description should at least acknowledge limit, but it doesn't.
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 ('full-text search'), a clear resource ('public documentation'), and a distinctive behavior (section-by-section search with direct anchors). It explicitly differentiates itself from the sibling searchEverything, so an agent can tell them 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?
It explicitly states when to use this tool ('find what the documentation says about a topic') and when to use the alternative ('searchEverything for anything inside a customer's own account'). This is direct, unambiguous routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchEverythingARead-onlyIdempotent
Command palette search across app destinations, own account data and docs — AUTHENTICATED — searches three things at once, grouped by kind: static app destinations (settings pages, the ads manager, …), the CALLING organisation's own projects, ad accounts, ad campaigns and API key names (never another organisation's, the filter is enforced server-side and cannot be overridden), and public documentation sections. Groups are ordered destinations before account data before docs when match quality ties, and each hit carries a ready url to navigate to. Use this whenever a user's request names something they are looking for by name (a project, an ad account, a campaign, a settings page, a doc topic) instead of a structured filter — for a full list or a structured query use the dedicated listing endpoints (listAdAccounts, getAdMetrics, …). An empty q returns the most common destinations, not an error. On a Typesense outage this returns 200 with empty groups and degraded: true, never 500.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search term, matched with prefix and one typo per field. | |
| kinds | No | Comma-separated kinds to restrict the answer to (target, project, ad_account, ad_campaign, api_key, doc). Omit for all. | |
| limit | No | Hits per group. The command palette needs few, not many. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety is covered. The description adds substantial behavioral context beyond those: it searches three things simultaneously, enforces organisation isolation server-side (cannot be overridden), groups results deterministically, attaches a ready `url` to each hit, and documents the degraded 200 response on a Typesense outage. This is rich, honest disclosure that materially helps the agent anticipate outcomes.
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 dense but efficient. It front-loads the core purpose, then progressively adds constraints, ordering, and degradation behavior. Every clause earns its place—no filler or repetition. It could be split into shorter sentences for easier scanning, but the structure is logical and the length is justified by the tool's complexity.
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 the return shape, and it does: results are grouped by kind, each hit carries a `url`, and order is deterministic. It also covers the failure mode (degraded 200) and the auth requirement. For a search tool with three optional params and no output schema, nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already has a clear description, so baseline is 3. The description adds value by explaining the semantic effect of `q` (an empty q returns most common destinations rather than an error) and how `kinds` maps to the three categories. It also gives context on the `limit` default by noting the command palette needs few hits. This goes slightly beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb-resource pair: 'Command palette search across app destinations, own account data and docs.' It then names the three categories and the grouping behavior, and explicitly contrasts itself with listing endpoints like listAdAccounts and getAdMetrics, making sibling differentiation immediate and 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?
Provides explicit guidance: 'Use this whenever a user's request names something they are looking for by name... instead of a structured filter — for a full list or a structured query use the dedicated listing endpoints.' It also covers the edge case of an empty query, telling agents when to fall back to it. No ambiguity remains about when to prefer this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setAdAccountChangePolicyAIdempotent
Decide whether this ad account requires approval in the dashboard — require_approval is the switch that matters and it is FALSE by default: changeAdCampaign then changes the campaign directly and the dashboard only records it in the change history. Setting it to true brings back the three step route - changeAdCampaign answers 202 without sending, and a person has to approve in the dashboard before applyAdChange can send. auto_approve only has an effect while approval is required: it says which changes the rule approves without asking a person - status changes as a flag, budget changes up to an absolute amount in micros - and it never overrides the tracking gate, so a budget INCREASE while delivery for the account is red still needs a person. Every field is written on every call, so leaving one out turns it off rather than keeping it.
| Name | Required | Description | Default |
|---|---|---|---|
| adAccountId | Yes | Id from listAdAccounts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavioral nuances beyond the annotations: 'Every field is written on every call, so leaving one out turns it off rather than keeping it,' and it explains the effects of require_approval and auto_approve, including the tracking-gate exception. This gives the agent critical side-effect information.
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 somewhat long but dense with relevant behavioral detail. It front-loads the core purpose and then explains edge cases. It could be tightened, but the extra length serves a complex policy-setting tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's operational behavior well, but it omits any indication of the response/return value and includes references to parameters not present in the schema. This leaves the agent with some uncertainty about the exact result of the call and the accepted input shape.
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 actual schema only includes adAccountId with a minimal description, while the tool description repeatedly references require_approval and auto_approve as controllable inputs. This mismatch is misleading: an agent may attempt to pass parameters not present in the schema, or be unsure which fields are actually accepted.
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 the tool's purpose: 'Decide whether this ad account requires approval in the dashboard.' It also distinguishes the tool from related siblings by explaining the interaction with changeAdCampaign and applyAdChange, making the intended role 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?
It explains the two operational modes (direct change when require_approval is false, three-step approval route when true) and when auto_approve applies, giving the agent solid contextual guidance. It does not explicitly say 'use this instead of X', but the relationship with sibling tools is clear enough to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setAdminUserStaffB
Grant or revoke access to the internal console — Setzt das Staff-Recht eines Zugangs auf den gewünschten Zustand: is_staff: true öffnet die interne Konsole (und bestätigt dabei die E-Mail-Adresse, ohne die nichts versendet wird), is_staff: false schliesst sie. Die Änderung wirkt sofort — das Recht wird bei jeder Anfrage frisch gelesen, bestehende Sitzungen bleiben gültig, kommen aber ab der nächsten Anfrage nicht mehr in die Konsole. Zwei Sperren: Das eigene Recht lässt sich nicht ändern (403), und der letzte verbleibende Staff-Zugang lässt sich nicht entziehen (409). Jede tatsächliche Änderung wird protokolliert; reason landet als Notiz im Protokoll.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds rich behavioral context beyond the annotations: immediate effect, session invalidation behavior, specific error codes (403, 409), and logging with a reason note. However, it references a 'reason' parameter not present in the schema, which introduces slight confusion even though it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed and front-loaded with purpose, then covers behavior and constraints. It is somewhat long but every sentence adds value, though the bilingual mix (German/English) adds slight noise. Overall, it is well-organized for the complexity.
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 a single parameter and no output schema, the description should explain how to invoke the tool and what to expect. It fails to clarify how to set is_staff true/false (no such parameter exists), and it mentions 'reason' without a corresponding parameter, leaving invocation ambiguous. The behavioral details are thorough, but the parameter gap makes it incomplete.
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 schema has only userId with no description, and schema coverage is 0%. The description fails to explain the meaning of userId and instead introduces non-existent parameters (is_staff, reason), leaving the agent without a way to specify the desired state. This is a critical failure to compensate for the missing 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 explicitly states the tool grants or revokes staff access to the internal console, with is_staff true/false opening or closing it. This is a specific verb+resource and clearly distinguishes it from sibling listing tools like listAdminUsers or listStaffRightsChanges.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about immediate effects and two restrictions (cannot change own right, cannot remove last staff), but it does not explicitly state when to use this tool versus alternatives or give exclusions beyond those constraints. No sibling tools are named, so an agent must infer when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setConnectionBearerKeyA
Connect a platform that hands out an API key instead of OAuth — The counterpart of authorizeConnection for platforms without an OAuth round trip — today ChatGPT Ads (openai_ads). The customer copies a key out of the provider account and it is stored encrypted; there is no consent screen to open and nothing that ever expires. ChatGPT Ads issues TWO keys that look alike, so kind says which one this is. ads_api reads campaigns at api.ads.openai.com and is verified against the provider BEFORE anything is written, so an invalid key answers 422 and leaves no half-connected row behind; because such a key is scoped to exactly one ad account, that check doubles as the account lookup and the answer carries the account id, name, currency, timezone and status. conversions_api is the key that delivers events and is stored WITHOUT verification — no documented endpoint confirms such a key without sending an event. After an ads_api key is stored and no conversions key exists yet, one is created from it automatically; conversions_key reports present, created, not_enabled (the provider has not enabled conversion setup for this account — ask the user for that key with kind conversions_api) or failed. No key is ever returned, here or anywhere else. Answers 422 for a platform that uses OAuth — call authorizeConnection for those.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Plattform: ga4, google_ads, meta, linkedin, gtm, tiktok, pinterest, microsoft_ads, openai_ads. Alle ausser openai_ads werden über authorizeConnection verbunden; openai_ads nimmt einen API-Schlüssel über setConnectionBearerKey. | |
| projectId | Yes | Kennung des Projekts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description thoroughly discloses side effects: keys are stored encrypted, `ads_api` keys are verified before write, a `conversions_api` key may be auto-created, and no key is ever returned. This goes well beyond the minimal 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 longer than necessary and uses a dash-heavy style, but nearly every sentence adds meaningful constraints or behavior. It could be tightened without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides rich context about verification, error responses, auto-creation, and security. However, the missing `kind` parameter in the schema leaves a critical gap in how to actually provide that input.
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 schema covers `projectId` and `type`, but the description repeatedly refers to a `kind` parameter that is absent from the input schema. This is confusing for an agent trying to invoke the tool, because it is unclear how to specify whether the key is `ads_api` or `conversions_api`. The schema's German type description helps, but the undocumented `kind` undermines parameter understanding.
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 the tool's purpose: connecting platforms that use API keys instead of OAuth, specifically naming `openai_ads` and positioning it as the counterpart to `authorizeConnection`. This makes it easy to distinguish from sibling 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?
The description explicitly says when to use this tool (`openai_ads` and similar non-OAuth platforms) and when not to use it (OAuth platforms should call `authorizeConnection`). It also explains the different key kinds and the 422 error case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setContactDetailsFromOrdersAIdempotent
Store plain contact details from orders — Schaltet die Übernahme von Name und E-Mail aus Bestellungen (Shopify-Webhook orders/paid) im Klartext ein oder aus. Vorgabe ist aus; ohne diesen Schalter speichert Trackdolphin zu einem Käufer nur Hashes. Die Match-Signale em, ph, fn, ln und die Adressfelder bleiben davon unberührt — sie sind und bleiben hash-only. Das Browser-SDK hat eine eigene Bremse (ausdrückliche Einwilligung) und richtet sich nicht nach dieser Einstellung.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Kennung des Projekts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating, idempotent operation with no destructive hint. The description adds substantial behavioral detail: it discloses the default state, the specific webhook involved, the unaffected hash-only fields, and the independence of the browser SDK. This goes beyond what annotations convey and helps the agent understand the side effects and scope of the toggle.
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 reasonably concise and front-loaded with the core purpose in English, followed by a German elaboration. It is structured clearly, explaining the default, effects, and caveats in a logical order. The duplication of English and German adds a little verbosity but not enough to hurt clarity; it remains easy to scan and understand.
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 toggle, the description covers the essential context: what it does, the default, the impact on stored data, and exclusions. It does not explicitly describe the output or error conditions, but for a simple setter this is generally implied. The description is sufficient for an agent to call it correctly without further documentation.
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 only parameter, projectId, is fully documented in the schema with a clear description ('Kennung des Projekts'). The tool description adds no extra parameter-level detail beyond what the schema already provides. Since schema coverage is 100%, the baseline of 3 is appropriate; the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's exact purpose: toggling plain-text storage of name and email from Shopify orders. It uses a specific verb ('toggle' implied) and a clear resource, and it is distinct from all sibling tools, none of which relate to contact details from orders. The bilingual phrasing reinforces the intent without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides strong contextual guidance: it states the default is off, explains what happens without the switch (only hashes stored), and explicitly notes which signals remain hash-only. It also clarifies that the browser SDK has its own consent mechanism and is unaffected, which is a useful 'when-not' exclusion. However, it does not explicitly say 'use this to enable plain text' as a direct recommendation, leaving the action implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
startChannelPullA
Fetch account data of a channel in the background — Reiht einen Abruf ein (Kampagnen, Conversion-Actions, Pixel/Datasets, GA4-Properties) und antwortet sofort. Läuft für denselben Projekt und Kanal bereits einer, wird KEIN zweiter gestartet, die Antwort zeigt dann den laufenden Abruf und enqueued: false.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Explains background execution, immediate response, and deduplication behavior. Annotations are all false, so the description carries the transparency burden. It doesn't mention error conditions or side effects beyond enqueuing a pull.
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 fluff, but mixes English and German, which may reduce clarity slightly. It covers the core behavior and dedup rule efficiently.
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?
Lacks output schema and does not describe the typical success response, only the dedup case. Also doesn't explain how channel is specified given only the projectId parameter, leaving notable gaps for a low-complexity 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?
Only parameter projectId has no schema description. Tool name mentions channel but no channel parameter, so the role of projectId is ambiguous. No explanation of how the channel is determined.
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 it fetches account data of a channel in the background, listing specific data types (campaigns, conversion actions, pixels/datasets, GA4 properties). Clearly distinct from sibling list/get pull 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?
Mentions that if a pull is already running for the same project and channel, it won't start another and returns the existing with enqueued:false. This gives usage guidance on dedup, though it doesn't explicitly compare to alternatives like listChannelPulls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
startGtmImportD
Read and analyse a Tag Manager container — Reiht den Import ein und antwortet sofort. Ohne container_public_id nehmen wir die Kennung, die beim Tippen der Domain auf der Startseite gefunden wurde; gibt es auch die nicht, kommt 400. Ohne verbundenen Tag Manager kommt 409. Läuft bereits ein Import, wird KEIN zweiter gestartet, die Antwort zeigt dann den laufenden und enqueued: false.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Mentions some side effects (enqueued false, 400/409 errors) but in a disorganized, non-committal way. It does not clearly state that this action starts/queues an import and what the impact is. The read-only implication from 'Read and analyse' conflicts with the side-effect-oriented German text.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is verbose, rambling, and mixes English and German without clear structure. It is not concise or well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the minimal schema and no output schema, the description should explain what the tool does, its effects, and expected outcomes. It fails to do so coherently, leaving the agent without essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only has projectId with no description. The description references container_public_id which is not in the schema, misleading the agent. No parameter semantics are provided.
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 confusing and mixed-language. It says 'Read and analyse a Tag Manager container' which contradicts the tool name 'startGtmImport' (which should start an import). The purpose is not clearly 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?
No guidance on when to use this tool vs siblings like startProjectImport or getGtmImport. Error conditions are mentioned but not in the context of selecting this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
startProjectImportB
Start the historical import — Holt die Bestellhistorie aus dem Projekt-System nach und vergleicht sie mit dem, was das Tracking selbst gemeldet hat. Ergebnis ist die Erkennungsquote: wie viele Bestellungen bisher fehlten und wie viel Umsatz ohne Zuordnung blieb.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the safety profile is covered. The description adds context about the comparison and result, but does not disclose whether the import is asynchronous, requires credentials, or has side effects like overwriting data. Given the annotations cover the basic safety, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no filler. The action is front-loaded ('Start the historical import'), and the second sentence adds the purpose and outcome. Every word contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and result, but lacks operational details such as whether the import runs asynchronously (likely given the sibling getProjectImportStatus), any prerequisites like saved credentials, or potential error conditions. Without an output schema, more context about the return format would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the projectId parameter at all. With only one parameter, the description should at least explain that projectId identifies the project to import. It adds no meaning beyond the schema's bare type declaration.
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 the action (starting a historical import), the resource (order history from the project system), and the outcome (recognition rate). It is specific enough to distinguish from siblings like startGtmImport (which imports Google Tag Manager data) and getProjectImportStatus (which checks status rather than starting an import).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention exclusions or conditions, and does not reference siblings like getProjectImportStatus or startGtmImport. The agent is left to infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
startTrackingAuditA
Check a site for tracking that runs before consent — Reiht den Scan ein und antwortet sofort mit 202. Läuft für die Domain bereits ein Scan, wird KEIN zweiter gestartet, die Antwort zeigt dann den laufenden und enqueued: false. Dasselbe gilt für ein Ergebnis, das jünger als 24 Stunden ist: Es wird wiederverwendet, statt einen fremden Server erneut zu belasten. Danach GET /api/audit/{id} abfragen, bis status auf „done“, „failed“ oder „blocked“ steht. „blocked“ heisst: Das Projekt lässt automatisierte Aufrufe nicht zu, das ist ein Ergebnis, kein Fehler, und muss dem Besucher auch so gezeigt werden. Während des Wartens tragen die Antworten progress (Phase, Satz, Balken, Restzeit) und ab der Hälfte preview (Plattform, Einwilligungswerkzeug, Tag Manager, Cookies und Tracking-Hosts vor jeder Einwilligung). Ist die Schlange voll, antwortet der Endpunkt mit 503 und Retry-After, ein vorhandenes Ergebnis unter 24 Stunden wird auch dann noch ausgeliefert.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description transparently discloses side effects: it enqueues a scan, avoids duplicate scans, reuses recent results, and returns 503 when the queue is full. It also clarifies that 'blocked' is a result, not an error. This is thorough given no annotations provide relevant hints.
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 dense paragraph mixing German and English. While informative, it could be better structured with clear sentences or bullets to highlight key behaviors like polling, deduplication, and error handling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main operational aspects: initial 202 response, deduplication, caching, polling status, progress fields, preview content, and queue-full handling with Retry-After. Missing a formal output schema, but the field names provided are enough for basic usage.
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 are no parameters; the schema is empty and fully covered. No parameter explanation is needed, but the description doesn't add extra value beyond the schema (which is trivial). Baseline 4 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 clearly states the tool's purpose: starting a tracking audit for a site to check tracking before consent. It also explains the enqueueing behavior and response codes, making it 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 explains when the tool is appropriate (starting a new audit) and describes the expected flow (polling with GET /api/audit/{id}). It doesn't explicitly contrast with sibling audit tools, but the start-action nature is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggestProjectsBRead-onlyIdempotent
Type-ahead suggestions for the project address — Durchsucht das öffentliche Projekt-Verzeichnis (Domain, Favicon, Shopsystem, Headless-Befund, Tag Manager, Pixel, Consent-Tool) während des Tippens. Sieht die Eingabe wie eine vollständige Domain aus und ist unbekannt, wird die Seite live geprüft und aufgenommen.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent behavior. The description adds that unknown complete domains are live-checked and added to the directory, which is extra detail beyond the annotations, but other side effects or edge cases are not disclosed.
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 concise, covering the core purpose and additional behavior in two sentences. The bilingual duplication adds length but is not excessive.
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 explains what the tool does and its special behavior for unknown domains, but does not describe the output format or any limitations (e.g., rate limits, matching logic). For a suggestion tool without an output schema, this is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so there is nothing to document. The baseline score of 3 is appropriate as the description does not need to clarify parameter meanings.
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 the tool provides type-ahead suggestions for project addresses, searching the public project directory. It is distinct from sibling list/get tools by focusing on live suggestions, but does not explicitly contrast with any specific sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage during typing but provides no explicit guidance on when to choose this over other project-related tools. No alternative tools are mentioned or contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncAdAccountA
Fetch accounts and campaigns from the advertising platform in the background — Queues a sync and answers immediately - it does NOT wait for the platform. Without ad_account_id this is the discovery run: it resolves every account the organisation's connections can reach (including sub-accounts under a Google manager account), stores them, and fetches the campaigns of each. With ad_account_id only that one known account is refreshed. Google Ads runs strictly one sync at a time because the API quota belongs to the developer token and is shared across all customer accounts. The result shows up in listAdAccounts and listCampaigns; a failure on a single account is recorded in its last_sync_error and does not stop the others. Only reads at the platform - nothing in the ad account is changed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Reveals async queueing with immediate response, Google Ads concurrency limits, per-account failure isolation via last_sync_error, local persistence, and platform read-only behavior. The annotations only say readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the description carries substantial extra behavioral context. No contradiction: local writes explain readOnlyHint=false while the platform itself is only read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four information-dense sentences with no filler; the critical async behavior is front-loaded. Each sentence earns its place: mode semantics, concurrency, result visibility/failure handling, and platform read-only guarantee.
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 complex background sync, it covers invocation modes, concurrency, failure handling, result visibility, and side-effect profile. The notable gaps are that ad_account_id is referenced but missing from the schema and no prerequisites like connection/auth are stated. Overall it is nearly complete but the schema mismatch is a real correctness risk.
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 are zero parameters in the schema, so the baseline is 4, but the description introduces an optional ad_account_id that is not present in the schema at all. It adds meaningful semantics for the two invocation modes, yet the schema mismatch prevents the agent from knowing how to actually pass ad_account_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action: 'Fetch accounts and campaigns from the advertising platform in the background' and clearly distinguishes the two modes (discovery vs single-account refresh). It also separates itself from sibling read tools by noting that results appear in listAdAccounts and listCampaigns rather than being returned 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?
Explains when to call without vs with ad_account_id and describes the discovery vs single-refresh behavior. It does not explicitly compare against sibling alternatives such as listAdAccounts, but the result-visibility sentence guides the agent toward the right read tool and the Google Ads one-sync-at-a-time constraint is useful operational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
89 tool updates
v0.1.3- First observed
applyAdChange - First observed
approveAdChange - First observed
assignConnectionTargets - First observed
authorizeConnection - First observed
authorizeOrgConnection - First observed
autoconfigureConnection - First observed
cancelAccountDeletion - First observed
cancelShopifySubscription - First observed
changeAdCampaign - First observed
cohort_create - First observed
cohort_delete - First observed
cohort_export - First observed
cohort_preview - First observed
cohort_update - First observed
cohorts_list - First observed
createApiKey - First observed
createBillingPortalSession - First observed
createCheckout - First observed
createProject - First observed
createShopifySubscription - First observed
deleteConnection - First observed
deleteOrgConnection - First observed
detectAndSaveProjectPlatform - First observed
detectProjectPlatform - First observed
disableConnection - First observed
disableOrgConnection - First observed
disconnectShopify - First observed
enableConnection - First observed
enableOrgConnection - First observed
getAccountDeletionStatus - First observed
getAdChange - First observed
getAdMetrics - First observed
getBillingStatus - First observed
getChannelPull - First observed
getConnectionInventory - First observed
getEventRouting - First observed
getGtmImport - First observed
getLatestTrackingAudit - First observed
getOrgConnectionMap - First observed
getProjectChannels - First observed
getProjectDailySeries - First observed
getProjectEventTypes - First observed
getProjectFunnel - First observed
getProjectImportStatus - First observed
getProjectKpis - First observed
getProjectOnboarding - First observed
getProjectSetup - First observed
getProjectTopPages - First observed
getProjectTrackingHealth - First observed
getShopifyConnection - First observed
getShopifySubscription - First observed
getTrackingAudit - First observed
inviteTeamMember - First observed
listAdAccounts - First observed
listAdChanges - First observed
listAdminUsers - First observed
listApiKeys - First observed
listCampaigns - First observed
listChannelPulls - First observed
listOrgConnections - First observed
listProjectEnvironments - First observed
listProjects - First observed
listStaffRightsChanges - First observed
listTeam - First observed
person_journey - First observed
persons_list - First observed
previewAdChange - First observed
recordProjectEntry - First observed
rejectAdChange - First observed
requestAccountDeletion - First observed
requestHeadlessGuide - First observed
resolveAdChange - First observed
revokeApiKey - First observed
revokeInvitation - First observed
saveConnectionConfig - First observed
saveEventRouting - First observed
saveProjectCredentials - First observed
searchDocs - First observed
searchEverything - First observed
setAdAccountChangePolicy - First observed
setAdminUserStaff - First observed
setConnectionBearerKey - First observed
setContactDetailsFromOrders - First observed
startChannelPull - First observed
startGtmImport - First observed
startProjectImport - First observed
startTrackingAudit - First observed
suggestProjects - First observed
syncAdAccount
TDQS
Scored across 89 tools
Most tools have clearly distinct resources and the detailed descriptions actively disambiguate complex workflows like ad-change approval. However, with 89 tools there are genuinely overlapping status endpoints (getProjectTrackingHealth vs getProjectKpis) and near-identical pairs (detectProjectPlatform vs detectAndSaveProjectPlatform), so misselection is a real risk without careful reading.
The set mixes getX, listX, createX, saveX, startX, authorizeX, and enableX patterns, then interleaves a snake_case cluster (persons_list, cohort_create, cohort_update) and workflow verbs like changeAdCampaign/applyAdChange. CamelCase and snake_case are mixed and noun_verb vs verb_noun ordering varies, so no consistent naming scheme is maintained.
89 tools is far beyond the 25+ threshold and falls into the extreme range for an MCP surface. The broad domain explains some of the size, but this count overwhelms tool selection and would be better split into several focused servers.
The analytics, cohort, connection, and ad-change workflows are impressively complete, and the audit/import areas are well covered. However, project lifecycle lacks update/delete (only create/list/status exist) and team management has no remove-member or change-role tool, creating real dead ends for an agent managing those resources.
Maintenance
Related MCP Connectors
200+ read/write tools for GA4, Search Console, Google Ads, Shopify, WooCommerce, Shopware & more.
- adsOAuthcom.adspirer
Manage Google, Meta, Amazon, TikTok, LinkedIn & ChatGPT ads. 430 tools for campaigns & analytics.
60+ Meta Ads tools for AI agents: audits, campaign management, audiences and CAPI tracking.
- MCP AdsOAuthcom.mcp-ads
Run Google Ads, Meta Ads, GA4 and Search Console from chat: read, audit and launch campaigns.
Related MCP Servers
- AlicenseAqualityBmaintenanceCross-platform ad management MCP server for Google Ads and Meta Ads. Campaign analytics, A/B testing with z-test, anomaly detection, and budget reallocation. 15 tools, 60 tests.1788 npmMIT
- AlicenseAqualityDmaintenanceMCP server for Google Ads API — 22 tools for campaigns, keywords, RSAs, assets, audiences, geo/device performance, impression share, auction insights, and budget pacing. Community edition with B2B/agency-focused tooling beyond the official Google MCP.2279 npm1MIT
- AlicenseAqualityAmaintenance50 tools for Meta Ads campaign management, creative analysis, audience building, and conversion tracking, accessible to any MCP-compatible AI agent.6980 npm13MIT
- AlicenseBqualityCmaintenanceTyped MCP server for OpenAI Ads and ChatGPT Ads via the Advertiser API. Supports account, campaign, ad group, ad, creative, audience, insight, and conversion tools with readonly mode and guarded writes.123MIT