Skip to main content
Glama
PROMPTEYE-SP-Z-O-O

prompteye-mcp

Official

prompteye-mcp

An MCP server for PromptEye — how visible a brand is inside the answers AI assistants give.

A client picks a project, then asks about its visibility, the competitors answering alongside it, the prompts being tracked, and the answers and sources behind the numbers.

The server needs an API key and the API URL of the deployment it belongs to. Both are at app.prompteye.com/integrations, and it refuses to start without them.

Where the answers come from

Every tool whose endpoint the PromptEye API already serves calls the API. The rest answer from the sample data in src/fixtures/, and say so in their text, so the model does not pass illustrative figures off as measurements.

Tool

Endpoint

Source

get_account

GET /v1/me

API

list_projects

GET /v1/projects

API

select_project, get_active_project

GET /v1/projects/{projectId}

API

get_knowledge_base

GET /v1/projects/{projectId}/knowledge-base

API

list_categories

GET /v1/projects/{projectId}/categories

API

list_prompt_suggestions

GET /v1/projects/{projectId}/prompt-suggestions

API

list_prompts, get_prompt, list_prompt_groups

sample data

get_visibility_summary, get_visibility_timeseries

sample data

list_competitors, list_answers, list_sources, get_citation_quality

sample data

When the API grows an endpoint: add it to the client in src/api/, then move the method from the fixtures to src/client/live-client.ts.

Related MCP server: ai-visibility-mcp

Running it

npm install
cp .env.example .env      # put your key and API URL in it
npm run build

npm start                 # stdio — Claude Desktop, Cursor
npm run start:http        # Streamable HTTP on http://localhost:3000/mcp
npm test

During development, npm run dev and npm run dev:http watch and reload.

Claude Desktop

npm run bundle packs the server into build/prompteye-mcp.mcpb. Install it by double-clicking the file, dragging it onto the Claude Desktop window, or through Settings → Extensions → Advanced settings → Install Extension. The install form asks for both settings:

  • PromptEye API keype_live_…, with the api_access scope. Kept in the operating system's keychain.

  • API base URL — the API URL of the deployment that key belongs to.

Both are at app.prompteye.com/integrations.

After changing either, disable and re-enable the extension so the server restarts with them. The server logs where its answers come from — never the key — to ~/Library/Logs/Claude/mcp-server-PromptEye.log.

Pushing a v* tag builds the bundle in CI and attaches it to the GitHub release (.github/workflows/bundle.yml); the workflow also runs on demand.

Configured by hand instead of as a bundle:

{
  "mcpServers": {
    "prompteye": {
      "command": "node",
      "args": ["/absolute/path/to/prompteye-mcp/dist/index.js"],
      "env": {
        "PROMPTEYE_API_KEY": "pe_live_…",
        "PROMPTEYE_API_BASE_URL": "https://…"
      }
    }
  }
}

The API client

src/api/ is a client for the PromptEye API that knows nothing about MCP and depends on zod alone, so it can be published as its own package.

import { PromptEyeApi, PromptEyeApiError } from "./api/index.js";

const api = new PromptEyeApi({
  token: process.env.PROMPTEYE_API_KEY!,
  baseUrl: process.env.PROMPTEYE_API_BASE_URL!,
});

const account = await api.account.get();
const { data: projects } = await api.projects.list();
const project = await api.projects.get(projects[0].id);
const knowledgeBase = await api.knowledgeBase.get(project.id);
const { data: categories } = await api.categories.list(project.id);
const { data: suggestions } = await api.promptSuggestions.list(project.id, { groupId: "…" });

Option

Default

token

required

The API key, sent as Authorization: Bearer …

baseUrl

required

API root of the deployment the token belongs to

timeoutMs

30000

Request timeout

fetch

global fetch

Any compatible implementation

headers

{}

Sent with every request

Every method also takes { signal } as its last argument.

Responses are validated with zod: unknown fields are dropped and enumeration values added later are accepted, while a field that changed shape throws a ZodError.

A non-2xx answer throws PromptEyeApiError with the status and the response body; code and details are read from that body, and message comes from API_ERROR_MESSAGES, which maps every documented error code to a human message.

How a conversation goes

Every tool but list_projects, select_project and get_account reports on the active project, and takes no project argument. So a session starts by choosing one:

list_projects                  → the projects, with their ids
select_project(projectId: …)   → that project is now active
list_prompt_suggestions()
get_visibility_summary(by: "day")

Calling a project-scoped tool before selecting returns a recoverable error telling the model to list and select first — except when the key reaches exactly one project, which is then selected automatically.

Periods default to the last 30 days and are capped at 366. model narrows any of them to one assistant: gpt, perplexity, claude, deepSeek, gemini, grok, llama, aiOverview, copilot, googleAiMode.

The widget

get_visibility_summary is registered as an MCP App tool: hosts that support MCP Apps render public/visibility-widget.html alongside the text — the three headline figures with their period-over-period change, a trend line when called with by: "day", and per-assistant bars when called with by: "model".

It is one self-contained HTML file with no build step, so it speaks the MCP Apps ui/initialize handshake over postMessage directly rather than importing the ext-apps client.

Layout

src/
  api/                PromptEye API client — no MCP in it, publishable on its own
  index.ts            stdio entry point
  index-http.ts       Streamable HTTP entry point, one MCP session per mcp-session-id
  server.ts           builds one server: session, tools, widget resource
  session.ts          ProjectSession — which project the tools report on
  config.ts           environment, and the client factory
  client/             PromptEyeClient interface; live (API + fallback) and fixture implementations
  schemas/            zod mirrors of the models the API does not serve yet
  tools/              one module per group of tools
  fixtures/           sample data
public/
  visibility-widget.html
manifest.json         MCPB manifest — entry point, and the settings users fill in
scripts/bundle.mjs    stages dist/, public/ and production deps, then packs the .mcpb

Environment

Variable

Default

Purpose

PROMPTEYE_API_KEY

required

The API key

PROMPTEYE_API_BASE_URL

required

API root of the deployment that key belongs to

MCP_SERVER_NAME

prompteye-mcp

Name reported to clients

MCP_SERVER_VERSION

1.0.0

Version reported to clients

PORT

3000

HTTP transport port

Both the key and the API URL are at app.prompteye.com/integrations.

Available Tools

16 tools
get_accountRead the account behind the keyA
Read-only

Who the configured PromptEye API key belongs to, which plan the workspace is on, which addons and scopes it has, and how many prompts it tracks. Call this to diagnose a key or to check whether a plan covers a feature before promising it.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, which cover the safety and dynamic nature of the tool. The description adds context about the type of data returned (plan, addons, scopes, prompt count) but does not disclose any additional behavioral traits such as error conditions, rate limits, or response format specifics. With annotations carrying the safety profile, the description adds limited extra behavioral transparency, warranting a 3.

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 fluff. The first sentence front-loads the core resource and the specific data points returned, and the second sentence gives practical usage scenarios. Every word earns its place, and it is perfectly scoped for a zero-parameter read-only 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?

Given there is no output schema and the tool is simple (no params), the description must convey what the agent can expect. It lists the categories of information (owner, plan, addons, scopes, prompt count) and when to use it, which is largely complete. However, it does not specify the exact field names or structure of the response, nor any error behavior for invalid keys. Still, for a tool this simple, it is sufficiently complete, so a 4 is fair.

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 tool has zero parameters, and the schema description coverage is 100% (vacuously). The description doesn't need to explain parameters, and it does not add any parameter semantics beyond what's relevant (none). Per the rubric, 0 params gives a baseline of 4, and the description effectively compensates by explaining what the tool returns, though that's more about output than parameter meaning.

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: it returns account details tied to the configured API key, including owner, plan, addons, scopes, and prompt count. It also gives concrete use cases ('diagnose a key', 'check whether a plan covers a feature'), which differentiates it from sibling tools that focus on projects, prompts, or visibility data.

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 tells when to use the tool ('Call this to diagnose a key or to check whether a plan covers a feature before promising it'). It does not name specific alternatives or when-not-to-use, but the context makes it clear this is for account-level diagnostics rather than project/prompt operations. It lacks explicit exclusions, so a 4 is appropriate.

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

get_active_projectRead the active projectA
Read-only

The project every other tool is currently reporting on. Call this when unsure which project the numbers in this conversation refer to.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds context beyond annotations by defining the active project as the one every other tool reports on, clarifying what the returned value represents without contradicting the annotations.

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

Conciseness5/5

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

Two sentences each carry distinct value: the first defines the resource, the second gives the exact call condition. No filler, front-loaded with the core meaning.

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 read-only, zero-parameter tool without an output schema, the description covers the essential context: what the active project is and when to use this call. It does not spell out the response shape, but the name and title imply the project object is returned, and the annotations handle the safety profile.

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 tool has zero parameters and an empty schema, so there is no parameter burden for the description. Per the rubric, zero parameters warrants a baseline of 4.

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 makes clear that this tool retrieves the project that all other tools are currently reporting on, which is specific and contextually distinct from siblings like list_projects and select_project. The verb is only implicit in the tool name and title, but the resource and scope are unambiguous.

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

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 call it: 'Call this when unsure which project the numbers in this conversation refer to.' This is a direct, actionable usage guideline that distinguishes it from alternatives by function.

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

get_citation_qualityRead how the brand is citedA
Read-only

What the brand is to the answers that mention it — recommended, compared, cited as an expert, or merely mentioned in passing — and with what sentiment. Visibility says how often the brand appears; this says what appearing is worth.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, indicating a safe read operation. The description adds valuable behavioral context by explaining the nature of the output (citation types and sentiment) and its relationship to visibility. It does not disclose implementation details or limitations, but for a zero-parameter read-only tool, the description covers the essential behavior 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.

Conciseness5/5

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

The description is exactly two sentences with no filler. The first sentence defines the output and gives concrete examples; the second sentence clarifies the distinction from visibility. Every word earns its place, and the key concept is 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?

For a read-only tool with no parameters and no output schema, the description sufficiently explains what to expect. It does not mention whether it uses the active project or any context from sibling tools, but given the simplicity and the strong distinction from visibility tools, the description is complete enough for an agent to decide when to call it and understand the result. A minor gap is the lack of explicit mention that it depends on the active project context, but this is not critical.

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 tool has zero parameters, and the schema is trivially covered (100%). Baseline for zero parameters is 4. The description adds no parameter-specific information because there are none, but it explains what the tool returns, which is the key semantic for an agent. No deduction needed.

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 what the tool does: it characterizes how the brand is cited in answers (recommended, compared, expert, passing) and the associated sentiment. It explicitly distinguishes itself from visibility tools by contrasting frequency ('how often') with quality ('what appearing is worth'), making its purpose unambiguous and distinct from siblings like get_visibility_summary and get_visibility_timeseries.

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 context for when to use this tool versus visibility tools by explaining the difference between frequency and quality. However, it does not explicitly mention alternatives like list_answers or other related tools, nor does it give explicit 'when not to use' guidance. The contrast with visibility is strong, so it earns a 4 rather than 3.

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

get_knowledge_baseRead what the project knows about the brandA
Read-only

The description of the brand the project measures against — what the company sells and to whom. Useful for judging whether a prompt or a competitor genuinely belongs to this brand.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that the content serves as a measurement baseline, but doesn't disclose potential absence of a brand description or dynamic behavior. Given the annotations, this is adequate but not rich.

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

Conciseness5/5

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

A single sentence with a clarifying dash, efficiently front-loading the core purpose. No wasted words or redundant 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?

For a zero-parameter read-only tool, the description explains what is returned and why it's useful. It could mention whether the brand description can be empty or how to interpret it, but it's sufficient for most agent use cases.

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 tool has zero parameters, and the schema fully covers them (100% coverage). With no parameters to explain, the description has nothing to add beyond the baseline of 4.

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 that the tool returns the brand description the project measures against, specifying its content (what the company sells and to whom). This distinguishes it from sibling tools like get_account or list_prompts, though it doesn't explicitly name them.

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

Usage Guidelines3/5

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

The description provides a use case (judging whether a prompt or competitor belongs to the brand) but does not explicitly mention when not to use it or name alternative tools. The usage context is implied rather than fully articulated.

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

get_promptRead one promptA
Read-only

One prompt of the active project, with its visibility broken down per assistant. Call this to see which assistant is carrying a prompt and which is dropping the brand from it.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoLast day to report on, inclusive. Defaults to today, and must be within 366 days of startDate.
promptIdYesId of the prompt, as list_prompts reports it.
startDateNoFirst day to report on, inclusive. Defaults to 30 days before today.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark this as read-only, so the description needs to add value beyond safety. It does so by explaining the output shape ('visibility broken down per assistant') and the analytical purpose (identifying which assistant drops the brand). This is useful behavioral context with no contradiction to readOnlyHint or openWorldHint.

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 with zero fluff. The first sentence states what the tool returns, and the second gives a concrete reason to call it. Information is front-loaded and every sentence 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 the tool's low complexity, full parameter schema, and read-only annotations, the description is complete. It explains the return value concept (per-assistant visibility) beyond just naming the resource, which covers the absence of an output schema. An agent has enough to select and invoke it 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 description coverage is 100%, so the schema already documents promptId, startDate, and endDate. The description adds no additional parameter-level meaning; it describes the tool's purpose rather than clarifying parameter usage. 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 uses a specific verb ('Read' in title, 'Call this to see' in body) with a clear resource: one prompt of the active project. It distinguishes itself from list_prompts by focusing on a single prompt, and from visibility summaries by specifying the per-assistant breakdown and the brand-carrying/dropping insight.

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 a clear context for use: 'Call this to see which assistant is carrying a prompt and which is dropping the brand from it.' This tells an agent when this tool is appropriate, though it doesn't explicitly name alternatives or state when not to use it, so it falls short of a full when/when-not spec.

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

get_visibility_summarySummarise visibility for a periodA
Read-only

The headline visibility figures for the active project over a period, and how they moved against the period before it. This is the tool to call for 'how visible are we' — use get_visibility_timeseries only when the individual measurements behind the number are needed.

Pass by to split the same figures along an axis: day for a trend line, model to compare assistants, prompt to rank the prompts carrying the brand.

ParametersJSON Schema
NameRequiredDescriptionDefault
byNoSplit the period along this axis as well as reporting its totals.
limitNoHow many breakdown entries to return, at most 200. Ignored without `by`.
modelNoReport on this assistant alone instead of all of them.
endDateNoLast day to report on, inclusive. Defaults to today, and must be within 366 days of startDate.
promptIdNoReport on this prompt alone instead of every prompt in the project.
startDateNoFirst day to report on, inclusive. Defaults to 30 days before today.

TDQS

A4.2/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=true and openWorldHint=true, so the description doesn't need to state that it's a read operation. The description adds context about the comparison with the previous period, which is useful behavioral information. However, it doesn't clarify that the period must be within 366 days (though the schema describes that for endDate), or mention any other restrictions such as the need for an active project. Since the annotations carry the safety profile, the description adds moderate value without contradicting, so a 3 is appropriate.

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

Conciseness5/5

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

The description is concise, with two focused sentences. The purpose is front-loaded at the start, and the guidance for when to use alternatives and how to use the 'by' parameter is efficiently packed. No fluff is present; every phrase adds value.

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 complexity (6 params, all optional, with enums) and the fact that there is no output schema, the description is complete enough for an agent to know when and how to call it. It covers the main use case ('how visible are we'), the alternative route, and the key parameter behavior. It doesn't explicitly mention the comparison with the previous period in the parameter section, but it is mentioned in the description. It might benefit from noting that 'limit' is ignored without 'by', but the schema already says that, so the description doesn't need to repeat it. Overall, it's well-rounded for the purpose.

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 schema description coverage is 100%, meaning the schema already documents all parameter semantics. The description, however, adds explanatory value for the 'by' parameter (e.g., 'day for a trend line, model to compare assistants, prompt to rank the prompts') that goes beyond the schema's brief description. It doesn't add much for other parameters, as the schema covers them well. With high schema coverage, a baseline of 3 is correct, but the description earns its place by illustrating parameter usage.

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 specifies the verb ('Summarise'), the resource ('visibility for a period'), and the key behavior ('headline visibility figures' and 'how they moved against the period before it'). It also distinguishes itself from the sibling tool get_visibility_timeseries, explicitly stating which to call for what. This is a clear, specific definition that sets it apart.

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 guidance: 'This is the tool to call for "how visible are we"' and tells when to use the alternative: 'use get_visibility_timeseries only when the individual measurements behind the number are needed.' It also explains how to use the 'by' parameter for different analysis scenarios. This is explicit and actionable guidance.

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

get_visibility_timeseriesRead visibility over timeA
Read-only

The individual measurements behind the summary: one row per day, prompt and assistant, saying whether the brand was named and in which position. Call this to inspect the raw record; call get_visibility_summary for a headline number.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many entries to return, at most 200. Defaults to 50.
modelNoReport on this assistant alone instead of all of them.
cursorNoThe nextCursor of the previous page. Omit it to start from the first one.
endDateNoLast day to report on, inclusive. Defaults to today, and must be within 366 days of startDate.
promptIdNoReport on this prompt alone.
startDateNoFirst day to report on, inclusive. Defaults to 30 days before today.

TDQS

A4.4/5.0
Behavior4/5

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

The annotations already establish readOnlyHint=true, so the read-only nature is covered. The description adds meaningful behavioral context by explaining the grain of the data and what each row reports, going beyond the annotations. It does not mention pagination or exact output fields, but those are partly covered by the schema's cursor parameter.

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 compact sentences, no filler. The first sentence explains what the tool returns, and the second gives routing guidance to the alternative tool. All information is front-loaded and useful.

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 read-only, fully optional-parameter tool with a complete input schema, the description gives enough conceptual context about the return value: row-level daily measurements with brand-named and position indicators. It is slightly short on exact output shape and pagination behavior, but the schema's cursor parameter and the description's row-level explanation cover most of what an agent needs.

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 all six parameters are already documented with defaults, ranges, and formats. The description adds a little context by tying rows to day, prompt, and assistant, which maps to startDate, endDate, promptId, and model, but it does not need to compensate much because the schema is complete.

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 states a specific purpose: it exposes the individual daily measurements behind the summary, with one row per day, prompt, and assistant, indicating whether the brand was named and its position. It also distinguishes itself from get_visibility_summary by calling this the raw record versus the headline number.

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 ('call this to inspect the raw record') and when to use the sibling ('call get_visibility_summary for a headline number'). This gives an agent a clear decision rule without needing to inspect either schema.

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

list_answersRead the answers behind the numbersA
Read-only

The answers the assistants actually gave on the active project's prompts, each with whether the brand was named, in which position, and which sources the answer cited. Call this when a visibility figure needs explaining rather than restating.

ParametersJSON Schema
NameRequiredDescriptionDefault
brandNoOnly answers that named the brand, or only those that did not.
limitNoHow many entries to return, at most 200. Defaults to 50.
modelNoReport on this assistant alone instead of all of them.
cursorNoThe nextCursor of the previous page. Omit it to start from the first one.
searchNoOnly answers whose text contains this phrase.
endDateNoLast day to report on, inclusive. Defaults to today, and must be within 366 days of startDate.
promptIdNoOnly answers to this prompt.
startDateNoFirst day to report on, inclusive. Defaults to 30 days before today.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark it read-only, and the description adds context about scoping to the active project and the answer attributes returned: brand named, position, and cited sources. It does not discuss pagination or response details, but the schema covers cursor and limit, and no contradiction exists.

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-loads the core meaning, and includes a practical call-condition without filler. Every phrase contributes.

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 conveys the purpose, scope, and key response fields for a tool with no output schema, and the input schema covers all parameters. It still leaves response shape and pagination to be inferred from the cursor/limit parameters rather than describing them explicitly.

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?

All eight parameters have schema descriptions, so the schema carries the semantic load. The description adds no parameter-level guidance beyond that, giving the baseline score of 3.

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 names a specific resource (the answers assistants gave on prompts) and a concrete verb context (listing them with brand-named status, position, and cited sources). It distinguishes itself from siblings like get_visibility_summary by stating it is for explaining a visibility figure rather than restating it.

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?

It explicitly states when to call the tool: 'when a visibility figure needs explaining rather than restating.' However, it does not name the alternative tools or give when-not-to-use conditions, so it falls short of full exclusion guidance.

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

list_categoriesList the categories the project files prompts underA
Read-only

Every category of the active project, two levels deep: top-level categories with their subcategories beneath, and whether PromptEye proposed each one or it was written by hand.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior1/5

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

The description claims to list 'every category', which implies exhaustiveness. However, the annotation openWorldHint=true indicates that the result set may be incomplete and should not be assumed exhaustive. This is a direct contradiction between the description and the annotation, warranting a score of 1.

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 a single, front-loaded sentence that immediately states the scope ('Every category of the active project') and then adds the key details of depth and origin. No fluff or repetition; every word contributes.

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 parameterless list tool with no output schema, the description provides a high-level understanding of the return structure (two levels, subcategories, origin). It does not specify output format, but that is not required given the lack of an output schema. The description is sufficient for an agent to know what to expect when calling the 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 tool has zero parameters and the schema description coverage is 100% (vacuously). Since there are no parameters to explain, the description does not need to compensate. The baseline for zero parameters is 4, and the description adds no extra parameter-related information, which is acceptable.

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', the resource 'categories of the active project', and specifies the depth (two levels) and the inclusion of origin (proposed vs hand-written). This distinguishes it from sibling tools like list_projects or list_prompt_groups, which target different resources.

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 by scoping to the active project, implying the tool is used when category structure is needed. It does not explicitly mention alternatives or exclusions, but the resource name makes the use case obvious against the sibling list.

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

list_competitorsRank the brands answering alongside yoursA
Read-only

Every brand the assistants named on the active project's prompts, measured the same way the project's own brand is and ranked by share of voice. The project's own brand is in the list and marked, so it can be charted against the rest.

Share of voice answers a different question from visibility: visibility is how often the brand was named at all, share of voice is how much of the naming it took from everyone else. This ranks rather than pages — it answers with the strongest brands, not a list you walk to the end of.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many brands to return, at most 200.
modelNoReport on this assistant alone instead of all of them.
endDateNoLast day to report on, inclusive. Defaults to today, and must be within 366 days of startDate.
startDateNoFirst day to report on, inclusive. Defaults to 30 days before today.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the tool read-only and open-world, so the description does not need to restate safety. It adds useful behavioral details beyond the schema: the measurement matches the project's own brand methodology, the own brand is included and marked, and results are ranked by share of voice. 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 focused and front-loaded with the core behavior, then adds only the necessary distinction from visibility and ranking. It is slightly discursive in explaining share-of-voice versus visibility, but that contrast earns its place because it prevents misuse.

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 read-only ranking tool with no output schema, the description adequately conveys what the result contains: ranked brands by share of voice, with the project's own brand included and marked. It does not detail exact output fields or sort direction, but 'ranked' and 'strongest brands' make the intent clear.

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 descriptions already document limit, model, startDate, and endDate fully. The tool description adds no parameter-specific meaning beyond that, which meets the baseline but does not exceed it.

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 states a specific action—list/rank brands named by assistants—and a specific metric (share of voice), while explicitly marking that the project's own brand is included and flagged. It also distinguishes itself from visibility-focused tools by defining what share of voice measures versus visibility.

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 gives clear context for when this tool is appropriate: when the user wants share-of-voice ranking rather than visibility counts, and when ranked strongest brands are desired rather than a paginated list. It implicitly contrasts with sibling visibility tools but does not name a specific alternative tool.

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

Every project the API key reaches, newest first, with the access the key has to each. A project is one brand tracked in one market, and it is the root of everything else PromptEye measures. Call this first, then select_project, before asking about visibility, competitors, prompts or sources.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover read-only and open-world behavior. The description adds valuable behavioral context beyond those annotations: it returns every project the API key reaches, sorted newest first, and includes the key's access level. It stops short of mentioning pagination or exact return shape, but the additional context is meaningful.

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

Conciseness5/5

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

Three sentences, each earning its place: the first states core behavior, the second gives essential domain context, and the third provides invocation ordering. The primary function is front-loaded, and there is no filler or 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 zero-parameter, read-only list tool with no output schema, the description is complete: it states scope, ordering, access information, domain meaning, and the correct call sequence relative to siblings. An agent has enough information to invoke the tool and understand what it returns.

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 tool has zero parameters and 100% schema coverage, so the baseline is 4. The description adds no parameter-specific semantics because there are none to describe, and the schema fully covers the empty input.

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 states a specific verb-resource pair: list projects scoped to the API key, with ordering and access level. It further distinguishes itself from siblings by explaining that a project is the root entity and instructing to call this before select_project, making its role unambiguous.

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 gives explicit usage context: call this first, then select_project, before querying visibility, competitors, prompts, or sources. It does not name excluded alternatives or say when not to use it, but the sequencing guidance is clear enough for an agent to invoke it correctly.

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

list_prompt_groupsList the prompt groups of the projectA
Read-only

How the active project's prompts are grouped, with the visibility and business priority of each group. Use a group id to narrow list_prompts.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many entries to return, at most 200. Defaults to 50.
cursorNoThe nextCursor of the previous page. Omit it to start from the first one.
endDateNoLast day to report on, inclusive. Defaults to today, and must be within 366 days of startDate.
startDateNoFirst day to report on, inclusive. Defaults to 30 days before today.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the bar for behavioral disclosure is lowered. The description adds that the output includes visibility and business priority, but does not disclose pagination or date-filtering behavior—though these are covered by the schema. 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?

Two sentences with zero filler. The first sentence states the purpose and the returned content; the second gives a usage hint. Front-loaded with the most important 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?

The description gives a high-level view of the response content (grouping, visibility, priority) but does not explain how the date parameters affect the result or the exact response structure. Since there is no output schema, these gaps are noticeable, though the schema covers the parameters.

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?

All four parameters are fully documented in the schema with 100% coverage, so the description does not need to add parameter meaning. The description does not mention the parameters at all, but the schema already provides adequate semantics, justifying the baseline score of 3.

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?

States the specific verb 'list' and resource 'prompt groups' with additional detail on what is returned (visibility and business priority). Clearly distinguishes from sibling list_prompts, which lists actual prompts rather than groups.

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 a group id to narrow list_prompts, indicating the relationship and a clear alternative. Does not explicitly state when not to use this tool, but the context implies it is for overviews while list_prompts is for individual prompts.

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

list_promptsList the prompts of the projectA
Read-only

The questions the active project puts to the assistants, with the visibility each one earns. Every measurement PromptEye reports is taken on the answers to these prompts, so this is where to look for which questions carry the brand and which do not.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many entries to return, at most 200. Defaults to 50.
cursorNoThe nextCursor of the previous page. Omit it to start from the first one.
endDateNoLast day to report on, inclusive. Defaults to today, and must be within 366 days of startDate.
groupIdNoOnly prompts in this prompt group.
startDateNoFirst day to report on, inclusive. Defaults to 30 days before today.
categoryIdNoOnly prompts filed under this category.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations cover read-only and open-world behavior, and the description adds that each returned prompt carries a visibility value and that PromptEye measurements are based on answers to these prompts. This gives useful domain context beyond the annotations, though it does not describe pagination or response shape.

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

Conciseness4/5

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

The description is two sentences and front-loads the core object: prompts of the active project with visibility. The second sentence adds relevant context about PromptEye measurements and brand relevance, but it is slightly conceptual rather than strictly operational, so it is concise but not maximally tight.

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 read-only list operation with all parameters documented in the schema, the description gives sufficient conceptual info about what is returned (prompts plus visibility). Without an output schema, it could describe the response wrapper or pagination more explicitly, but the tool remains callable based on this description and 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 description coverage is 100%, so the parameters (limit, cursor, date range, groupId, categoryId) are already documented in the schema. The description adds no additional parameter guidance, 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.

Purpose4/5

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

The description identifies the resource ('the prompts') and scope ('active project') and adds that each prompt is listed with the visibility it earns, which distinguishes it from a generic prompt listing. It lacks an explicit verb like 'list' or 'returns', relying on the title and the phrase 'this is where to look', so it is clear but not maximally specific.

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 phrase 'this is where to look for which questions carry the brand and which do not' provides a clear use case: inspecting per-prompt visibility context. It does not name sibling tools like get_prompt, list_prompt_groups, or get_visibility_summary, nor does it state when not to use them, so exclusions are missing.

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

list_prompt_suggestionsList the prompts worth adding nextA
Read-only

Prompts PromptEye suggests the active project start tracking, still awaiting a decision. Each carries why it was suggested — a gap in the funnel, or a theme close to prompts that already perform — with the search demand behind it, how close to a purchase it is asked and how well it fits the brand. Grouped by the prompt group each would join, strongest demand first. Call this when asked what to monitor next.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdNoOnly suggestions for this prompt group, by the group id the suggestions carry.

TDQS

A4.1/5.0
Behavior4/5

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

The description adds behavioral context beyond the readOnlyHint and openWorldHint annotations by explaining that results are grouped by prompt group and sorted by strongest demand first. It also describes the informational payload (search demand, purchase proximity, brand fit). It does not mention error conditions or pagination, but for a read-only listing 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.

Conciseness4/5

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

The description is four sentences and each sentence carries distinct information: purpose, rationale content, grouping/sorting, and usage trigger. It is somewhat wordy ('Prompts PromptEye suggests the active project start tracking') but avoids redundancy and is front-loaded with the core 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 a simple listing tool with one optional filter, the description explains what the returned suggestions contain (reasons, demand data, grouping, sorting) and when to call it. It assumes an active project exists but that is consistent with sibling tools like get_active_project. No output schema exists, so the description's explanation of returned fields is helpful.

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 schema already fully documents the single optional groupId parameter with 100% coverage and a clear description. The tool description mentions grouping by prompt group, which aligns with the filter, but adds no additional parameter 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 this tool lists prompt suggestions for the active project that are still awaiting a decision, with reasons for each suggestion. It distinguishes itself from list_prompts (existing prompts) by emphasizing 'suggested' and 'worth adding next'. The title reinforces the 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 final sentence 'Call this when asked what to monitor next' provides an explicit trigger. It implies the active project context, so an agent knows it applies to the currently selected project. It does not explicitly name sibling alternatives or exclusions, but the trigger is sufficient.

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

list_sourcesList the domains assistants citeA
Read-only

The domains the assistants leaned on when answering the active project's prompts, ranked by how often they were cited. The project's own domain is marked. Call this to see which pages shape what the assistants say about the brand.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many domains to return, at most 200.
modelNoReport on this assistant alone instead of all of them.
endDateNoLast day to report on, inclusive. Defaults to today, and must be within 366 days of startDate.
startDateNoFirst day to report on, inclusive. Defaults to 30 days before today.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds behavioral context by specifying that results are ranked by citation frequency and that the project's own domain is marked, which helps the agent set expectations about output semantics.

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 short sentences, each adding a distinct piece of information: what the tool returns, how it is ordered, and when to call it. The description is well front-loaded and contains no filler.

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 read-only list tool with fully described parameters and no output schema, the description provides enough context to select and invoke the tool correctly. It could be slightly more complete by clarifying how the 'active project' is determined or what fields appear in each result, but these are minor gaps given the schema and annotations.

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 four parameters (limit, model, startDate, endDate) with enough detail. The description adds no parameter-specific meaning, which is acceptable at the baseline 3 per the rubric.

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 specific verb ('list'), the resource ('domains cited by assistants'), and the scope ('active project's prompts'), with ranking and project-domain marking noted. This distinguishes it from related siblings like get_citation_quality or list_answers because it is specifically about the domains behind citations.

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 gives a clear usage context: 'Call this to see which pages shape what the assistants say about the brand.' It implies use for understanding the active project's citation sources, but it does not explicitly state when not to use it or name alternatives.

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

select_projectSelect the project to work onA
Read-only

Makes one project the active one. Every other tool reports on the active project and takes no project argument, so call this once before asking about visibility, competitors, prompts, answers or sources. Call it again to switch projects mid-conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesId of the project to make active, as list_projects reports it.

TDQS

A3.6/5.0
Behavior1/5

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

The description states the tool changes which project is active and can switch projects mid-conversation, which is a state mutation. The annotation readOnlyHint=true claims the tool does not modify state, directly contradicting the described behavior. This is an annotation contradiction.

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

Conciseness5/5

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

The description is three sentences with no wasted words. The core action is front-loaded, followed by necessary context about why this tool matters and when to call it again.

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 single-parameter selection tool, the description covers the main action, the effect on other tools, and usage timing. It omits return value or error behavior, but those are not critical given the tool's simplicity and lack of output 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?

The schema fully documents the single projectId parameter, including its source from list_projects. The description does not add additional parameter-level meaning, but with 100% schema description coverage 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 tool's function: it makes one project the active project. It also differentiates this tool from its siblings by explaining that all other tools operate on the active project and take no project argument, making its role as the state-setter unambiguous.

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 gives explicit usage timing: call it once before working with visibility, competitors, prompts, answers, or sources, and call it again to switch projects. It does not explicitly mention when not to use it or alternatives like get_active_project, but the guidance is clear enough.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 16 tool updatesv1.0.5
    • First observedget_account
    • First observedget_active_project
    • First observedget_citation_quality
    • First observedget_knowledge_base
    • First observedget_prompt
    • First observedget_visibility_summary
    • First observedget_visibility_timeseries
    • First observedlist_answers
    • First observedlist_categories
    • First observedlist_competitors
    • First observedlist_projects
    • First observedlist_prompt_groups
    • First observedlist_prompt_suggestions
    • First observedlist_prompts
    • First observedlist_sources
    • First observedselect_project

TDQS

A3.9/5.0

Scored across 16 tools

Disambiguation4/5

Most tools are clearly distinct (projects, prompts, visibility, competitors, answers, sources), but get_visibility_summary and get_visibility_timeseries overlap in purpose and require careful reading to distinguish. list_prompts and get_prompt are also similar but the singular/plural pattern helps.

Naming Consistency4/5

The set consistently uses get_/list_ prefixes with clear noun objects (get_prompt, list_projects, list_competitors). Minor inconsistency: get_knowledge_base and get_account are not project-scoped like the rest, and get_visibility_summary vs get_visibility_timeseries breaks the simple noun pattern slightly.

Tool Count4/5

16 tools is at the upper edge of reasonable for a domain with projects, prompts, visibility, competitors, answers, and sources. Each tool covers a distinct resource, though a few could be consolidated (e.g., visibility summary/timeseries).

Completeness4/5

The surface covers the core workflow well: project selection, prompt management, visibility measurement, competitor analysis, answer inspection, and source tracking. Minor gaps: no tool to create/update prompts or prompt groups, and no way to drill into a specific competitor's details beyond the ranked list.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    9 npm
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Track how your brand appears in AI-generated answers across ChatGPT, Perplexity, and other AI models. Analyze visibility, sentiment, citations, and domain rankings with 31 tools — including analytics reports, chat inspection, query analysis, and full CRUD for brands, prompts, tags, and topics.
    17
    64 npm
    2
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to monitor and analyze a brand's visibility across ChatGPT, Claude, Perplexity, and Google AI Overviews, providing insights, recommendations, and competitive analysis without switching tabs.
    25
    17 npm
    1
    MIT