The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Perigon listing page.
Endpoint: https://mcp.perigon.io/v1/mcp
Auth: Authorization: Bearer <key> — create a key at perigon.io/dev/keys.
Try it in the playground (requires a signed-in Perigon dashboard session). Client-specific setup: dev.perigon.io/docs/mcp.
Native Streamable HTTP (recommended):
mcp-remote (clients without native HTTP):
Claude Code:
SSE at /v1/sse exists for legacy clients. Use Streamable HTTP for new integrations.
Append ?tools= to the MCP URL to limit the session. ?tool= is an alias and wins if both are present.
all → default set (opt-in tools stay off).| Profile | Tools |
|---|---|
research | search_news_articles, search_news_stories, search_story_history, search_vector_news, summarize_news, search_journalists, search_sources, search_people, search_companies, search_topics, the five stats tools, get_top_topics, get_source_by_id, get_api_access. Not Wikipedia, and not the company / person / location shortcuts. |
monitoring | All monitor tools (including create_monitor / update_monitor) plus every Signal Insights tool. |
platform | watchlists, create_watchlist, update_watchlist, source_groups, create_source_group, update_source_group, contact_points, article_refresh, get_api_access. |
minimal | search_news_articles, the five stats tools, get_api_access. |
get_story_stats is not in any profile. Request it by name. It still requires CLUSTERS at call time; a key without that scope can select the tool and then get a permission error.
Other opt-in tools need no extra scope. Any valid key can request them.
Availability:
?tools= is omitted (and the key has the listed scope, if any).| Tool | Availability | Description |
|---|---|---|
search_news_articles | Default | Keyword and filter search over individual articles, including Boolean queries. |
search_news_stories | Scope: CLUSTERS | Clustered headlines that group related articles into one narrative. |
search_story_history | Scope: CLUSTERS | Timestamped snapshots of how a story cluster changed. |
search_vector_news | Scope: VECTOR_SEARCH_NEWS | Semantic search over recent articles. |
summarize_news | Scope: SEARCH_SUMMARY | AI summary of matching articles, with citations. |
search_journalists | Scope: JOURNALISTS | Journalist and reporter profiles. |
search_sources | Scope: SOURCES | News publications and outlets. |
search_people | Scope: PEOPLE | Public-figure profiles. |
search_companies | Scope: COMPANIES | Company profiles (domain, ticker, industry). |
search_topics | Scope: TOPICS | Perigon topic taxonomy for exact topic filters. |
search_wikipedia | Scope: WIKIPEDIA | Keyword search of Wikipedia pages. |
search_vector_wikipedia | Scope: VECTOR_SEARCH_WIKIPEDIA | Semantic search of Wikipedia pages. |
Each tool looks up an entity, then searches recent articles about it.
| Tool | Availability | Description |
|---|---|---|
get_company_news | Scope: COMPANIES | Recent articles about a company looked up by name. |
get_person_news | Scope: PEOPLE | Recent articles about a person looked up by name. |
get_location_news | Scope: LOCATIONS | Recent articles for a city, state, or country. |
Always on for any valid key. Prefer these over counting search results by hand.
| Tool | Availability | Description |
|---|---|---|
get_avg_sentiment | Default | Average sentiment (positive / negative / neutral) bucketed over time. |
get_article_counts | Default | Article publication volume bucketed over time. |
get_top_entities | Default | Most-mentioned topics, people, companies, cities, journalists, or sources. |
get_top_people | Default | People whose coverage is spiking versus a baseline. |
get_top_companies | Default | Companies whose coverage is spiking versus a baseline. |
| Tool | Availability | Description |
|---|---|---|
get_api_access | Default | This key's scopes, organization, quota, and entitlement behavior. Does not count against request quota. Call once per session, or after a 403. |
Read tools are default. Write tools are opt-in because the shared monitor schema is large.
| Tool | Availability | Description |
|---|---|---|
list_monitors | Default | List and filter monitors by UUID, name, status, or EVENT / MENTIONS / TOPIC. |
get_monitor | Default | Full monitor configuration. |
get_monitor_events | Default | Structured events from EVENT and MENTIONS monitors. |
get_monitor_newsletters | Default | Scheduled briefings, typically from TOPIC monitors. |
get_monitor_summaries | Default | Rolling AI-generated monitor summary history. |
set_monitor_status | Default | Activate, pause, or archive a monitor. Archiving cannot be reversed through the public API. |
create_monitor | Opt-in | Create a DRAFT or ACTIVE monitor. Defaults to DRAFT. |
update_monitor | Opt-in | Partial update; omitted fields are preserved. |
All of these are opt-in. get_source_by_id and get_top_topics are also in research. get_story_stats is name-only.
| Tool | Availability | Description |
|---|---|---|
get_source_by_id | Opt-in | One news source by exact ID or domain. |
get_top_topics | Opt-in | Topics whose coverage is spiking versus a baseline. |
get_story_stats | Opt-in; Scope: CLUSTERS | Story-level publication volume or velocity over time. |
watchlists | Opt-in | List, get, or resolve organization watchlists. |
create_watchlist / update_watchlist | Opt-in | Create or partially update a watchlist. |
source_groups | Opt-in | List, get, or resolve custom source-group bundles. |
create_source_group / update_source_group | Opt-in | Create or partially update a source group. |
contact_points | Opt-in | List or get monitor notification channels (email / webhook). |
article_refresh | Opt-in | Check a refresh job or peek cached data for up to 100 article IDs. Read-only. |
Registered for every session unless ?tools= excludes them. The Insights API and Pokey backend reject calls when the key lacks Signal Insights access.
The monitoring profile includes this set. There is no Signal Insights-only profile; pass the tool names if you want only these.
| Tool | Availability | Description |
|---|---|---|
signal_insights_create_workspace | Default | Create a workspace. Call once at the start of a conversation. |
signal_insights_search_signals | Default | Search signals by name or objective. |
signal_insights_read_signal | Default | Signal metadata (classification, schema or newsletter counts). |
signal_insights_list_newsletters | Default | Newsletter titles and excerpts for a TOPIC signal. |
signal_insights_read_newsletter | Default | Full newsletter content as markdown. |
signal_insights_export_events | Default | Export EVENT / MENTIONS events to S3. Returns a preview and file path. |
signal_insights_execute_code | Default | Python in a persistent IPython kernel (pandas, numpy, matplotlib). |
signal_insights_preview_chart | Default | Render charts in the interactive chart viewer. |
signal_insights_shell | Default | Bash in the sandbox. |
signal_insights_list_files | Default | List files in the workspace. |
signal_insights_read_file | Default | Read a workspace file. |
signal_insights_write_file | Default | Write a workspace file. |
signal_insights_grep | Default | Regex search over file contents. |
signal_insights_str_replace | Default | Find and replace a string in a file. |
Hosts that support MCP prompts can invoke these playbooks:
entity_deep_divenarrative_tracecoverage_trendjournalist_beat_profilecompetitive_landscapespike_explainerOn-demand reference resources:
perigon://reference/fields — response field semanticsperigon://reference/chaining — cross-endpoint research playbooksperigon://reference/entitlements — this session's scope-to-behavior mapperigon://reference/charts — Signal Insights chart formatting rulesMCP Apps viewers (registered when any Signal Insights tool is active):
ui://signal-insights/chart-viewerui://signal-insights/export-viewersignal_insights_create_workspace once at the start of a conversation.signal_insights_execute_code and signal_insights_shell persist in that workspace. Exports land at /home/user/workspace/artifacts/ inside the sandbox.Give the model the current date (or a date tool). Some models otherwise treat their knowledge cutoff as "today" and fetch stale news.
Examples:
Registry name: io.github.goperigon/perigon-mcp-server.
server.json is the source of truth. A published version is immutable. Bump version in server.json and republish after any listing change.
This repo uses Bun. Put secrets in .dev.vars.
| Variable | Required | Description |
|---|---|---|
ANTHROPIC_API_KEY | Yes | Required for every route, including /v1/mcp. Also used by the playground chat. |
PERIGON_API_KEY | Playground | Playground default key. |
POKEY_SIGNAL_INSIGHTS_BASE_URL | No | Pokey base URL for Signal Insights. Defaults to https://api.perigon.io/pokey in Wrangler. Use http://localhost:3001 to hit a local Pokey. |
To use Perigon dashboard cookies with the playground, add this to /etc/hosts:
bun dev serves the MCP worker and the playground.
Open a GitHub issue or pull request for bugs, missing tools, or use cases. Someone at Perigon will review it.
Maintained by the Perigon team: