Canonry

Self-hosted AEO tracker that shows how AI answer engines mention and cite your site

Official · Canonry TypeScript Local · stdio Data and analyticsWeb search

74 popularity score ★ 199 ↓ 7.6k/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

FirstTerminal
npm install -g @canonry/canonry
cnry bootstrap
cnry serve
Claude CodeTerminal
claude mcp add canonry -- canonry-mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "canonry": {
      "command": "canonry-mcp",
      "args": []
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "canonry": {
      "command": "canonry-mcp",
      "args": []
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "canonry": {
      "type": "stdio",
      "command": "canonry-mcp",
      "args": []
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.canonry]
command = "canonry-mcp"
args = []
Gemini CLITerminal
gemini mcp add --scope user canonry canonry-mcp

Settings 4

Set together: scope
CANONRY_MCP_SCOPE Optional: all, read-only or stored-only. Narrows the tool list like the flags, and any other value stops it at start. Default all.
CANONRY_STORED_ONLY Optional: 1 or true keeps it to saved evidence with no live, provider or write tools. Wins over read-only.
CANONRY_MCP_EAGER Optional: 1, true or yes loads every toolkit at start instead of on demand.
CANONRY_DISABLE_UPDATE_CHECK Optional: Set to 1 to skip asking the server about a newer release.

What it does

Canonry is an open-source tool you host yourself. It tracks how AI answer engines such as ChatGPT, Claude, Gemini and Perplexity mention and cite your domains for the queries you care about. It also pulls in Google Search Console, GA4, Bing, Business Profile and server traffic data, so the agent can see search and AI visibility side by side.

The MCP part is `canonry-mcp`, a stdio adapter that ships in the `@canonry/canonry` npm package. It stores nothing itself. Every tool is a call to a Canonry server's REST API, either one you run locally with `cnry serve` or a remote one named in `~/.canonry/config.yaml`.

Tools load in stages. A small core set is there at start, and `canonry_load_toolkit` adds one group at a time, such as monitoring, setup, gsc, ga, gbp, traffic, ads or discovery. Pass `--eager` or set `CANONRY_MCP_EAGER` if your client handles a long list well. The docs give the full catalog as 286 API tools plus two meta-tools, though other sections of the same page quote smaller counts.

New in recent releases is an seo toolkit backed by DataForSEO. It reads saved keyword metrics, ranked keywords and market positions, and `canonry_seo_sync` refreshes that data from the provider when you ask.

Three scopes narrow what an agent can do. `--read-only` drops every write tool. `--stored-only` keeps only saved evidence, with no live calls or provider spend, and wins if both are set. If the API key itself is read-only, the adapter notices at start and switches to read-only on its own (cli.ts). A wrong `CANONRY_MCP_SCOPE` value or an unknown flag makes it exit with an error instead of guessing.

A Canonry server can also expose the same catalog over HTTP at `/api/v1/mcp`, with a `/readonly` variant, so a remote client needs no local Node install.

What it needs

RuntimeNode.js 22.23+
Runs onmacOS, Windows, Linux
AI answer provider API keyPaid planOne of OpenAI, Anthropic, Gemini, Perplexity, Muse, OpenRouter, Exa or Parallel. You pay per visibility run. A local OpenAI-compatible model also works
Google Search Console, GA4, Business Profile, BingFreeOptional, only for the search, analytics and local tools
DataForSEOPaid planOptional, for keyword and ranking data in the seo toolkit
OpenAI adsOptional, only for the ads toolkit
Also
  • A running Canonry server (cnry serve) or a remote one set as apiUrl
  • Native build tools if better-sqlite3 has to compile

Node.js in one of the supported ranges: 22.23.4 or later in the 22 line, 24.22.1 or later in the 24 line, or 26.12.1 or later in the 26 line. If you had the old `@ainyc/canonry` package, uninstall it first, because new releases come out only under `@canonry`. After `npm install -g @canonry/canonry`, run `cnry bootstrap` once and keep `cnry serve` running for the adapter to talk to. If install fails at `node-gyp`, add the native build tools that better-sqlite3 needs. `canonry mcp install --client claude-desktop` or `--client cursor` writes the client config for you and keeps a `.canonry.bak` copy of the old one.

Limits

  • Limit `canonry-mcp` holds no data itself. Each tool calls a Canonry server's REST API, so calls fail while that server is down
  • Limit The MCP docs disagree on catalog size: 286 API tools in one section, 221 and 220 in others, with 192 or 148 read tools
  • Rate limit Research runs from limited credentials and viewer sessions share a per-project daily cap, 20 by default, which new keys do not reset
  • Size cap `canonry_research_batch_start` takes at most 20 runs and 50 queries per request
  • Early release Sentiment features are marked experimental
  • Not covered Credential setup, token creation and base URLs are kept out of MCP on purpose and stay in the operator setup flow
  • Cost Visibility runs, research and SEO refreshes spend quota on your own provider accounts
  • Limit Hosted HTTP catalogs are fixed at connect time, so clients must reconnect after a server upgrade to see new tools

`canonry-mcp` does nothing on its own: every tool calls the Canonry REST API, so tool calls fail while the server is down. The docs give conflicting tool totals (261 API tools in one section, 221 and 220 in others), and the read-only count is given as both 148 and 172. Single-tenant: the docs say to run one instance per operator or team. Research runs by limited credentials and viewer sessions share a per-project daily cap, 20 by default. Batch research takes at most 20 runs and 50 queries per request. Sentiment features are marked experimental. Credential setup, token creation and base URLs are left out of MCP on purpose and stay in the operator setup flow.

Who it suits

Suits a marketer, SEO or developer who wants to track how AI answer engines cite their own domains, keep the data on their own machine, and let an agent read the evidence and act on it. Acting here means submitting sitemaps, publishing to WordPress or editing paused OpenAI ad campaigns. It is a whole platform with a server, a database and provider keys. If you only want a light read-only lookup, it is heavy. Start it with `--read-only` or `--stored-only` when an agent should only read saved data without spending provider quota.

Tools 58 of 288

43 only read, 9 change things, 6 can delete or overwrite.

canonry_help
Points to the tools for a stated goal and lists what needs approval
canonry_load_toolkit
Adds one toolkit's tools to the current stdio session
canonry_projects_list
Lists the projects on the connected server
canonry_project_get
Fetches one project's settings by name
canonry_project_overview
One-call summary of how a project is doing
canonry_search
Text search over saved answer snapshots and insights
canonry_doctor
Runs checks on Google and GA auth, scopes and providers
canonry_status
Reads saved sync status for a project or the server
canonry_settings_get
Reads API settings and which providers are configured
canonry_key_self
Shows the scopes and metadata of the key this connection uses
canonry_apply_config_preview
Shows what a config-as-code document would change
canonry_apply_config deletes
Applies a config-as-code document, resetting omitted fields
canonry_runs_list
Lists a project's runs
canonry_run_get
Fetches one run with its answer snapshots
canonry_snapshots_diff
Compares answer snapshots between two runs
canonry_timeline_get
Per-query citation history for a project
canonry_insights_list
Lists a project's insights, newest analysis first
canonry_project_history
Audit history for one project
canonry_history_global
Audit trail across the whole server
canonry_analytics_metrics
Mention and citation trends over time
canonry_analytics_sources
Ranks the domains and pages that engines cite
canonry_citations_visibility
Single-call view of where a project is cited
canonry_visibility_stats
Mention and citation rates per query
canonry_visibility_compare
Compares visibility between two periods
canonry_visibility_report
Saved visibility for a site, group, market or property
canonry_competitor_landscape
Which competitors show up in answers and where
canonry_content_gaps
Queries where rivals are cited and your domain is not
canonry_content_targets
Ranked content opportunities with a suggested action
canonry_content_brief changes
Builds or fetches a structured brief for a content target
canonry_sentiment
Reads saved, experimental sentiment about tracked brands
canonry_results_clear deletes
Deletes chosen visibility runs and research batches
canonry_queries_list
Lists a project's tracked queries
canonry_queries_replace deletes
Replaces a project's whole tracked query set
canonry_project_upsert deletes
Creates or replaces a project
canonry_project_update changes
Changes some of a project's settings
canonry_competitors_suggest
Suggests competitors from saved answers
canonry_provider_settings_update changes
Changes saved provider settings on the server
canonry_backlinks_domains
Lists domains that link to the project's site
canonry_seo_overview
Saved DataForSEO-style keyword and ranking summary
canonry_seo_ranked_keywords
Saved keywords the site ranks for in Google
canonry_seo_market_rankings
Saved Google positions for tracked queries by market
canonry_seo_refresh_intent
Prepares a refresh of saved SEO data without calling the provider
canonry_seo_sync changes
Starts a refresh of SEO data that may call a paid provider
canonry_gsc_performance
Search Console clicks, impressions and positions
canonry_gsc_coverage
Search Console index coverage for the site
canonry_gsc_sitemaps_submit changes
Submits sitemaps to Google Search Console
canonry_bing_coverage changes
Saved Bing index counts and URL checks, recording a daily snapshot
canonry_ga_overview
GA4 summary for the project's property
canonry_ga_ai_referral_daily
Daily GA4 sessions referred by AI engines
canonry_gbp_summary
Google Business Profile summary for selected locations
canonry_gbp_reviews
Saved Google Business Profile reviews
canonry_gbp_disconnect deletes
Removes the Business Profile connection and its locations
canonry_traffic_analytics
Server-side traffic totals and breakdowns
canonry_journeys_summary
Summary of visitor journeys from server traffic
canonry_traffic_connect_wordpress changes
Connects a WordPress site as a traffic source
canonry_traffic_sync changes
Pulls new events from a traffic source
canonry_traffic_backfill deletes
Reclassifies Cloud Run or Vercel traffic, replacing earlier results
canonry_snapshot changes
One-off AI perception report for any company and domain, spending provider quota

Resources 1

canonry://agent-operations/v1
The Canonry operations guide for agents, the same text as the public docs page

Similar servers