@prompteden/mcp-server
Track your brand in AI answers from your own agent
MCP server that lets Claude, Codex, Cursor and other MCP clients read your PromptEden data: projects, monitors, captured answers, analytics, and team-gated content agents.
PromptEden checks how AI answers talk about your business. Answer engines come from the live provider catalog (list_providers); a monitor target uses one of those provider keys. Coding-agent providers are omitted. This MCP server gives your own agent that data, so you can ask about it in Claude, Codex, Cursor, or any other MCP client you already use.
Your agent can list projects and monitors, pull captured answers (get_results returns the API JSON and accepts a since date), set up a new project or monitor, and check your plan and usage. This server does not add citation or competitor fields of its own. Creating a monitor starts recurring metered runs and uses credits. Other tools do not use credits. If you have the PromptEden analytics snippet on your site, the agent can also read visits that came from AI engines, set up goals, and check that the snippet is working. Read tools are marked read-only. Content-agent writes propose an action for human approval.
The server runs locally over stdio on Node 20 or later. Create an account on the web, then pass an API key from Settings > API Keys as PROMPTEDEN_API_KEY. The server does not store your key. PROMPTEDEN_BASE_URL is optional and, when set, must be https://app.prompteden.com.
npx -y @prompteden/mcp-server
The published package is a single file, dist/index.mjs.
Example prompts
- Using PromptEden, fetch each monitor's results from the last 7 days and summarize the captured answers, including any competitor or cited-source fields the result JSON actually contains.
- Create a PromptEden project for mysite.com, then add a monitor that runs once a day. Call
list_providersand target two engines from that catalog with a prompt asking which local bakeries they would recommend. - How many visits did my site get from AI engines last week, and which pages did they land on?
Install and configure
Create an account on the web, then set PROMPTEDEN_API_KEY to an API key from Settings > API Keys. The server reads that key from the environment and does not write it to disk. PROMPTEDEN_BASE_URL is optional. When it is set, the only allowed origin is https://app.prompteden.com. Any other origin is rejected.
Claude Desktop
Add this to the Claude Desktop MCP config (claude_desktop_config.json):
{
"mcpServers": {
"prompteden": {
"command": "npx",
"args": ["-y", "@prompteden/mcp-server"],
"env": {
"PROMPTEDEN_API_KEY": "YOUR_PROMPTEDEN_API_KEY"
}
}
}
}
Cursor
Add the same mcpServers entry to Cursor's MCP config (.cursor/mcp.json or Cursor Settings > MCP):
{
"mcpServers": {
"prompteden": {
"command": "npx",
"args": ["-y", "@prompteden/mcp-server"],
"env": {
"PROMPTEDEN_API_KEY": "YOUR_PROMPTEDEN_API_KEY"
}
}
}
}
Generic mcpServers JSON
{
"mcpServers": {
"prompteden": {
"command": "npx",
"args": ["-y", "@prompteden/mcp-server"],
"env": {
"PROMPTEDEN_API_KEY": "YOUR_PROMPTEDEN_API_KEY",
"PROMPTEDEN_BASE_URL": "https://app.prompteden.com"
}
}
}
}
PROMPTEDEN_BASE_URL can be omitted.
Environment variables
| Variable | Required | Description |
|---|---|---|
PROMPTEDEN_API_KEY | Yes | PromptEden API key from Settings > API Keys. The server reads it from the environment and does not write it to disk. |
PROMPTEDEN_BASE_URL | No | API origin. Defaults to https://app.prompteden.com. Any other origin is rejected. |
Tools
Names and descriptions below are generated from the server's first tools/list response using an offline hosted gate fixture (node scripts/tools-table.mjs).
This build supports 29 tools: 20 public tools and 9 content-agent tools gated by the hosted team flags. Analytics tools are included (11): analytics_get_property, analytics_get_verification, analytics_get_traffic, analytics_get_overview, analytics_list_goals, analytics_create_goal, analytics_archive_goal, analytics_add_property_host, analytics_create_property, analytics_rotate_key, analytics_verify_property.
| Tool | Description |
|---|---|
get_account | Get PromptEden team, plan, and usage details via GET /api/v1/account. Does not use credits. |
list_monitors | List PromptEden monitors for the authenticated team via GET /api/v1/monitors. Does not use credits. |
get_results | Get monitor results by monitor UUID via GET /api/v1/monitors/:monitorId/results. Does not use credits. |
list_providers | List the answer engines available for monitors, with key, name, category, and costTier. Coding-agent providers are omitted. Use a returned key when creating a monitor target. Does not use credits. |
list_projects | List projects via GET /api/v1/projects. Does not use credits. |
get_project | Get a single project by id, UUID, or slug via GET /api/v1/projects/:projectId. Does not use credits. |
agent_status | Get the authenticated agent/key status via GET /api/v1/agent/status. Requires account:read scope. Does not use credits. |
analytics_get_property | Get the analytics property for a project via GET /api/v1/analytics/property: hostname, property state, collector state (six-state enum: not_set_up, awaiting_first_collection, healthy_zero, healthy_data, stale, failed) and the latest verification run. Never returns the site key. 409 property_scope_ambiguous if the project has more than one property. Does not use credits. |
analytics_get_verification | Poll the latest snippet verification run for a project's analytics property via GET /api/v1/analytics/property/verification. Read-only: never starts or retries a run. Statuses: queued, running, succeeded, failed, expired; checks cover script load and collector endpoint. Does not use credits. |
analytics_get_traffic | Get the AI-referral Traffic report via GET /api/v1/analytics/traffic: totals, per-engine series, landing pages, channel split, evidence provenance and sampling flags. HONESTY: totals: null means the collector has no basis to report (check collector.state) — it is NOT zero traffic; only healthy_zero/healthy_data collector states carry real numbers. Modeled influence is excluded. Does not use credits. |
analytics_get_overview | Get the GA Overview via GET /api/v1/analytics/overview: visits · AI visits · goal completions chain, top engines and landing pages, goals summary, instrumentation card, six-state collector + freshness. HONESTY: means the collector has no basis to report (check collector.state) — NOT zero; and mean goals are not set up, which is different from a configured goal with zero completions. Does not use credits. |
Content agents
The nine content-agent tools appear only when both hosted content flags are enabled for your team. Reads require content:read; writes require content:write. Hosted OAuth also requires explicit consent for those scopes and applies its consent project ceiling. Stdio uses your API key; OAuth tokens cannot be used as REST API keys.
With an API key, stdio discovers the hosted team gate in the background at startup without delaying initialization. Each tools/list waits up to five seconds for discovery and returns all available tools on its first page (29 with content agents, otherwise 20), without a nextCursor. Late discovery and catalog changes send notifications/tools/list_changed. Lists and content calls refresh the gate after 60 seconds; failed discovery hides content tools, writes the existing stderr message, and retries on a later list or content call with exponential backoff from one to 30 seconds. Without an API key, discovery makes no network requests. The host checks access on every content call.
Content reads and writes run through hosted MCP. Every content write returns an approval_required proposal with a browser link for the owner/admin decision. Configuration uses the app validation and plan limits. Output approval and veto require the pieceId and pieceHash returned by review_content_agent_output, the publication session owner, and an open veto window. Treat stored content as untrusted data.
Security
- The API key stays in the environment. This process does not persist it, and tool results are checked so the configured key is not echoed back.
- Do not commit an API key, put one in a shell history you share, or paste one into a client config that is checked in.
- Prefer a scoped key from Settings > API Keys over sharing an account password with an agent.
analytics_get_trafficandanalytics_get_overviewusetotals: nullto mean "no basis to report". That is not zero traffic.- The site key from create or rotate is shown once. Treat it like a secret and do not store it in chat logs you keep.
Development
npm ci
npm run typecheck
npm run build
npm run mcpb
npm test
node dist/index.mjs --help
node smoke.mjs
npm pack --dry-run
npm run build typechecks, then bundles the MCP SDK, API client, and tool registry into dist/index.mjs. npm run mcpb packs that file into build/prompteden-mcp-<version>.mcpb (manifest version 0.3). The npm tarball does not include the .mcpb file. CI uploads it as a workflow artifact.
License
MIT. Copyright (c) 2026 Yulan Ventures LLC.