Skip to main content
Glama

Server Details

With Epovest, businesses make AIs recommend them.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.4/5 across 40 of 46 tools scored. Lowest: 3.3/5.

Server CoherenceA
Disambiguation4/5

Each tool targets a distinct resource and action, with detailed descriptions that clarify differences. However, the large number of tools (46) and some similar naming patterns (e.g., multiple 'list_' and 'archive_' tools) could cause minor confusion, though careful reading resolves it.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case. Verbs are descriptive and predictable, with no mixing of conventions (e.g., no camelCase). This makes the surface easily navigable for agents.

Tool Count3/5

At 46 tools, the server exceeds the typical well-scoped range (3-15) but remains within reason for a complex domain like brand monitoring. While each tool has a purpose, the count feels heavy and could be streamlined.

Completeness5/5

The tool surface covers the domain thoroughly: CRUD operations for projects, surfaces, corroborations, trackers, and logbook entries, plus specialized actions (mark alignment, tick checklists, manage credits, support). No obvious gaps, and all lifecycle stages are addressed.

Available Tools

46 tools
accept_keyword_discoveryAccept discovered suggestionsAInspect

Accept one discovered suggestion (domain) or a batch (domains): each becomes a tracked keyword of the tracker, in place, and its series starts at the next survey. Refused with keyword_cap_reached when the batch would exceed the keyword cap, and with not_found when a domain is not currently suggested (the batch is all-or-nothing, nothing is added then). The answer carries keyword for a single domain, keywords for a batch. Accept on behalf of the user only when they said yes.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoOne domain to act on, exactly as listed by list_keyword_discoveries. Send this OR domains, never both.
domainsNoSeveral domains to act on in one call, each exactly as listed by list_keyword_discoveries. Send this OR domain, never both. ALL-OR-NOTHING: one invalid domain refuses the whole batch, so you never have to guess which half took.
tracker_idYesThe UUID of the tracker: call list_trackers to find it.
Behavior4/5

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

Annotations already indicate this is a write operation (readOnlyHint=false). The description adds important behavior: the mutation effect (keyword added, series starts next survey), the all-or-nothing batch behavior, and specific error responses. It does not cover authentication or rate limits, but the key behavioral traits are disclosed.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the main purpose, and every sentence adds value. No redundancy or wasted words.

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

Completeness4/5

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

The tool has 3 parameters and no output schema. The description explains the output shape (keyword for single, keywords for batch) and covers error cases. It is sufficient for this simple tool, though it could mention more about the return format.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds significant meaning: the mutual exclusivity of 'domain' and 'domains', the all-or-nothing behavior of the batch, and the consequence of acceptance (tracked keyword, series starts). This goes beyond the schema's basic descriptions.

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

Purpose5/5

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

The description clearly states the verb 'Accept' and the resource 'discovered suggestion (domain) or a batch (domains)'. It explains the outcome: each becomes a tracked keyword and its series starts at the next survey. This distinguishes it from sibling tools like 'dismiss_keyword_discovery' or 'list_keyword_discoveries'.

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

Usage Guidelines4/5

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

The description provides clear context: 'Accept on behalf of the user only when they said yes.' It also explains error conditions (keyword_cap_reached, not_found) and batch behavior. However, it does not explicitly state when not to use or list alternative tools for similar actions.

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

archive_corroborationTake a corroboration down, or put it back liveA
Idempotent
Inspect

Record that the page is no longer there (article unpublished, link dead), or put it back live with archived false. Nothing is deleted: the line stays, and so does the history, because "they talked about us from March to July" is information. A page taken down stops counting as a presence on that source. Only take down after actually re-reading the address and finding it gone.

ParametersJSON Schema
NameRequiredDescriptionDefault
archivedNotrue takes the page down, false puts it back live. Omitted, it takes it down.
corroboration_idYesThe UUID of the corroboration: call list_corroborations to find it.
Behavior4/5

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

The description adds behavioral context beyond annotations: 'Nothing is deleted: the line stays, and so does the history' and 'A page taken down stops counting as a presence on that source.' Annotations already indicate non-destructive, but description elaborates meaningfully.

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

Conciseness5/5

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

The description is concise (4 sentences), front-loaded with the action, and each sentence adds necessary context without unnecessary words. It is well-structured.

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

Completeness5/5

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

For a simple toggling tool with 2 parameters, no output schema, and annotations present, the description is complete. It explains the effect, non-destructive nature, and usage requirement.

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

Parameters3/5

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

The input schema already covers both parameters with complete descriptions. The tool description does not add new semantic information about parameters beyond what the schema provides. Schema coverage is 100%, so baseline 3 is appropriate.

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

Purpose5/5

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

The title and description clearly state the tool toggles archived status of a corroboration. It specifies 'take down' or 'put back live', distinguishing it from creating or updating corroborations.

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

Usage Guidelines4/5

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

The description provides a clear usage guideline: 'Only take down after actually re-reading the address and finding it gone.' It implies when to use this tool vs alternatives, though not explicitly listing when not to use.

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

archive_projectFile a project awayA
DestructiveIdempotent
Inspect

File a project away once the folder has served its purpose: a client that left, a brand that was sold. It moves to the end of list_projects with archived true, and stops being offered when filing a tracker. Bring it back with archived false. Nothing is deleted and nothing cascades: the trackers filed under it keep their status, keep measuring and keep showing up in list_trackers, and the answer carries tracker_count, how many are still filed under it, so you can go on with archive_tracker on each one when that is what the user meant. Filing away an already filed project answers the same. Default is where trackers without a folder live: it has no id, so this tool always takes the UUID of a project of the account.

ParametersJSON Schema
NameRequiredDescriptionDefault
archivedNotrue files the project away, false brings it back. Omitted, it files it away.
project_idYesUUID of the project: call list_projects to find it.
Behavior5/5

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

The description goes well beyond annotations: it explains that archiving moves the project to the end of the list, sets archived to true, stops it from being offered when filing trackers, that nothing is deleted, no cascading effects, the return includes tracker_count, and that re-archiving an already archived project yields the same result. This fully discloses behavior for an agent.

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

Conciseness4/5

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

The description is lengthy but every sentence adds meaningful information. It is front-loaded with the primary purpose and usage context. Could be slightly more concise, but readability is good.

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

Completeness5/5

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

No output schema, yet the description explains the return value (tracker_count) and covers edge cases (already archived, default project). It provides complete context for an agent to understand the tool's full behavior and usage.

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

Parameters4/5

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

Schema coverage is 100%, so parameters are already documented. The description adds value by clarifying the default behavior for archived (true if omitted), the source of project_id (list_projects), and the implication of the default project (no id). This provides extra context beyond schema descriptions.

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

Purpose5/5

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

The description clearly states the action ('File a project away') and specifies the resource ('a project'). It distinguishes from sibling tools like archive_tracker by explicitly stating that trackers are not affected. The use cases (client left, brand sold) provide concrete context.

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

Usage Guidelines5/5

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

The description explicitly says when to use this tool ('once the folder has served its purpose') and what not to use it for (tracker archival). It provides guidance on how to bring projects back (archived false) and mentions the alternative tool (archive_tracker) for archiving trackers individually.

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

archive_trackerFile a tracker awayA
DestructiveIdempotent
Inspect

File a finished tracker away: a campaign that ended, a brand that was sold, a trial that is over. It moves to the end of list_trackers with archived true, stops asking for anything, and its measurement pauses in the same call if it was still running, so the spending stops there. Bring it back with archived false: the tracker returns to the list as it was, and start_tracker restarts the measurement when the user asks for it. The sheet and the score series are kept and stay readable throughout (get_results answers as usual). Filing away an already filed tracker answers the same.

ParametersJSON Schema
NameRequiredDescriptionDefault
archivedNotrue files the tracker away and pauses its measurement, false brings it back. Omitted, it files it away.
tracker_idYesThe UUID of the tracker: call list_trackers to find it.
Behavior4/5

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

The description discloses key behaviors: moving to list end, pausing measurement, stopping spending, and that sheet and scores remain readable. This adds value beyond the annotations, which indicate destructiveHint=true but the tool is reversible. 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.

Conciseness4/5

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

The description is well-structured and front-loaded with the main action. Four sentences, each adding value, though could be slightly more concise.

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

Completeness4/5

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

Given the lack of output schema and moderate complexity, the description covers essential effects and reversibility. It does not mention error cases or authentication, but overall sufficiently complete.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds meaning by explaining the effect of the archived boolean and how to find tracker_id via list_trackers. This goes beyond the schema's descriptions.

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

Purpose5/5

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

The description clearly states the tool's purpose: to file a finished tracker away. It uses a specific verb ('file away') and resource ('tracker'), and distinguishes from siblings like pause_tracker by specifying it's for finished trackers and changes the list ordering.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool (for finished trackers) and explains reversal via archived=false. However, it does not explicitly contrast with pause_tracker, though the context is sufficient.

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

complete_questComplete a questA
Idempotent
Inspect

Mark a quest done: the move happened. Sets the state and the closing date; calling it again leaves it done, so a retry is safe, and a dismissed quest that was done after all becomes done (the last move is what the file remembers). The quest stays readable in the closed history of list_quests.

ParametersJSON Schema
NameRequiredDescriptionDefault
quest_idYesThe UUID of the quest: call list_quests to find it.
Behavior5/5

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

The description goes well beyond annotations. It explains idempotency (calling again is safe), the effect on dismissed quests (becomes done), and that the quest remains readable. These details are critical for an agent to understand side effects and safety, and no contradictions with annotations exist.

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

Conciseness5/5

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

The description is two sentences with no wasted words. It front-loads the core action ('Mark a quest done') and efficiently conveys idempotency, edge cases, and persistence. Every sentence earns its place.

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

Completeness4/5

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

Given the tool's simplicity (mutation, 1 param, no output schema), the description covers the behavioral effects well. It lacks explicit mention of return values, but that is minor. The description, combined with schema and annotations, provides sufficient context for correct invocation.

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

Parameters3/5

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

The input schema has 100% description coverage for the single parameter (quest_id). The description adds no additional semantic meaning beyond what the schema already provides. Baseline score of 3 is appropriate as the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the tool 'marks a quest done' with specific actions (sets state and closing date). It distinguishes from sibling tools like dismiss_quest and update_quest by focusing on completion. The verb 'complete' in the name is reinforced by 'done', providing unambiguous purpose.

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

Usage Guidelines4/5

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

The description implicitly guides usage by explaining idempotency and the handling of dismissed quests (the last move wins). It does not explicitly contrast with peers like dismiss_quest or create_quest, but the context of completing vs dismissing is clear. A more explicit 'use when...' would elevate this score.

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

contact_supportWrite to the Epovest support teamAInspect

Send a message to the humans behind Epovest: report a problem, suggest an improvement, ask a question. Use it when a tool refuses what should work, when the product is missing something the user needs, or when the user asks you to tell us something. The message lands in the support threads of the account, which the members also see in the app, and a human answers there. Reply to an ongoing thread with thread_id, and read the answer with get_support_thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoWhat this message is: sorts it on arrival.
messageYesWhat you want to tell the support team, in the words of the user when they dictated it. Include what you tried and what happened.
subjectNoTitle of the thread. Derived from the message when omitted; ignored when replying.
thread_idNoReply to this thread instead of opening a new one: call list_support_threads to find it.
Behavior4/5

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

Discloses message lands in support threads seen in app, human replies, and behavior of subject derivation and thread_id usage. No contradiction with annotations. Could mention limits but not necessary.

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

Conciseness5/5

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

Four sentences efficiently cover purpose, usage, behavior, and parameter details without redundancy.

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

Completeness5/5

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

Complete for a simple communication tool: explains what happens after sending, how to check replies via get_support_thread, and references sibling tools for thread management.

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

Parameters5/5

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

Schema coverage 100%, description adds meaningful guidance: message content advice, kind's sorting purpose, subject derivation/reply behavior, thread_id usage with link to sibling.

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

Purpose5/5

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

Describes sending a message to human support with specific use cases (report problem, suggest, ask question). Explicitly distinguishes from sibling get_support_thread for reading replies.

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

Usage Guidelines5/5

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

Explicitly states when to use (tool refusal, missing product, user request). Explains how to reply to existing thread and directs to list_support_threads for finding thread_id.

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

create_corroborationRecord a corroborationAInspect

Record that a third-party page talks about the brand. URL-FIRST: the exact address of the page is the only thing needed, the source on the map and the display name are derived from it. It is a statement of fact: only record a page you have actually read, and confirm with the user. Three refusals answer with their own slug: unplaceable_url (the address has no registrable domain), own_domain (this is the site of the brand, so a surface, use create_surface), duplicate (the page is already in the registry, 409).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesAbsolute http(s) address of the EXACT page where the third party talks about the brand, never the home page of the site.
labelNoDisplay name of the page. OMIT IT: it is derived from the address (domain and path). Send an empty string to go back to the derived one.
notesNoFree notes: the passage that mentions the brand, the contact, how the page came about.
project_idYesUUID of the project: call list_projects to find it.
published_onNoThe day the page was PUBLISHED, as YYYY-MM-DD. Distinct from the recording day, and the one that means something against the citation curves. Omit it when unknown: it is never guessed.
Behavior4/5

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

Annotations are sparse (no readOnly, destructive, etc.), so the description carries the burden. It discloses that the tool is a statement of fact, describes three possible error outcomes, and indicates idempotency via the duplicate refusal (409). While it doesn't cover all behavioral traits (e.g., no mention of rate limits or authentication), it provides solid behavioral context beyond annotations.

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

Conciseness4/5

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

The description is a single dense paragraph, but every sentence adds value. It could be slightly more structured (e.g., bullet points for refusal slugs), but it is concise and not verbose.

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

Completeness4/5

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

Given no output schema, the description doesn't explain return values, which is a minor gap. However, it covers error slugs and critical usage constraints. For a creation tool with 5 parameters and no nested objects, it is largely complete and addresses the main concerns an agent would have.

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

Parameters4/5

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

Schema coverage is 100% with each parameter described. The description adds meaning: URL-first (implied order), label derived from URL, notes are free text, project_id from list_projects, published_on distinct from recording day and never guessed. This enriches understanding beyond what the schema alone provides.

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

Purpose5/5

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

The description clearly states 'Record that a third-party page talks about the brand', which is a specific verb and resource. It distinguishes from siblings like create_surface (for own domain) and archive_corroboration, making the purpose unmistakable.

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

Usage Guidelines5/5

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

Explicitly says 'URL-FIRST: the exact address of the page is the only thing needed', advises to only record pages actually read and confirmed with user, and provides three refusal reasons (unplaceable_url, own_domain, duplicate) with concrete actions (e.g., use create_surface for own_domain). This level of guidance is exceptional.

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

create_logbook_entryRecord an action in the logbookAInspect

Record an action in the logbook of a project: what was done, and WHEN it was done. occurred_at is the date of the ACTION itself, not of the recording: recording after the fact is the normal case ("record: site translated into Spanish yesterday" means occurred_at is yesterday). The entry joins the tool events in the logbook and lands as an annotation on the citation curves of the trackers of the project, so the action can be read against the measures. Recording is idempotent on the project, the label and occurred_at: calling again with the same three returns the entry already recorded instead of a second copy, so a retry is safe. The same move recorded in two languages has two labels, so it stays two entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYesShort wording of the action, e.g. "Site translated into Spanish": it is what the annotation shows next to the citation curves.
notesNoFree notes: context, links, details of the action.
categoryYesWhat kind of action this is; it files the entry for filtering. "other" covers anything else.
project_idYesUUID of the project: call list_projects to find it.
occurred_atNoWhen the action HAPPENED, ISO 8601 date or datetime, read as UTC without an offset. Distinct from the recording time: when the user says "yesterday" or "last week", compute and pass that date. Omitted on creation, now is used.
Behavior1/5

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

Description states 'Recording is idempotent on the project, the label and occurred_at', but annotations set idempotentHint: false, a direct contradiction. This severely undermines transparency.

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

Conciseness4/5

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

Every sentence adds value, covering purpose, idempotency, and parameter semantics. Slightly long but well-structured and front-loaded with the key purpose.

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

Completeness4/5

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

Given no output schema, describes what happens (entry joins logbook, lands as annotation). Covers idempotency and temporal nuance. Adequately complete.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. Description adds meaning beyond schema: clarifies occurred_at refers to action time, not recording time, and explains label's role in annotations.

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

Purpose5/5

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

Clearly states the tool records an action in the logbook of a project, with specific verb and resource. Distinguishes from sibling tools like delete_logbook_entry and update_logbook_entry.

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

Usage Guidelines4/5

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

Explains the normal use case (recording after the fact) and idempotency making retries safe. Does not explicitly mention when to avoid using it or alternatives, 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.

create_projectCreate a projectAInspect

Create a project to file trackers under: one project per BRAND, never per language. It can carry the brand canon: the reference wording every publication reuses as is, written in ONE language, its canonical language (carried at creation, it is recorded as canon version 1). The canon is never translated: localized expressions on the pages are outputs, not a second canon. Nothing is filed by this call: pass the returned id as project_id when creating or updating a tracker. Refused with project_exists when a project with this name already exists, and the answer carries the existing project: reuse its id instead of duplicating.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the project, as the user calls it (a client, a brand, a website...).
canon_longNoThe two-sentence version, when the surface allows it.
canon_emailNoPublic email address of the brand.
canon_perksNoThe distinctive claims of the brand, in the order they should be hammered, written in the canonical language. Facts that hold and can be corroborated ("works without a subscription"), never superlatives ("the best"), which no page reuses. A sent list REPLACES the previous one.
canon_phoneNoPhone number, international prefix included.
canon_shortNoTHE one-sentence description third-party pages reuse as is.
canon_addressNoPostal address, as written on a listing. Language-neutral: the same string everywhere, like the other facts.
canon_websiteNoThe canonical address of the brand website, the one that identifies the entity. A bare domain is enough ("example.com" completes to "https://example.com"). ONE URL only: the other addresses of the brand (documentation, application, blog, social accounts) are SURFACES, never a second canonical site.
canon_categoryNoCategory label for listings and structured data.
canon_languageNoShort code of the ONE language the canon is written in, like "en" or "pt-br". The canonical language settles every language call (the llms.txt of a multilingual site is written in it).
canon_whatsappNoWhatsApp number, international prefix included.
canon_one_linerNoOne-sentence signature of the brand.
canon_legal_nameNoRegistered name of the company that operates the brand, with its jurisdiction when the user states it ("Acme Holdings, LLC, Delaware, United States"). Language-neutral, like the other facts: the AIs cross-read it to anchor the entity, and it is what a directory listing and an Organization.legalName block copy.
Behavior5/5

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

Discloses that the tool is a creation (not readonly), idempotent behavior on duplicates (refuses with project_exists and returns existing project id), and that parameters like canon_perks replace previous ones. Annotations are consistent, and the description adds context beyond them.

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

Conciseness4/5

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

The description is concise, packing essential rules and context into a single paragraph. It is front-loaded with purpose and constraints. Could be slightly more structured (e.g., bullet points), but remains efficient without unnecessary words.

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

Completeness4/5

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

Given the complexity (13 parameters, no output schema), the description covers creation rules, duplicate handling, and post-creation usage. It mentions the returned id for later use, which partly compensates for missing output schema. Some additional details about response format could be useful, but not required.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds conceptual meaning: explains canon as reference wording in one canonical language, never translated, and that canon fields like canon_perks are not just any claims but verifiable facts. This enriches the schema's descriptive text.

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

Purpose5/5

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

The description clearly states this tool creates a project for filing trackers, with the specific rule 'one project per BRAND, never per language.' It distinguishes itself from siblings like archive_project or update_project_canon by explaining the project's role and constraints.

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

Usage Guidelines5/5

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

Explicitly states when to use (for a brand), what not to do (never per language), and what to do on duplicate (reuse existing project id). Also clarifies that trackers are not filed by this call, guiding the user to use the returned id later.

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

create_questAdd a questAInspect

Add a quest to the file of a project: a next move the customer decided, kept where the work resumes ("get our MCP server listed on the AI tool directories"). title says the move; notes carry context and links. Adding is idempotent on the project and title while the quest is open: calling again returns the quest already in the file instead of a second copy, so a retry is safe. A closed quest with the same title does not block: doing the move again later is a new quest, with its own history.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoFree notes: context, links, what done looks like.
titleYesShort wording of the move, e.g. "Get our MCP server listed on the AI tool directories": it is what the file shows.
project_idYesUUID of the project whose file takes the quest: call list_projects to find it.
Behavior5/5

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

The description reveals critical behavioral traits beyond annotations: conditional idempotency (safe retry for open quests), behavior for closed quests (not blocked), and that calling again returns existing quest. This adds significant context beyond the idempotentHint: false annotation.

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

Conciseness4/5

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

The description is concise but includes some repetitive detail. It is front-loaded with the main action and uses an example to clarify usage. Minor trimming could be possible, but overall efficient.

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

Completeness5/5

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

Given no output schema, the description covers all necessary aspects: what the tool does, when to use it, idempotency behavior, and handling of closed quests. It is complete 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.

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the semantics of 'title' (the move wording) and 'notes' (context and links), reinforcing the schema descriptions and tying them to the tool's purpose.

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

Purpose5/5

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

The description clearly states the tool's function: 'Add a quest to the file of a project: a next move the customer decided...' It uses specific terminology (quest, project file) and distinguishes it from siblings by focusing on creation.

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

Usage Guidelines4/5

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

The description explains when to use the tool (when a customer decides a next move) and mentions idempotency behavior for open quests, providing safe retry. However, it does not explicitly state when not to use it or compare with alternatives like update_quest.

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

create_surfaceRegister a surfaceAInspect

Register a surface of a project: one official page where the brand speaks in its own name. URL-FIRST: the url is the only thing needed, type and label are derived from it; pass them only to correct a derivation. It is born never_aligned: bring the page in phase with the canon, then record it with mark_surface_aligned (a distinct, deliberate move).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesAbsolute http(s) address of the surface.
typeNoWhat kind of surface this is; it picks the checklist to come. OMIT IT on creation: the type is derived from the url by the catalogue of places (github.com is GitHub, an unknown host is the brand website). Send it only to correct a derivation. "other" covers anything else and carries the generic checklist.
labelNoDisplay name of the surface. OMIT IT on creation: it is derived from the url (the handle on a known place, the host and path on a website).
notesNoFree registry notes: who owns the account, access, context.
languagesNoLanguages of the surface, as short codes like "en" or "pt-br". A sent list replaces the previous one.
project_idYesUUID of the project: call list_projects to find it.
Behavior4/5

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

Adds behavioral context beyond annotations: the surface is 'born never_aligned' and requires explicit alignment via mark_surface_aligned. No contradiction with annotations. The description provides useful workflow context.

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

Conciseness3/5

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

Relatively concise but uses metaphorical language ('born never_aligned', 'in phase with the canon') that may be confusing. Could be more direct while retaining essential information.

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

Completeness3/5

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

Mentions the need to later mark_surface_aligned but does not fully explain the lifecycle or checklist. For a creation tool with 6 parameters and no output schema, more detail about next steps and return value would improve completeness.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. Description adds value by emphasizing URL-FIRST, explaining derivation of type and label, and when to override. Adds meaning beyond schema.

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

Purpose5/5

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

Clearly states 'Register a surface of a project' and explains what a surface is. The description distinguishes the tool from siblings like update_surface, delete_surface by focusing on creation and the URL-first approach.

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

Usage Guidelines4/5

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

Provides clear guidance on omitting type and label on creation, only passing them to correct derivation. However, it does not explicitly state when not to use this tool or compare to alternatives; the context is implied but not exhaustive.

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

create_trackerCreate a trackerBInspect

Create a tracker in draft. It measures nothing yet: call start_tracker to launch it against the prepaid credit balance. Validation rules and messages are the same as the app configurator. Omitted, next_survey_at means the first survey runs at start_tracker.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesDisplay name of the tracker.
enginesYesThe AI engines surveyed.
promptsYesThe questions asked to the AI engines at every survey, phrased exactly as a customer would ask them.
analystsNoThe lenses that score every survey. keyword_presence and share_of_voice are deterministic; sentiment and custom_prompt are AI analysts billed per analyzed response.
keywordsNoNames to detect in the answers: your brand and the names you compare against. Flag yours as favorite.
discoveryNoSuggest new keywords spotted in the answers.
frequencyYesHow often a survey runs.
project_idNoThe project the tracker is filed under: the UUID of a project of the account (call list_projects), or "default" for none. Pure organization, editable at any time. Omitted on creation the tracker files under Default; omitted on update the project does not change.
resolutionYesRepetitions of every question per engine and survey: hd=1, full_hd=3, 4k=6, 8k=9. Answers are stochastic; more repetitions sharpen the rates.
custom_promptNoThe instruction of the custom_prompt analyst. Required when that analyst is selected.
next_survey_atNoWhen the next survey runs, ISO 8601, strictly in the future; read as UTC without an offset. Later surveys keep that day and time at the pace of the frequency.
notify_on_surveyNoEmail the account owner and managers each time a survey closes with fresh data, so the results reach them on their own. Off by default.
Behavior3/5

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

Annotations show no readOnly, idempotent, or destructive hints. The description adds that the tracker is in draft and measures nothing, and that first survey runs at start_tracker if next_survey_at omitted. It does not disclose credit consumption or side effects like whether creation can be undone. This is moderate additional context.

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

Conciseness4/5

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

Three sentences, each serving a purpose: creation state, action needed, and a parameter default. No fluff, but could be more structured with bullet points for complex parameters.

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

Completeness2/5

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

Given 12 parameters, 5 required, and no output schema, the description is too brief. It does not mention what is returned (e.g., tracker ID), nor explain the overarching purpose of trackers or the project context. Users would need to infer much from the schema.

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

Parameters3/5

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

Schema covers 100% with parameter descriptions. The description adds one key insight about next_survey_at defaulting to start_tracker time. No other parameter nuances are provided, so value over schema is minimal.

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

Purpose4/5

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

The description clearly states it creates a tracker in draft and distinguishes from start_tracker by noting it measures nothing yet. However, it does not differentiate from update_tracker or pause_tracker, missing some sibling context.

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

Usage Guidelines3/5

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

Provides explicit guidance to call start_tracker after creation and mentions validation rules from the app configurator. But lacks when-not-to-use scenarios or comparisons to other siblings like update_tracker.

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

delete_logbook_entryDelete a logbook entryA
DestructiveIdempotent
Inspect

Take a manual logbook entry out of the logbook, and the annotation it placed on the curves with it. Only do it when the user asked for it: it is their logbook. The entry waits in the trash, so restore_logbook_entry brings it back with its annotation. Tool events stay as they are: they are derived from the canon and surface registries.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYesThe UUID of the logbook entry: call get_logbook to find it (only manual entries carry an id).
Behavior4/5

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

Beyond annotations (destructiveHint=true), the description reveals that the entry goes to trash (restorable), removes associated annotations, and that tool events are preserved. This adds valuable context about side effects 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.

Conciseness3/5

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

The description is four sentences and contains some redundancy ('Only do it when the user asked for it: it is their logbook' could be shortened). It is clear but not as concise as it could be.

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

Completeness4/5

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

For a simple deletion tool with one parameter, the description together with the schema provides adequate context: what happens to the entry and annotations, restore capability, and non-impact on events. No output schema needed.

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

Parameters3/5

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

Schema coverage is 100% with a clear description referencing get_logbook. The description does not add additional parameter semantics beyond what the schema already provides, so baseline score applies.

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

Purpose5/5

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

Description clearly states the action: 'Take a manual logbook entry out of the logbook' – a specific verb and resource. It also distinguishes from sibling tools like restore_logbook_entry, providing clear differentiation.

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

Usage Guidelines3/5

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

The description says 'Only do it when the user asked for it: it is their logbook' but lacks explicit when-not-to-use guidance or comparisons to alternatives like update_logbook_entry. It does mention restore_logbook_entry as a recovery path, which helps, but overall guidance is limited.

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

delete_surfaceTake a surface out of the registryA
DestructiveIdempotent
Inspect

Take a surface out of the registry: the page stops being followed, and the registry stops asking to bring it in phase with the canon. Use it for a page that is gone (account closed, listing removed) or for a line that had no place there. The sheet and the alignment journal are kept, and restore_surface brings the surface back with them, so a line taken out by mistake costs nothing. Taking out an already taken out surface answers the same.

ParametersJSON Schema
NameRequiredDescriptionDefault
surface_idYesThe UUID of the surface: call list_surfaces to find it.
Behavior5/5

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

Beyond annotations (destructive, idempotent), explains what is preserved (sheet, alignment journal) and that restoration is possible, adding non-obvious 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.

Conciseness4/5

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

Description is well-structured and front-loaded with action and outcome. It is concise but contains necessary details; slightly longer than minimal but efficient.

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

Completeness5/5

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

Given single parameter, no output schema, and destructive yet idempotent behavior, the description covers all relevant aspects: action, use cases, side effects, and reversion possibility.

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

Parameters3/5

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

Schema covers the single parameter fully; description adds no extra meaning beyond the schema's description. Baseline 3 applies.

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

Purpose5/5

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

The description clearly states the tool removes a surface from registry, stopping tracking and canon alignment. It specifies use cases (page gone or misplaced) and distinguishes from restore_surface.

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

Usage Guidelines5/5

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

Explicitly states when to use (page gone, line misplaced) and that taking out an already taken out surface is safe. References restore_surface as the alternative.

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

dismiss_corroboration_candidateRefuse a corroboration candidateA
Idempotent
Inspect

Refuse a suggested page: it is never proposed again for this project. Use it when the excerpt matched something else than the brand, or when the page is not worth recording. Nothing is created or deleted. Accepting is the opposite move and has no tool of its own: call create_corroboration with the url of the candidate.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe address of the candidate, exactly as list_corroboration_candidates gives it.
project_idYesUUID of the project: call list_projects to find it.
Behavior5/5

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

Annotations already indicate idempotent=true and destructive=false. The description adds that the page 'is never proposed again for this project', clarifying the permanent effect. It also notes 'Nothing is created or deleted', aligning with annotations and providing additional 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.

Conciseness5/5

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

The description is extremely concise: two sentences with the core action, usage guidance, and alternative immediately provided. No wasted words, and the critical information is front-loaded.

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

Completeness5/5

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

Given the simple two-parameter tool with no output schema, the description covers the purpose, usage context, effect, and relationship to the accept action. It is fully complete for an agent to understand and invoke correctly.

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

Parameters3/5

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

Schema coverage is 100% and both parameters are well described in the input schema (url format, project_id UUID). The description does not add any extra parameter semantics beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it refuses a suggested page and that the page is never proposed again for this project. The verb 'refuse' and resource 'corroboration candidate' are precise, distinguishing it from the sibling 'create_corroboration' which accepts.

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

Usage Guidelines5/5

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

Explicitly says when to use ('when the excerpt matched something else than the brand, or when the page is not worth recording'), when not to use, and provides the alternative ('Accepting is the opposite move and has no tool of its own: call create_corroboration with the url of the candidate').

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

dismiss_keyword_discoveryDismiss discovered suggestionsA
Idempotent
Inspect

Dismiss one discovered suggestion (domain) or a batch (domains): the domains are never proposed again on this tracker, and appear in the dismissed list until restored. All-or-nothing on unknown domains: one that is not currently suggested refuses the whole batch (not_found). Dismissing an already dismissed domain is fine, it does not fail the batch. The answer carries dismissed as the domain for a single call, the list for a batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoOne domain to act on, exactly as listed by list_keyword_discoveries. Send this OR domains, never both.
domainsNoSeveral domains to act on in one call, each exactly as listed by list_keyword_discoveries. Send this OR domain, never both. ALL-OR-NOTHING: one invalid domain refuses the whole batch, so you never have to guess which half took.
tracker_idYesThe UUID of the tracker: call list_trackers to find it.
Behavior4/5

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

Beyond annotations (idempotentHint=true), the description adds that dismissing an already dismissed domain is fine, and explains the all-or-nothing batch failure on unknown domains. It also describes the response format (dismissed domain or list). These details provide 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.

Conciseness4/5

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

The description is a single paragraph that efficiently covers purpose, behavior, batch rules, and response. It could be slightly more structured (e.g., separate sentences for single vs batch), but it is clear and to the point.

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

Completeness4/5

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

For a tool with 3 parameters and no output schema, the description covers the effect, error handling (all-or-nothing), idempotency, and response. It leaves no major gaps for an agent to misunderstand the tool's behavior.

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

Parameters4/5

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

With 100% schema coverage, baseline is 3. The description adds critical context: domains must be listed exactly as in list_keyword_discoveries, and explains the all-or-nothing rule for batches. This goes beyond the schema's basic descriptions.

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

Purpose5/5

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

The description clearly states the tool dismisses one or multiple domains (keyword discoveries) and explains the effect: they are never proposed again on the tracker and appear on the dismissed list until restored. This distinguishes it from siblings like accept_keyword_discovery or restore_keyword_discovery.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives (e.g., accept or restore). It does provide guidance on batch behavior and all-or-nothing semantics, but lacks context on when dismissal is appropriate compared to other actions.

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

dismiss_questDismiss a questA
Idempotent
Inspect

Set a quest aside: the customer decided the move is off. Sets the state and the closing date; calling it again leaves it dismissed, so a retry is safe. The quest stays readable in the closed history of list_quests, and adding it again later starts a new quest.

ParametersJSON Schema
NameRequiredDescriptionDefault
quest_idYesThe UUID of the quest: call list_quests to find it.
Behavior5/5

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

The description discloses key behavioral traits beyond annotations: it sets the state and closing date, retry is safe (idempotent), the quest remains readable in closed history, and adding it again later starts a new quest. This aligns with annotations (idempotentHint=true, destructiveHint=false) and provides complete transparency.

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

Conciseness5/5

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

The description is three sentences long, front-loaded with the core action, and every sentence adds value (purpose, idempotency, post-action behavior). No extraneous information is present.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description fully covers what the tool does, its effects, retry safety, persistence, and re-opening behavior. No additional context is needed.

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

Parameters3/5

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

The input schema covers 100% of parameters (only quest_id) and includes its description ('call list_quests to find it'). The tool description does not add further parameter-specific meaning, so a baseline score of 3 is appropriate as the schema already carries the burden.

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

Purpose5/5

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

The description clearly states the tool's primary purpose: 'Set a quest aside: the customer decided the move is off.' It specifies the action (dismiss) and the context (customer cancels), and distinguishes itself from other quest-related tools like 'complete_quest' by indicating it marks the quest as dismissed rather than completed.

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

Usage Guidelines3/5

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

The description provides usage context ('the customer decided the move is off') and notes that retrying is safe, implying idempotent usage. However, it does not explicitly state when not to use this tool or compare it to alternatives such as 'complete_quest' or 'archive_project', leaving the agent to infer the appropriate scenario.

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

get_creditsGet the credit balanceA
Read-only
Inspect

The prepaid credit balance of the account: available credits, the amount reserved by surveys in progress with the detail of each reservation, when the credits expire and until when the data-access window is open. Read it before starting a tracker, or when a call fails with insufficient_credits or data_access_expired.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

Annotations already declare readOnlyHint=true, and the description adds significant behavioral details about what information is returned (available credits, reservations, expiration, data-access window). No contradiction, and it complements the annotations effectively.

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

Conciseness5/5

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

Two sentences, no waste. The first sentence front-loads what the tool returns, the second provides usage context. Perfectly sized for an agent.

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

Completeness5/5

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

No output schema, so the description must cover return values. It does so thoroughly, listing available credits, reservations, expiration, and data-access window. Combined with usage context, it is complete for a read-only balance check tool.

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

Parameters4/5

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

The input schema has no parameters, so the description does not need to add parameter information. It explains the output content well, which is appropriate for a zero-parameter tool. Baseline 4 is justified.

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

Purpose5/5

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

The description clearly states the tool returns the prepaid credit balance, including specific details like available credits, reservations, expiration, and data-access window. The verb 'get' matches the name, and it is distinct from sibling tools like 'topup_credits'.

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

Usage Guidelines4/5

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

The description provides explicit usage guidance: 'Read it before starting a tracker, or when a call fails with insufficient_credits or data_access_expired.' This tells the agent when to use the tool, though it doesn't mention when not to use it or alternative tools.

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

get_logbookRead the logbook of a projectA
Read-only
Inspect

The logbook of a project, newest first: every dated move, composed from two sources. source=tool events are derived from the suite itself (canon moved to a version, surface marked aligned, corroboration recorded); source=manual entries are actions the customer recorded (only these carry an id, a category, a label and notes). Each move also lands as an annotation on the citation curves of the trackers of the project: read the logbook to tell what was done when the curves moved. On a corroboration item, occurred_at is the PUBLICATION date when known and the recording date otherwise: published_on sits next to it, and it tells which of the two dates the move carries. Set deleted to "only" to read the trash of the logbook instead of it.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoOnly the items of this source: "tool" for suite events, "manual" for recorded entries. Omitted, both.
deletedNoSet to "only" for the entries taken out of the logbook (delete_logbook_entry), most recently taken out first, each with its deleted_at. It carries recorded entries only, so it goes without source and category. Omitted, the logbook is read.
categoryNoOnly the manual entries of this category (tool events carry no category and never match).
project_idYesUUID of the project: call list_projects to find it.
Behavior5/5

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

Annotations declare readOnlyHint=true, and the description adds rich behavioral details: logbook composition, field meanings (occurred_at vs published_on), and behavior of the deleted parameter. 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.

Conciseness4/5

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

The description is information-dense in a single paragraph, which is functional but could be better structured. Every sentence adds value, though the format could be clearer for quick scanning.

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

Completeness4/5

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

Despite no output schema, the description covers return structure (fields like id, category, label, notes, occurred_at, published_on, deleted_at) and composition. It is fairly complete given the tool's complexity, though it could mention pagination or limits.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds meaning beyond schema: explains source values, category filtering, deleted behavior, and the relationship between occurred_at and published_on. This enriches the schema info.

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

Purpose5/5

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

The description clearly states the tool reads the logbook of a project, newest first, combining two sources. It distinguishes from sibling tools like create_logbook_entry, delete_logbook_entry, and restore_logbook_entry by focusing on reading.

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

Usage Guidelines4/5

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

The description explains when to use the tool: to see what was done when curves moved. It also covers special behavior for deleted='only' to read trash. However, it does not explicitly contrast with other read tools like get_source or list_corroborations.

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

get_responsesGet raw responsesA
Read-only
Inspect

The raw answers of ONE AI engine for a tracker, newest surveys first, paginated. Every answer carries its cited sources and keyword mentions, plus uncited_sources (the pages the engine read without citing them) and searched (whether the engine went to the web to write that answer; null when undetermined). Set include_raw to add the full engine payload; heavy, ask for it only when needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFull-text filter on the answer text.
pageNoPage number, 1 by default.
engineYesThe engine whose answers are read.
surveyNoOnly the answers of this survey.
per_pageNoAnswers per page, 25 by default, 100 at most.
questionNoExact text of one tracked question.
tracker_idYesThe UUID of the tracker: call list_trackers to find it.
include_rawNoAdd the full engine payload to every answer.
Behavior5/5

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

Annotations mark it read-only; the description confirms read-only behavior. It adds details about pagination, response structure (cited/uncited sources, searched field), and the heavy nature of include_raw. 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.

Conciseness5/5

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

The description is concise (one sentence), front-loaded with purpose, and includes all key information without redundancy. Every word serves a purpose.

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

Completeness4/5

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

For 8 parameters and no output schema, the description covers the main behavior and special fields. It does not detail pagination mechanics (schema does) or the full payload format, but is adequate for an agent.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. The description adds context beyond schema by explaining the meaning of uncited_sources and searched, and warning about include_raw. It does not explain every parameter individually but provides sufficient value.

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

Purpose5/5

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

The description explicitly states it returns raw answers for one AI engine and a tracker, with pagination and ordering (newest first). It clearly distinguishes from sibling tools like get_results.

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

Usage Guidelines4/5

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

The description advises when to set include_raw (only when needed) and explains the returned fields (cited sources, uncited_sources, searched). However, it does not explicitly state when not to use this tool or mention alternatives among siblings.

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

get_resultsGet the score seriesA
Read-only
Inspect

The score series of a tracker: one row per analyst, keyword, engine, tracker version and survey period, in chronological order. Depending on the analyst, a row carries citation_rate and weighted_score, share_of_voice, or sentiment counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
engineNoOnly the rows of this engine.
analystNoOnly the rows of this analyst. The custom_prompt analyst yields a text note per response, so the score series is built from the three scored lenses listed here.
tracker_idYesThe UUID of the tracker: call list_trackers to find it.
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false. The description adds behavioral context by detailing the output structure (rows and columns) and how data varies by analyst, which goes beyond the annotations. No contradictions.

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

Conciseness5/5

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

The description is two sentences, front-loading the purpose and efficiently summarizing the output structure and column variation. Every sentence adds value, and there is no extraneous information.

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

Completeness4/5

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

Given no output schema, the description explains the return structure adequately (rows by dimensions, columns by analyst). It covers the key aspects needed for a read-only retrieval tool, though it could mention pagination or error conditions. Overall complete for typical use.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all parameters with descriptions. The tool description does not add new meaning beyond the schema, thus baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves the score series of a tracker, specifying the structure (one row per analyst, keyword, engine, tracker version, and survey period) and the varying columns per analyst. It distinguishes from siblings like get_responses (raw responses) and list_trackers (tracker metadata).

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

Usage Guidelines3/5

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

The description implies usage when needing the score series but does not explicitly state when to use this tool versus alternatives like get_responses or list_trackers. No exclusions or prerequisites are mentioned.

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

get_sourceRead one source of the AtlasA
Read-only
Inspect

One entry of the Atlas, read by its id: the domain and its AI Authority on each AI. Call list_sources to find a source id, or to read the same entries filtered and ranked.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_idYesThe UUID of the source: call list_sources to find it.
Behavior4/5

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

Annotations already declare readOnlyHint=true. The description adds behavioral context by specifying the returned data (domain and AI Authority), which goes beyond annotations.

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

Conciseness5/5

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

Two sentences, no fluff, efficiently conveys purpose and usage.

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

Completeness5/5

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

No output schema, but description explains return values. For a simple read-by-id tool with robust annotations, this is complete.

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

Parameters4/5

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

Schema coverage is 100% and the description adds a helpful note on finding the UUID via list_sources, adding meaning beyond the schema's description.

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

Purpose5/5

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

The description clearly states the tool reads one entry of the Atlas by its id, specifying the content (domain and AI Authority). It distinguishes from list_sources by mentioning its specific purpose.

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

Usage Guidelines5/5

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

Explicitly tells when to use this tool vs list_sources: call list_sources to find the id, or to read filtered/ranked entries. Provides clear context.

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

get_support_threadRead a support threadA
Read-only
Inspect

One support thread with its messages, including the answers of the support team. Read it back after contact_support to relay the answer to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idYesThe UUID of the support thread: call list_support_threads to find it.
Behavior4/5

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

Annotations already declare readOnlyHint=true, and description aligns by stating a read operation. The description adds value by specifying that messages include support team answers and the intended usage pattern, which is beyond what annotations provide.

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

Conciseness5/5

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

Two concise sentences with no redundant information. First sentence immediately states the core purpose and returned data, second sentence provides usage context. Every word earns its place.

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

Completeness5/5

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

Given single parameter with full schema, clear annotations, and no output schema needed (return is a thread with messages), the description fully covers what an agent needs to invoke correctly: what it returns, when to use it, and how to find the thread ID.

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

Parameters3/5

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

Schema coverage is 100% with a clear parameter description for thread_id. The tool description does not add new parameter semantics beyond referencing usage context. Baseline 3 is appropriate as schema already documents the parameter fully.

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

Purpose5/5

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

Description explicitly states 'One support thread with its messages, including the answers of the support team', clearly defining verb (get/read) and resource (support thread with messages). It distinguishes from sibling list_support_threads by focusing on a single thread with content.

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

Usage Guidelines5/5

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

Explicitly states 'Read it back after contact_support to relay the answer to the user', providing clear when-to-use context and purpose. Parameter description also references list_support_threads for finding the ID, offering discovery guidance.

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

list_corroboration_candidatesList pages where the engines showed the brandA
Read-only
Inspect

Pages a search engine has SHOWN the brand on, found in the text the engine itself returned next to each address. Nothing is fetched and nothing is stored: the list is recomputed on every read from the raw payloads of the latest surveys, and surveys_scanned says how many were read. Each row carries the excerpt as proof, and matched_by: "website" means the site of the brand appears in it (near proof), "name" means only the name did (weaker, read the page before recording). To accept one, call create_corroboration with its url; to refuse one, dismiss_corroboration_candidate.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesUUID of the project: call list_projects to find it.
Behavior5/5

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

Goes well beyond annotations (readOnlyHint, openWorldHint) by explaining recomputation, raw payloads, surveys_scanned field, and semantics of matched_by field. No contradictions.

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

Conciseness4/5

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

Front-loaded with purpose, then details in logical order. Slightly long but every sentence adds value; no waste.

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

Completeness5/5

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

Complete for a read-only list tool with no output schema: explains row contents (excerpt, matched_by, surveys_scanned) and their meanings. Provides enough context for correct usage.

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

Parameters3/5

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

Only parameter is project_id, already well-described in schema (UUID, list_projects). Tool description adds no extra meaning beyond 'call list_projects to find it'. Schema coverage 100%.

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

Purpose5/5

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

Clearly states it lists pages where search engine showed the brand, with concrete verb 'list' and resource 'corroboration candidates'. Distinguishes from siblings by explaining when to use create_corroboration and dismiss_corroboration_candidate instead.

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

Usage Guidelines4/5

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

Explicitly describes the behavior: nothing fetched/stored, recomputed from raw payloads, and how to accept/refuse candidates. Provides context for when to use this read-only list, though could more explicitly contrast with list_corroborations.

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

list_corroborationsList the corroborations of a projectA
Read-only
Inspect

The corroborations recorded for a project: the third-party pages that talk about the brand, each with its exact address, the source it sits on (domain), the publication date when known, and free notes. Live ones first, then the ones taken down (archived true). This is the EARNED half of the story: what the brand writes itself is a surface (list_surfaces), what someone else writes about it is a corroboration. What comes back is what the customer DECLARED: the registry is theirs to fill, and list_corroboration_candidates proposes pages the engines already showed the brand on.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesUUID of the project: call list_projects to find it.
Behavior4/5

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

Annotations declare readOnlyHint=true, so no mutation. The description adds that results are ordered live first then archived, and that data is customer-declared. This provides useful behavioral context beyond the annotations.

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

Conciseness4/5

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

The description is thorough but somewhat lengthy. It is front-loaded with the core function and includes useful comparisons. Every sentence adds value, though it could be slightly more concise.

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

Completeness5/5

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

Given the simple parameter, full schema coverage, and no output schema, the description explains what the output contains (address, source, publication date, notes, archived status) and the ordering. This is fully complete for an AI agent.

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

Parameters4/5

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

The single parameter project_id has 100% schema description coverage. The description adds that it's a UUID and suggests calling list_projects to find it, which provides helpful guidance beyond the schema.

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

Purpose5/5

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

The description specifies the tool lists corroborations (third-party pages about the brand) for a project, with ordering by live/archived. It clearly distinguishes from siblings list_surfaces (what the brand writes) and list_corroboration_candidates (suggested pages).

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

Usage Guidelines5/5

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

The description provides explicit when-to-use context: it lists declared corroborations, while list_corroboration_candidates proposes pages from engines. It also contrasts with list_surfaces for the brand's own content, giving clear alternatives.

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

list_keyword_discoveriesList discovered keyword suggestionsA
Read-only
Inspect

The keyword suggestions DISCOVERED on a tracker: domains the surveyed engines cite as sources again and again, that no tracked keyword covers. Recomputed on every read, from the recurrences the surveys have accumulated. Also carries dismissed, the domains this tracker has set aside: what was refused stays readable, so you can restore one with restore_keyword_discovery if the user changes their mind. The two lists are disjoint (a dismissed domain is never suggested). Relay the suggestions to the user: the decision to track a name is theirs.

ParametersJSON Schema
NameRequiredDescriptionDefault
tracker_idYesThe UUID of the tracker: call list_trackers to find it.
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false. Description adds that results are 'recomputed on every read' and includes dismissed domains, which is behavioral context beyond 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.

Conciseness4/5

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

Description is information-dense yet not overly long. It front-loads the core purpose and then explains the lists and user guidance. Each sentence adds value, though slightly longer than minimal.

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

Completeness5/5

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

Given one parameter and no output schema, the description fully explains what the tool returns (two lists, disjoint) and how it behaves (recomputed on read). Includes user guidance on decision-making. Complete for the tool's simplicity.

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

Parameters4/5

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

Schema has 100% coverage for the single parameter tracker_id with its own description. The tool description adds context by mentioning 'on a tracker', linking to the parameter's purpose. Baseline 3, extra credit for linking parameter to overall function.

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

Purpose5/5

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

Clearly states the verb 'List' and resource 'discovered keyword suggestions', explaining what 'discovered' means (domains cited by engines not covered by tracked keywords). Distinguishes from siblings like dismiss_keyword_discovery and restore_keyword_discovery by mentioning dismissed and restore functionality.

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

Usage Guidelines4/5

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

Explicitly says when to use: to see discovered suggestions for a tracker. Describes the two lists (discovered and dismissed) and their disjoint nature. Does not explicitly mention when not to use, but the context is clear given the sibling tools.

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

list_projectsList projectsA
Read-only
Inspect

The projects of the account: the folders trackers are filed under (one project per tracker at most; pure organization, no effect on measurement or billing). Each carries its id, name, brand canon with its current version number (canon_version), archived flag and tracker count. The folders still in use come first, then the ones filed away (archive_project). Trackers without a project live under the virtual Default project.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

The description fully discloses behavioral traits: idempotent read-only operation, ordering by usage status, and the existence of a virtual Default project. The annotations already indicate readOnlyHint=true, and the description adds valuable context beyond that 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.

Conciseness5/5

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

The description is three sentences, each serving a purpose: defining the resource, listing output properties, and explaining ordering and default project. No redundancy or fluff.

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

Completeness5/5

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

For a zero-parameter list tool with no output schema, the description is completely sufficient. It explains the purpose, output fields, and ordering, leaving no ambiguity about what the tool returns or how it behaves.

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

Parameters4/5

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

There are no parameters, so the baseline is 4. The description adds significant value by detailing the output fields (id, name, brand canon with version, archived flag, tracker count) and ordering, which compensates for the lack of param documentation.

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

Purpose5/5

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

The description clearly states that the tool lists projects, explaining what a project is (a folder for trackers) and distinguishing it from sibling tools like list_trackers. It explicitly mentions that projects are for pure organization with no effect on measurement or billing, setting clear boundaries.

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

Usage Guidelines4/5

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

The description provides clear context on when to use this tool by defining what projects are and their role. It implies that this is the tool to retrieve project metadata, including the virtual Default project for trackers without a project. However, it lacks explicit guidance on when not to use it or alternatives like list_trackers.

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

list_questsRead the quest fileA
Read-only
Inspect

What there is to do for the GEO work, and where to resume it. Lists the quests of the account: moves the customer (or you, on their behalf) decided and recorded, open by default, newest first; status=done or dismissed reads the closed history. Every project by default; scope to one project with project_id. Alongside the quests, pending carries the files the measurement is holding for review, each acted through its own tool: surfaces whose canon moved since their last alignment (list_surfaces, then mark_surface_aligned once realigned), keyword discoveries waiting on a tracker (list_keyword_discoveries, then accept_keyword_discovery or dismiss_keyword_discovery). Scoped to one project, pending also carries the corroboration candidates of that project, computed per project (list_corroboration_candidates, then create_corroboration or dismiss_corroboration_candidate). An empty file with the measurement running means there is nothing to correct today.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoWhich quests to list: "open" (the file, default), "done" or "dismissed" (the closed history).
project_idNoOnly the file of this project: the UUID of a project of the account (call list_projects). Omitted, the file covers every active project.
Behavior5/5

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

Annotations declare readOnlyHint=true, and the description aligns, describing a read-only listing. It adds behavioral details: defaults to open status, newest first, scoping to one project, and explains the 'pending' field's contents and related actions. No contradictions.

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

Conciseness3/5

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

The description is notably long and dense, packing extensive details about pending items and related tools. While well-structured, it could be more concise; not every sentence is essential for the core listing function.

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

Completeness5/5

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

Given the tool's complexity, no output schema, and the need to explain pending items, the description is complete. It covers default behavior, filtering, and links to sibling tools for follow-up actions.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds meaning: status defaults to 'open', and project_id is optional with scope to one project. It explains the effect of each status value and the default project behavior.

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

Purpose5/5

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

The description specifies the verb 'lists', the resource 'quests of the account', and provides clear scope: moves decided and recorded, open by default, newest first. It distinguishes from sibling tools by mentioning related actions for pending items (list_surfaces, list_keyword_discoveries, etc.).

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

Usage Guidelines4/5

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

The description states when to use the tool: to see what to do for GEO work, pending files, and to resume. It implies when not to use by directing to other tools for specific actions (e.g., list_surfaces for surfaces). However, it does not explicitly contrast with alternatives for listing quests from other perspectives.

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

list_sourcesSearch the Atlas of sourcesB
Read-only
Inspect

The Atlas: the sources the AIs cite when they answer YOUR trackers. Each entry is a domain with its AI Authority on each AI, a 0 to 100 scale over the last 30 days where 100 is the source that AI cites the most. An engine with no value has not cited the domain lately, which is not a zero. Each AI has its own leader, so its own scale: each column ranks the sources on its own AI, the rankings being almost disjoint. The map carries the sources surfaced by the surveys of this account, so it grows as the account measures more; filter it to one brand with project_id. The scale, on the other hand, is computed across every measurement Epovest runs, which is what makes it stable. Use it to see where an answer comes from on a subject, and which places are worth existing on. The unit is the registrable domain, so a subdomain is folded into it and a hosting platform counts as one source, not one per author.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, from 1.
sortNoOrder of the page: "aa_chatgpt", "aa_claude", "aa_gemini" or "aa_perplexity" for the ranking of one AI, which also keeps only the sources that AI cites; "detections" ranks across all AIs at once, "engines" by number of distinct engines, "freshness" by most recent detection, "domain" alphabetically. Defaults to "detections".
domainNoKeep only the domains containing this text, e.g. "wikipedia" or ".fr".
engineNoKeep only the sources this engine has cited at least once.
per_pageNoEntries per page, 25 by default, 100 at most.
project_idNoOnly the sources surfaced by the trackers of this project: the UUID of a project of the account (call list_projects), or "default" for the trackers without a project. Use it to read the map of one brand when the account holds several. Omitted, the map covers every tracker of the account, which is what shows a source weighing on two of its markets at once. The AI Authority scale does not move with it: it stays computed across the whole map, so the figures of two projects compare.
Behavior4/5

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

Annotations provide readOnlyHint, but description adds valuable behavioral context: scale per AI, absence not zero, registrable domain units, and data source. 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.

Conciseness2/5

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

The description is verbose and somewhat convoluted. It front-loads conceptual explanation but could be more direct. Some sentences are unnecessary for tool selection (e.g., 'each column ranks... almost disjoint') and reduce clarity.

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

Completeness3/5

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

No output schema, so description must explain returns. It describes the data model (domains with scores) but does not specify response structure or pagination details. Schema implies pagination, but description lacks explicit mention of output format.

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

Parameters3/5

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

Schema coverage is 100%, so baseline 3. Description adds nuance for 'sort' parameter (explaining each enum), but other parameters rely on schema descriptions which are clear. Some added value but not extensive.

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

Purpose4/5

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

The description clearly states the tool lists sources from the Atlas, and explains they are domains cited by AIs with AI Authority scores. It differentiates from 'get_source' by implication (list vs single), but does not explicitly contrast with siblings.

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

Usage Guidelines3/5

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

The description implies usage for seeing where answers come from, but does not explicitly state when to avoid or provide alternatives. The context of per-account surveys is mentioned, but no exclusion criteria.

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

list_support_threadsList support threadsA
Read-only
Inspect

The support threads of the account, most recent first: what was asked, and whether the support team has answered. The threads are shared by the members of the account, whatever wrote them.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already indicate readOnlyHint=true. The description adds ordering (most recent first) and details on content (what was asked, answer status). This goes beyond the annotations to explain the return behavior.

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

Conciseness5/5

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

One sentence efficiently conveys purpose, ordering, and content. No redundant or missing information.

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

Completeness4/5

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

The description explains the key output fields (content and answer status) and ordering. Without an output schema, this provides sufficient context for a simple list tool. It could mention thread identifiers or date, but is adequate.

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

Parameters4/5

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

With zero parameters and 100% schema coverage, the description does not need to explain parameters. It appropriately describes the output structure, which is the main semantic value.

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

Purpose5/5

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

The description clearly states the tool lists support threads, ordered most recent first, and includes what was asked and whether answered. This specific verb+resource combination distinguishes it from siblings like get_support_thread.

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

Usage Guidelines3/5

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

The description provides context that threads are shared by account members, but does not explicitly state when to use this tool versus alternatives like get_support_thread or other list tools. Usage is implied but not guided with exclusions.

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

list_surfacesList the surfaces of a projectA
Read-only
Inspect

The surface registry of a project: the official pages of the brand, everywhere it speaks in its own name (website, GitHub, LinkedIn, X, YouTube, Wikidata, directories, app stores...). Each surface carries its type, url, label, languages, notes, a DERIVED status against the versioned canon (never_aligned, aligned while the marked version still carries the current WORDING, or needs_update once any of the canon wording moved: not just the four texts, but the perks, the website, the address, the phone, the whatsapp and the email too, since the pages carry those as well; a revision that touches none of them, such as declaring the canonical language, changes nothing here) and its checklist: the template of the type with the items ticked per language, a guide that never conditions the marking. Start here to find a surface id. Set deleted to "only" to read the trash of the registry instead of it.

ParametersJSON Schema
NameRequiredDescriptionDefault
deletedNoSet to "only" for the surfaces taken out of the registry (delete_surface), most recently taken out first, each with its deleted_at. Omitted, the registry is listed.
project_idYesUUID of the project: call list_projects to find it.
Behavior4/5

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

Annotations already provide readOnlyHint=true. The description adds significant domain-specific behavioral context: the derivation of surface status (never_aligned, aligned, needs_update) based on canon wording changes, and the presence of a checklist. This goes beyond the schema and annotations, aiding the agent in understanding the data model.

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

Conciseness2/5

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

The description is overly verbose and dense with domain-specific jargon (e.g., 'DERIVED status against the versioned canon', 'never conditions the marking'). It could be condensed to a few clear sentences. The purpose is front-loaded but the detail on status and checklist is excessive for a list tool.

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

Completeness4/5

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

Despite no output schema, the description lists the returned fields (type, url, label, languages, notes, status, checklist) and explains the deleted parameter behavior. It provides sufficient context for the agent to understand what to expect. However, it could be more structured and mention that the result is a list.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents both parameters. The description adds a minor clarification for 'deleted' ('read the trash'), but this is already covered by the schema description. No additional parameter semantics are introduced.

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

Purpose5/5

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

The title 'List the surfaces of a project' clearly states the action and resource. The description reinforces this with 'Start here to find a surface id' and explains the concept of surfaces. It distinguishes from sibling tools like create_surface, delete_surface, etc., by being the listing operation.

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

Usage Guidelines4/5

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

The description explicitly says 'Start here to find a surface id,' indicating this tool is the entry point before modifying surfaces. It also mentions the 'deleted' parameter variant for reading trash. However, it does not explicitly state when not to use it or when alternatives are better, though the context implies its role.

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

list_trackersList trackersA
Read-only
Inspect

List the trackers of the account, current versions: configuration, status, keywords, analysts, project and the recalculated cost per survey. Start here to find a tracker id. Filter by project with project_id. The ones still followed come first, then the ones filed away (archive_tracker), each with archived true and its archived_at.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idNoOnly the trackers of this project: the UUID of a project of the account (call list_projects), or "default" for the trackers without a project. Omitted, every tracker is listed.
Behavior4/5

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

Beyond the readOnlyHint annotation, the description adds value by revealing the ordering (active first, then archived) and the presence of fields like archived_at and archived true. This helps the agent understand expected output structure.

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

Conciseness5/5

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

Two sentences, no unnecessary words, front-loaded with purpose and key details. Every sentence earns its place.

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

Completeness4/5

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

For a simple list tool with one optional parameter and no output schema, the description adequately covers purpose, filtering, and ordering. It could mention that it's read-only (though annotation covers that) or note related tools, but it is sufficiently complete.

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

Parameters4/5

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

The description explains the project_id parameter's effect (filter by project) and implies behavior when omitted (list all). Since schema coverage is 100%, this adds useful context beyond the schema.

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

Purpose5/5

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

The description clearly states the verb (list) and resource (trackers), and specifies what information is included (configuration, status, keywords, analysts, project, cost per survey). It distinguishes itself from sibling tools like archive_tracker or pause_tracker by positioning it as the starting point for finding tracker IDs.

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

Usage Guidelines4/5

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

The description provides guidance on when to use ('Start here to find a tracker id') and how to filter by project_id. It doesn't explicitly state when not to use or list alternatives, but the context is sufficient for a typical listing scenario.

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

mark_surface_alignedMark a surface aligned with the canonA
Idempotent
Inspect

Record that a surface now reuses the CURRENT version of the project canon: the version and the date are frozen in the alignment journal (alignment_created true). Only mark after the page has actually been updated: it is a statement of fact, confirm with the user. Already aligned records nothing; a project without a canon answers no_canon (set the canon first).

ParametersJSON Schema
NameRequiredDescriptionDefault
surface_idYesThe UUID of the surface: call list_surfaces to find it.
Behavior5/5

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

Description adds behavioral details beyond annotations: it freezes version and date in alignment journal, sets alignment_created true, and specifies conditions for no-op and error. No contradiction with annotations (idempotentHint true is consistent).

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

Conciseness5/5

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

Two sentences, no fluff. Front-loaded with core purpose then important usage conditions. Every sentence adds value.

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

Completeness5/5

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

Given single parameter, no output schema, and rich annotations, the description fully covers behavior, prerequisites, and edge cases. No gaps.

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

Parameters3/5

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

Only one parameter (surface_id) with 100% schema coverage including format and description. The description does not add extra semantics beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the tool records that a surface reuses the current project canon, specifying the verb 'Mark' and the resource 'surface aligned'. It distinguishes itself from siblings like 'update_project_canon' and 'create_surface' by focusing on a specific alignment journal action.

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

Usage Guidelines5/5

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

Explicitly instructs to only mark after actual page update, to confirm with user, and explains edge cases: already aligned records nothing, no canon returns no_canon. This provides clear when-to-use and 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.

pause_trackerPause a trackerA
Idempotent
Inspect

Pause the measurement of an active tracker. The score series is kept; start_tracker resumes it.

ParametersJSON Schema
NameRequiredDescriptionDefault
tracker_idYesThe UUID of the tracker: call list_trackers to find it.
Behavior4/5

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

The description reveals that the score series is kept, which adds behavioral context beyond the annotations. Annotations indicate idempotentHint=true and no destruction, which aligns with the description. No contradictions.

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

Conciseness5/5

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

The description is extremely concise at two sentences (15 words) and immediately states the core action. Every sentence contributes meaningful information without redundancy.

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

Completeness4/5

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

For a simple tool with one parameter and no output schema, the description explains the core behavior and its relationship to start_tracker. It does not specify behavior for already-paused or inactive trackers, but idempotency suggests safety.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameter tracker_id is fully documented in the schema. The description adds no additional parameter-level information beyond what the schema provides, placing it at baseline.

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

Purpose5/5

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

The description clearly states the action (pause measurement) and the resource (active tracker). It distinguishes from start_tracker by noting that the score series is preserved and can be resumed. This effectively differentiates it from sibling tools like archive_tracker.

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

Usage Guidelines4/5

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

The description implies usage for temporarily pausing an active tracker and references start_tracker as the resume counterpart. However, it does not explicitly mention when not to use it or alternative tools for permanent stops, such as archive_tracker.

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

restore_keyword_discoveryRestore dismissed suggestionsA
Idempotent
Inspect

Restore one dismissed domain (domain) or a batch (domains): it leaves the tracker dismissed list and becomes eligible for discovery again, suggested anew while the engines keep citing it (accepting it stays a distinct move). The counterpart of dismiss, for when the user changes their mind. Idempotent and never refused: restoring a domain that was not dismissed simply leaves it eligible. The answer carries restored as the domain for a single call, the list for a batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoOne domain to act on, exactly as listed by list_keyword_discoveries. Send this OR domains, never both.
domainsNoSeveral domains to act on in one call, each exactly as listed by list_keyword_discoveries. Send this OR domain, never both. ALL-OR-NOTHING: one invalid domain refuses the whole batch, so you never have to guess which half took.
tracker_idYesThe UUID of the tracker: call list_trackers to find it.
Behavior4/5

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

Beyond the idempotentHint annotation, the description adds that restoring a non-dismissed domain simply leaves it eligible and that the tool is never refused. It explains the effect on the dismissed list, adding meaningful 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.

Conciseness5/5

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

The description is concise with no redundant phrases. It front-loads the core action, then efficiently explains effects, idempotency, and batch behavior in a few sentences.

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

Completeness5/5

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

Given the simple parameters and no output schema, the description covers all necessary aspects: operation, eligibility, idempotency, batch partial failure, and return format. It is fully sufficient for correct agent execution.

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

Parameters4/5

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

Schema coverage is 100% with parameter descriptions, but the description adds crucial usage guidance: send domain OR domains, never both, and the ALL-OR-NOTHING rule for batches. This provides practical semantics beyond the schema.

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

Purpose5/5

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

The description clearly states the tool restores dismissed domains, making them eligible for discovery again. It distinguishes itself as the counterpart of dismiss and contrasts with accept, providing specific verb and resource with sibling differentiation.

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

Usage Guidelines4/5

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

The description explicitly says it is for when the user changes their mind after dismissing, giving clear use case. It lacks explicit when-not-to-use or alternative comparisons beyond dismiss, but the context is sufficient.

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

restore_logbook_entryBring a logbook entry backA
Idempotent
Inspect

Bring an entry back to the logbook, with the annotation it placed on the curves. Call get_logbook with deleted set to "only" to find the entries to bring back. Restoring an entry already in the logbook answers the same.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYesThe UUID of the logbook entry: call get_logbook to find it (only manual entries carry an id).
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=false. Description adds that restoration includes the annotation placed on curves, and confirms idempotency in words. No contradictions. Adds value beyond annotations by describing the side effect on curves.

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

Conciseness5/5

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

Two sentences, each essential. No fluff or repetition. Front-loaded with the primary action, then deployment guidance.

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

Completeness5/5

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

For a simple one-parameter tool with no output schema and strong annotations, the description fully covers how to find the entry, what will be restored, and the idempotent behavior. No gaps remain.

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

Parameters4/5

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

With 100% schema description coverage, baseline is 3. The description adds useful context: it specifies the parameter format (UUID) and instructs to call get_logbook to find the entry, including a caveat that only manual entries carry an id. This goes beyond the schema by providing discovery method.

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

Purpose5/5

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

The description clearly states the action ('Bring an entry back to the logbook') and the resource ('logbook entry') with specific context about restoring annotations. It distinguishes from sibling tools like delete_logbook_entry and create_logbook_entry by implying a restoration operation.

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

Usage Guidelines4/5

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

Provides explicit guidance to use get_logbook with 'deleted' set to 'only' to find deletable entries. Also notes idempotency ('Restoring an entry already in the logbook answers the same'). Does not explicitly mention when not to use, but the context is clear.

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

restore_surfaceBring a surface back to the registryA
Idempotent
Inspect

Bring a surface back to the registry, with its sheet and its alignment journal as they were. Call list_surfaces with deleted set to "only" to find the surfaces to bring back. Restoring a surface already in the registry answers the same.

ParametersJSON Schema
NameRequiredDescriptionDefault
surface_idYesThe UUID of the surface: call list_surfaces to find it.
Behavior4/5

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

Annotations indicate idempotentHint=true, destructiveHint=false. The description confirms idempotency and adds specifics: the restored surface includes its sheet and alignment journal 'as they were'. It does not disclose permissions or side effects, but with good annotation coverage, this is acceptable.

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

Conciseness5/5

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

Two sentences: the first clearly states the core action, the second provides a practical prerequisite and idempotency note. Every sentence is essential and front-loaded, with no redundant wording.

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

Completeness5/5

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

Given the simple single-parameter tool and no output schema, the description covers the purpose, the prerequisite step, the scope of restoration, and the idempotent outcome. It is fully complete for an agent to select and use the tool correctly.

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

Parameters3/5

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

With 100% schema description coverage, the schema already explains the parameter 'surface_id' and references list_surfaces. The tool description does not add new semantic information beyond repeating that instruction, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'bring back' and the resource 'surface', specifying that it restores the surface with its sheet and alignment journal. It distinguishes from sibling restore tools by focusing on surfaces and provides a concrete pre-step (list_surfaces with deleted set to 'only').

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

Usage Guidelines5/5

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

The description explicitly instructs when to use the tool (to restore a deleted surface) and how to identify the target (using list_surfaces with deleted='only'). It also notes the idempotent behavior ('answers the same') when restoring a surface already in the registry, giving clear expectations.

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

start_trackerStart a trackerA
Idempotent
Inspect

Start or restart the measurement of a tracker against the prepaid credit balance. Refused with insufficient_credits when the balance does not cover one survey. Starting an already active tracker changes nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
tracker_idYesThe UUID of the tracker: call list_trackers to find it.
Behavior4/5

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

Discloses behavior beyond annotations: potential failure due to insufficient credits and no-op for active trackers. No contradiction with annotations (idempotentHint=true matches description).

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

Conciseness5/5

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

Two sentences, no wasted words, front-loads the core purpose, and covers key behaviors efficiently.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description fully covers purpose, preconditions, side effects, and idempotency.

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

Parameters3/5

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

Schema coverage is 100% and already describes the parameter adequately. The description adds no extra parameter details beyond the schema.

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

Purpose5/5

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

The description specifies a clear action ('Start or restart the measurement') on a distinct resource ('tracker') and ties it to a credit balance, differentiating it from siblings like pause_tracker or list_trackers.

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

Usage Guidelines4/5

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

Mentions a precondition (insufficient_credits error) and idempotent behavior ('starting an already active tracker changes nothing'), providing clear context for when to call and what to expect, though it doesn't explicitly compare to alternatives.

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

tick_surface_checklistTick the checklist of a surfaceA
Idempotent
Inspect

Record what a surface actually carries: tick the checklist items you have VERIFIED on the page itself, per language, as many as you want in one call. The items are the template of the surface type, listed by list_surfaces as checklist.items (stable keys such as title_tag or llms_txt); most of them are yours to check (a title tag, JSON-LD, an llms.txt all read with a simple fetch). Only the items you send change, the rest of the checklist keeps its state; an unknown item or language refuses the whole batch and lists what exists. The checklist GUIDES the work: ticking every box marks nothing, mark_surface_aligned stays the distinct move.

ParametersJSON Schema
NameRequiredDescriptionDefault
ticksYesThe items to tick or untick. Nothing else on the checklist moves.
surface_idYesThe UUID of the surface: call list_surfaces to find it.
Behavior5/5

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

Beyond annotations (idempotent, non-destructive), the description discloses batch behavior, error handling (unknown items/languages reject the whole batch and list valid options), partial updates, and the fact that ticking all items has no effect on alignment.

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

Conciseness5/5

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

The description is front-loaded with the core action and is concise, with each sentence contributing necessary information without redundancy. It efficiently covers purpose, usage, behavioral details, and differentiation.

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

Completeness5/5

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

Given no output schema, the description covers all essential aspects: parameters, usage scenario, error behavior, and relationship to sibling tools. It is sufficient for an agent to use the tool correctly without additional context.

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

Parameters4/5

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

While the schema already covers 100% of parameters, the description adds value by providing examples of item keys (title_tag, llms_txt) and clarifying that the 'ticks' array is a batch operation. This enhances understanding beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'tick' and resource 'checklist items of a surface', and distinguishes itself from the sibling 'mark_surface_aligned' by noting that ticking all items does not mark the surface aligned.

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

Usage Guidelines5/5

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

The description provides explicit guidance: use this to record verified items, but to mark the surface aligned use 'mark_surface_aligned' instead. It also implies prerequisites like calling list_surfaces to get item keys.

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

topup_creditsBuy creditsAInspect

Prepare a top-up of the prepaid credit balance and return the hosted payment link. Nothing is charged by this call: hand payment_url to the user, the payment happens there, and they approve the amount on that page. When the user names an amount, that amount wins: pass it as amount, exactly the number they said. Amounts are always in the wallet currency of the account, which get_credits gives: if they name another currency, tell them, never convert one currency into another yourself. When they leave it to you, suggest one that covers the coming surveys and pass it as amount_minor: list_trackers gives cost_per_survey_minor and monthly_estimate_minor, in minor units, so no conversion of yours can go wrong. Send one of the two, never both. The minimum top-up is 10.00 (1000 minor units). Once paid, the balance updates on its own, paused trackers resume and the data-access window reopens.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoCredits to buy, in MAJOR units of the wallet currency: what a person says. 50 means 50.00, and 12.5 means 12.50. Use this one when the user names the amount, exactly as they said it. Minimum 10.00.
amount_minorNoCredits to buy, in MINOR units of the wallet currency: 5000 means 50.00. Use this one when you compute the amount from the cost grid, which is in minor units too. Minimum 1000.
Behavior5/5

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

Despite no annotations indicating readOnly, the description clarifies that nothing is charged by the call, the payment happens externally, and balances update automatically after payment. This adds critical behavioral context beyond annotations.

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

Conciseness4/5

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

The description is a single cohesive paragraph of ~150 words, front-loaded with purpose and detailed guidance. While information-dense and clear, a slightly more structured format (e.g., separating parameter guidance) could improve readability, but it remains concise.

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

Completeness5/5

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

Given the tool has no output schema, the description fully covers what is returned (hosted payment link) and side effects (balance update, resumed trackers, data-access window reopening). All necessary contextual information is provided for an agent to use the tool correctly.

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

Parameters5/5

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

With 100% schema coverage, the description adds significant meaning: explains the major/minor unit distinction, gives explicit examples (50 means 50.00), and provides decision logic for which parameter to use. This goes well beyond the schema descriptions.

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

Purpose5/5

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

Description uses strong verb+resource: 'Prepare a top-up of the prepaid credit balance and return the hosted payment link.' This is unique among siblings, as no other tool handles credit top-up or payment links.

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

Usage Guidelines5/5

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

Explicitly states when to use 'amount' (user-named amount) vs 'amount_minor' (computed from cost grid), references get_credits for currency and list_trackers for costs, and warns against currency conversion. Also clarifies the call is not a charge.

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

update_corroborationUpdate a corroborationA
Idempotent
Inspect

Update the sheet of a corroboration: only the fields you send change (an empty label goes back to the derived one, an empty notes or published_on clears it). Correcting the url ALWAYS recomputes the source: the two never drift apart. To say a page is gone, use archive_corroboration instead: editing never takes anything down.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoAbsolute http(s) address of the EXACT page where the third party talks about the brand, never the home page of the site.
labelNoDisplay name of the page. OMIT IT: it is derived from the address (domain and path). Send an empty string to go back to the derived one.
notesNoFree notes: the passage that mentions the brand, the contact, how the page came about.
published_onNoThe day the page was PUBLISHED, as YYYY-MM-DD. Distinct from the recording day, and the one that means something against the citation curves. Omit it when unknown: it is never guessed.
corroboration_idYesThe UUID of the corroboration: call list_corroborations to find it.
Behavior4/5

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

Adds meaningful behavioral context beyond annotations: partial updates, empty field behaviors (label reverts, notes/published_on clear), and that URL change always recomputes source. No contradiction with annotations.

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

Conciseness5/5

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

Four sentences, each packed with essential information. Front-loads key behavior, no unnecessary words. Highly efficient.

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

Completeness5/5

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

Given no output schema and good annotations, the description fully covers update behavior, edge cases (empty strings), and alternative tool usage. No gaps identified.

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

Parameters4/5

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

Schema has 100% coverage, but description adds crucial guidance: omit label, empty string resets; notes/published_on cleared with empty string; URL recomputes source. This adds significant value beyond schema descriptions.

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

Purpose5/5

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

The description clearly states the verb 'Update' and the resource 'corroboration', and distinguishes from sibling 'archive_corroboration' by noting that editing never takes anything down.

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

Usage Guidelines4/5

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

Explicitly mentions when to use 'archive_corroboration' instead (for marking a page as gone). Provides clear context on partial updates and URL recomputation, but does not cover all potential alternatives among siblings.

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

update_logbook_entryEdit a logbook entryA
Idempotent
Inspect

Edit a manual logbook entry: only the fields you send change (empty notes clear them). It is the customer's own logbook: a typo or a wrong date is simply corrected. Tool events cannot be edited: they are derived from the canon and surface registries.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoShort wording of the action, e.g. "Site translated into Spanish": it is what the annotation shows next to the citation curves.
notesNoFree notes: context, links, details of the action.
categoryNoWhat kind of action this is; it files the entry for filtering. "other" covers anything else.
entry_idYesThe UUID of the logbook entry: call get_logbook to find it (only manual entries carry an id).
occurred_atNoWhen the action HAPPENED, ISO 8601 date or datetime, read as UTC without an offset. Distinct from the recording time: when the user says "yesterday" or "last week", compute and pass that date. Omitted on creation, now is used.
Behavior5/5

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

Beyond annotations (idempotentHint, destructiveHint), the description adds critical behavior: partial update 'only fields you send change', and that empty notes clear them. It also reassures that only harmless corrections occur, and clarifies constraint on tool events.

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

Conciseness5/5

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

Three sentences, each essential: core action with behavioral nuance, safety reassurance, and exclusion of tool events. No wasted words, well front-loaded.

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

Completeness4/5

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

Given no output schema, the description adequately covers update behavior, constraints, and safety. Could mention idempotency (already in annotations) or return value, but mostly complete.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. The description adds meaningful context by explaining the partial update nature and the specific clearing behavior for notes, which goes beyond parameter descriptions.

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

Purpose5/5

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

The description clearly identifies the tool as editing a manual logbook entry, contrasting with tool events which cannot be edited. This distinguishes it from siblings like create_logbook_entry and delete_logbook_entry.

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

Usage Guidelines4/5

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

The description explicitly states that tool events cannot be edited, providing a clear exclusion. However, it does not explicitly tell the agent when to prefer this over creating a new entry or deleting.

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

update_project_canonUpdate the canon of a projectA
Idempotent
Inspect

Revise the brand canon of a project. Field by field: a provided field replaces the current wording (an empty string clears it), an omitted field is kept as is. Any actual change records the NEXT canon version (numbered, immutable; version_created true in the answer); sending identical wording records nothing. The canon lives in ONE language, its canonical language (canon_language): it is never translated, changing the language is a revision like any other. The canon is meant to be STABLE: revising it is a rare and deliberate move, and every surface that reuses the wording will need to be brought back in phase with the new version. Confirm with the user before revising.

ParametersJSON Schema
NameRequiredDescriptionDefault
canon_longNoThe two-sentence version, when the surface allows it.
project_idYesUUID of the project: call list_projects to find it.
canon_emailNoPublic email address of the brand.
canon_perksNoThe distinctive claims of the brand, in the order they should be hammered, written in the canonical language. Facts that hold and can be corroborated ("works without a subscription"), never superlatives ("the best"), which no page reuses. A sent list REPLACES the previous one.
canon_phoneNoPhone number, international prefix included.
canon_shortNoTHE one-sentence description third-party pages reuse as is.
canon_addressNoPostal address, as written on a listing. Language-neutral: the same string everywhere, like the other facts.
canon_websiteNoThe canonical address of the brand website, the one that identifies the entity. A bare domain is enough ("example.com" completes to "https://example.com"). ONE URL only: the other addresses of the brand (documentation, application, blog, social accounts) are SURFACES, never a second canonical site.
canon_categoryNoCategory label for listings and structured data.
canon_languageNoShort code of the ONE language the canon is written in, like "en" or "pt-br".
canon_whatsappNoWhatsApp number, international prefix included.
canon_one_linerNoOne-sentence signature of the brand.
canon_legal_nameNoRegistered name of the company that operates the brand, with its jurisdiction when the user states it ("Acme Holdings, LLC, Delaware, United States"). Language-neutral, like the other facts: the AIs cross-read it to anchor the entity, and it is what a directory listing and an Organization.legalName block copy.
Behavior5/5

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

The description details idempotency (identical wording records nothing), versioning (next canon version recorded on change), and the behavior of changing language (a normal revision). This goes well beyond the idempotentHint annotation.

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

Conciseness4/5

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

The description is a single, dense paragraph that is front-loaded with purpose. It is slightly long but every sentence provides unique value; no redundancy.

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

Completeness5/5

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

For a tool with 13 parameters and no output schema, the description covers versioning, idempotency, immutability of versions, and the need for user confirmation. It is complete and provides sufficient context for correct usage.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds essential semantics: omitted fields are kept as is, empty strings clear fields, and language change is a revision. This adds value beyond the schema.

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

Purpose5/5

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

The description specifies a clear verb and resource ('Revise the brand canon of a project'), and the tool's purpose is distinct from siblings like update_corroboration or update_surface.

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

Usage Guidelines4/5

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

The description emphasizes that the canon is meant to be STABLE and that revising is a rare, deliberate move requiring user confirmation. It implies when to use (revision) vs. not (creation), though no alternative tools are named explicitly.

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

update_questEdit a questA
Idempotent
Inspect

Edit a quest: only the fields you send change (empty notes clear them). It is the customer's own file: a typo or a sharpened wording is simply corrected. The status changes through its own moves, complete_quest and dismiss_quest.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoFree notes: context, links, what done looks like.
titleNoShort wording of the move, e.g. "Get our MCP server listed on the AI tool directories": it is what the file shows.
quest_idYesThe UUID of the quest: call list_quests to find it.
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=false. The description adds valuable detail about partial update semantics and that empty notes clear them, but does not mention response behavior.

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

Conciseness5/5

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

Three efficient sentences with no waste. The main purpose is front-loaded, and each sentence adds distinct value (partial update, safety, status alternatives).

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

Completeness4/5

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

Covers key behavioral aspects for a simple update tool with 3 params. Missing detail about what is returned (e.g., the updated quest), but given low complexity, it is largely sufficient.

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

Parameters4/5

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

Schema coverage is 100% with clear descriptions. The description adds extra semantics about partial updates and empty notes behavior, which is not in the schema and aids correct invocation.

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

Purpose5/5

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

The description clearly states 'Edit a quest' with specifics on partial updates, and distinguishes it from sibling tools like complete_quest and dismiss_quest by noting that status changes are handled separately.

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

Usage Guidelines5/5

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

Explicitly states when not to use this tool: 'The status changes through its own moves, complete_quest and dismiss_quest,' guiding the agent to use those tools for status updates.

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

update_surfaceUpdate a surfaceA
Idempotent
Inspect

Update the registry sheet of a surface: only the fields you send change (a sent languages list replaces the previous one; an empty label or notes clears it). The alignment NEVER moves here: telling that the page reuses the canon is mark_surface_aligned, a distinct move.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoAbsolute http(s) address of the surface.
typeNoWhat kind of surface this is; it picks the checklist to come. OMIT IT on creation: the type is derived from the url by the catalogue of places (github.com is GitHub, an unknown host is the brand website). Send it only to correct a derivation. "other" covers anything else and carries the generic checklist.
labelNoDisplay name of the surface. OMIT IT on creation: it is derived from the url (the handle on a known place, the host and path on a website).
notesNoFree registry notes: who owns the account, access, context.
languagesNoLanguages of the surface, as short codes like "en" or "pt-br". A sent list replaces the previous one.
surface_idYesThe UUID of the surface: call list_surfaces to find it.
Behavior4/5

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

Annotations indicate idempotentHint=true and destructiveHint=false. Description adds details on partial update, list replacement, and clear semantics for empty values, enhancing transparency beyond annotations.

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

Conciseness5/5

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

Two sentences packed with essential information, front-loaded with the core action, then specifics. No redundancy.

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

Completeness4/5

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

With 6 parameters and no output schema, the description covers update behavior, field semantics, and distinguishes from siblings. Lacks mention of response or error cases, but sufficient for basic usage.

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

Parameters4/5

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

Schema coverage is 100% with parameter descriptions. Description adds context that fields are optional and only sent ones change, and explains usage for type and label in updates vs. creation.

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

Purpose5/5

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

The description clearly states the tool updates the registry sheet of a surface, specifying partial update behavior. It distinguishes from sibling mark_surface_aligned by explicitly stating alignment is done elsewhere.

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

Usage Guidelines5/5

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

Provides explicit guidance: only sent fields change, alignment is moved by another tool, and clarifies behavior for lists and empty strings. Contrasts with create_surface (omitting fields) and mark_surface_aligned.

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

update_trackerUpdate a trackerAInspect

Update the configuration of a tracker: only the fields you send change. Keywords, analysts and the title apply in place. Changing the prompts, engines, frequency or resolution of a tracker that has measured creates a new version: the score series continues across versions, and the response carries the new tracker id (version_created says when). A sent list replaces the previous one entirely.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoDisplay name of the tracker.
enginesNoThe AI engines surveyed.
promptsNoThe questions asked to the AI engines at every survey, phrased exactly as a customer would ask them.
analystsNoThe lenses that score every survey. keyword_presence and share_of_voice are deterministic; sentiment and custom_prompt are AI analysts billed per analyzed response.
keywordsNoNames to detect in the answers: your brand and the names you compare against. Flag yours as favorite.
discoveryNoSuggest new keywords spotted in the answers.
frequencyNoHow often a survey runs.
project_idNoThe project the tracker is filed under: the UUID of a project of the account (call list_projects), or "default" for none. Pure organization, editable at any time. Omitted on creation the tracker files under Default; omitted on update the project does not change.
resolutionNoRepetitions of every question per engine and survey: hd=1, full_hd=3, 4k=6, 8k=9. Answers are stochastic; more repetitions sharpen the rates.
tracker_idYesThe UUID of the tracker: call list_trackers to find it.
custom_promptNoThe instruction of the custom_prompt analyst. Required when that analyst is selected.
next_survey_atNoWhen the next survey runs, ISO 8601, strictly in the future; read as UTC without an offset. Later surveys keep that day and time at the pace of the frequency.
notify_on_surveyNoEmail the account owner and managers each time a survey closes with fresh data, so the results reach them on their own. Off by default.
Behavior5/5

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

Annotations are minimal (all hints false), so the description carries full burden. It discloses key behaviors: partial updates, version creation for certain fields, score series continuity across versions, and list replacement. 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.

Conciseness5/5

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

The description is four sentences, each serving a specific purpose. The first sentence front-loads the core partial update semantics. Subsequent sentences add critical behavioral rules without redundancy. No wasted words.

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

Completeness5/5

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

Given 13 parameters, no output schema, and minimal annotations, the description covers all essential behaviors: partial updates, version creation, series continuity, list replacement, and response content (new tracker id, version_created). It provides sufficient context for an AI agent to invoke the tool correctly.

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

Parameters5/5

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

Schema description coverage is 100%, but the tool description adds significant meaning: 'only the fields you send change', 'keywords, analysts and the title apply in place', 'changing prompts/engines/frequency/resolution... creates a new version', and 'a sent list replaces the previous one entirely'. These details are not present in schema descriptions.

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

Purpose5/5

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

The description clearly states the verb 'update' and the resource 'configuration of a tracker'. It distinguishes from sibling tools by focusing on modification, not creation or deletion. The first sentence 'only the fields you send change' immediately clarifies the partial update behavior.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use the tool by detailing the effects of modifying different fields: keywords/analysts/title apply in place, while changing prompts/engines/frequency/resolution creates a new version. It also explains list replacement behavior, helping agents understand the consequences of updates.

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

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources