Perigon MCP Server
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Perigon MCP Serverwhat are the top tech headlines from the past 24 hours?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Quick start
Endpoint: https://mcp.perigon.io/v1/mcp
Try it in the playground (requires a signed-in Perigon dashboard session). Human-oriented setup: perigon.io/docs/api/mcp. Install with an agent: pass perigon.io/mcp.md to your AI client and follow the steps (OAuth sign-in, no API key in chat).
OAuth (recommended)
Add the server URL only. On first connect, the client discovers OAuth metadata and opens Perigon sign-in. See Authentication.
Native Streamable HTTP:
{
"mcpServers": {
"perigon": {
"url": "https://mcp.perigon.io/v1/mcp",
"type": "http"
}
}
}mcp-remote (clients without native HTTP):
{
"mcpServers": {
"perigon": {
"command": "npx",
"args": ["-y", "mcp-remote@latest", "https://mcp.perigon.io/v1/mcp"]
}
}
}Claude Code:
claude mcp add --transport http perigon https://mcp.perigon.io/v1/mcpThen run /mcp in Claude Code and choose Authenticate when prompted.
Codex CLI β add to ~/.codex/config.toml:
[mcp_servers.perigon]
url = "https://mcp.perigon.io/v1/mcp"Then run codex mcp login perigon.
API key (scripts and pinned keys)
Use when the client cannot complete OAuth or you need a fixed key in config. Keys from perigon.io/dev/keys.
Native Streamable HTTP:
{
"mcpServers": {
"perigon": {
"url": "https://mcp.perigon.io/v1/mcp",
"type": "http",
"headers": {
"Authorization": "Bearer YOUR_PERIGON_API_KEY"
}
}
}
}mcp-remote:
{
"mcpServers": {
"perigon": {
"command": "npx",
"args": [
"-y",
"mcp-remote@latest",
"https://mcp.perigon.io/v1/mcp",
"--header",
"Authorization: Bearer ${PERIGON_API_KEY}"
],
"env": {
"PERIGON_API_KEY": "YOUR_PERIGON_API_KEY"
}
}
}
}Claude Code:
claude mcp add --transport http perigon https://mcp.perigon.io/v1/mcp \
--header "Authorization: Bearer YOUR_PERIGON_API_KEY"SSE at /v1/sse exists for legacy clients. Use Streamable HTTP for new integrations.
Authentication
The MCP endpoint accepts Authorization: Bearer credentials in two forms:
Method | Bearer value | Best for |
OAuth | MCP access token from the Perigon authorization flow | Desktop and IDE MCP clients; access follows your org membership |
API key | Perigon API key from the developer dashboard | Scripts, |
OAuth
Hosted discovery (production):
Protected resource:
https://mcp.perigon.io/.well-known/oauth-protected-resource(alias:https://mcp.perigon.io/.well-known/oauth-protected-resource/v1/mcp)Authorization server metadata:
https://mcp.perigon.io/.well-known/oauth-authorization-server
Clients discover the authorization, token, and registration endpoints from the authorization server metadata (PKCE required).
The client completes the standard authorization-code flow with PKCE, then sends the resulting access token on every MCP request.
Sign-in requires a verified Perigon user with at least User role in the organization.
Usage is billed to your organization. No API key is needed in the client.
Revoking MCP access or removing a member takes effect on the next request.
Unauthenticated requests receive 401 with a WWW-Authenticate header pointing at the protected-resource metadata URL.
API key
Create or copy a key at perigon.io/dev/keys and set it in the clientβs Authorization header (see Quick start examples). Scopes and quotas follow that key.
Choosing tools
Append ?tools= to the MCP URL to limit the session. ?tool= is an alias and wins if both are present.
https://mcp.perigon.io/v1/mcp?tools=search_news_articles,search_news_stories
https://mcp.perigon.io/v1/mcp?tools=research
https://mcp.perigon.io/v1/mcp?tools=research,create_monitor
https://mcp.perigon.io/v1/mcp?tools=allComma-separated tool names, profile aliases, or a mix.
The filter intersects with what your credentials allow (API key scopes or your orgβs MCP access for OAuth). It cannot expand access.
Omit the parameter or pass an empty value β default set (opt-in tools stay off; smaller tool list for token savings).
Pass
allβ scope-allowed default tools plus every opt-in catalogue tool (monitor write, platform helpers,get_source_by_id,get_top_topics,get_story_stats, and the rest). Scope-gated search tools still require the matching permission.Unknown names are dropped. If every name is unknown, the default set is used.
Profile | Tools |
|
|
| All monitor tools (including |
|
|
|
|
get_story_stats is not in any profile. Request it by name. Requires the CLUSTERS scope.
Tools
Availability:
Default β registered when
?tools=is omitted (and the key has the listed scope, if any).Scope β registered only when the key has that permission.
Opt-in β omitted from the default set. Request by name, profile, or
?tools=all. Registration is not the same as API access.
Search
Tool | Availability | Description |
| Default | Keyword and filter search over individual articles, including Boolean queries. |
| Scope: | Clustered headlines that group related articles into one narrative. |
| Scope: | Timestamped snapshots of how a story cluster changed. |
| Scope: | Semantic search over recent articles. |
| Scope: | AI summary of matching articles, with citations. |
| Scope: | Journalist and reporter profiles. |
| Scope: | News publications and outlets. |
| Scope: | Public-figure profiles. |
| Scope: | Company profiles (domain, ticker, industry). |
| Scope: | Perigon topic taxonomy for exact topic filters. |
| Scope: | Keyword search of Wikipedia pages. |
| Scope: | Semantic search of Wikipedia pages. |
Shortcuts
Each tool looks up an entity, then searches recent articles about it.
Tool | Availability | Description |
| Scope: | Recent articles about a company looked up by name. |
| Scope: | Recent articles about a person looked up by name. |
| Scope: | Recent articles for a city, state, or country. |
Stats
Always on for any valid key. Prefer these over counting search results by hand.
Tool | Availability | Description |
| Default | Average sentiment (positive / negative / neutral) bucketed over time. |
| Default | Article publication volume bucketed over time. |
| Default | Most-mentioned topics, people, companies, cities, journalists, or sources. |
| Default | People whose coverage is spiking versus a baseline. |
| Default | Companies whose coverage is spiking versus a baseline. |
Access
Tool | Availability | Description |
| Default | This key's scopes, organization, quota, and entitlement behavior. Does not count against request quota. Call once per session, or after a 403. |
Monitors
Read tools are default. Write tools are opt-in because the shared monitor schema is large.
Tool | Availability | Description |
| Default | List and filter monitors by UUID, name, status, or EVENT / MENTIONS / TOPIC. |
| Default | Full monitor configuration. |
| Default | Structured events from EVENT and MENTIONS monitors. |
| Default | Scheduled briefings, typically from TOPIC monitors. |
| Default | Rolling AI-generated monitor summary history. |
| Default | Activate, pause, or archive a monitor. Archiving cannot be reversed through the public API. |
| Opt-in | Create a DRAFT or ACTIVE monitor. Defaults to DRAFT. |
| Opt-in | Partial update; omitted fields are preserved. |
Platform
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 |
| Opt-in | One news source by exact ID or domain. |
| Opt-in | Topics whose coverage is spiking versus a baseline. |
| Opt-in; Scope: | Story-level publication volume or velocity over time. |
| Opt-in | List, get, or resolve organization watchlists. |
| Opt-in | Create or partially update a watchlist. |
| Opt-in | List, get, or resolve custom source-group bundles. |
| Opt-in | Create or partially update a source group. |
| Opt-in | List or get monitor notification channels (email / webhook). |
| Opt-in | Check a refresh job or peek cached data for up to 100 article IDs. Read-only. |
Signal Insights
Registered for every session unless ?tools= excludes them.
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 |
| Default | Create a workspace. Call once at the start of a conversation. |
| Default | Search signals by name or objective. |
| Default | Signal metadata (classification, schema or newsletter counts). |
| Default | Newsletter titles and excerpts for a TOPIC signal. |
| Default | Full newsletter content as markdown. |
| Default | Export EVENT / MENTIONS events into your workspace. Returns a preview and file path. |
| Default | Run Python analysis in your workspace (pandas, numpy, matplotlib). |
| Default | Render charts in the interactive chart viewer. |
| Default | Run shell commands in your workspace. |
| Default | List files in the workspace. |
| Default | Read a workspace file. |
| Default | Write a workspace file. |
| Default | Regex search over file contents. |
| Default | Find and replace a string in a file. |
Prompts and resources
Hosts that support MCP prompts can invoke these playbooks:
entity_deep_divenarrative_tracecoverage_trendjournalist_beat_profilecompetitive_landscapespike_explainer
On-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 rules
MCP Apps viewers (registered when any Signal Insights tool is active):
ui://signal-insights/chart-viewerui://signal-insights/export-viewer
Monitors Insights workflow
Call
signal_insights_create_workspaceonce at the start of a conversation.Pass the returned workspace ID to every later analysis tool.
Durable files live under
artifacts/(exports and query results go there automatically). Put user-facing deliverables inartifacts/output/. File and shell tools can write elsewhere in the workspace, but onlyartifacts/is backed by persistent storage.After a sandbox restart, the workspace ID stays valid. The Jupyter kernel and in-memory Python state reset; files under
artifacts/remain. Other workspace paths may be empty on a fresh sandbox.
Prompting tips
Give the model the current date (or a date tool). Some models otherwise treat their knowledge cutoff as "today" and fetch stale news.
Examples:
Top 5 political headlines in the United States from today.
Latest tech news from California this week.
Find journalists covering renewable energy, then show their recent articles.
Search for Tesla, then find recent stories about them.
List my active event monitors and show the latest events from one of them.
Create a draft monitor for executive departures in semiconductors.
ChatGPT plugin skills
Workflow instructions for OpenAIβs plugin format live under skills/. Each skill is a folder with a SKILL.md file (YAML name + description, then procedure)βsee Skills and Build skills.
Skill | Directory | Trigger |
News research | Headlines, entities, trends, journalists, cited briefings | |
Monitor Insights | Monitors, events, newsletters, Signal Insights analysis |
Point the plugin manifest at "skills": "./skills/". You can import skills from the deployed MCP server via Scan Tools in the submission portal, or ship this directory in the plugin package.
MCP Registry
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.
Local development
This repo uses Bun. Copy .dev.vars.example to .dev.vars (gitignored) and fill in values.
Variable | Required | Description |
| Yes | Must be set for the worker to start; any non-empty value works. A real key is only needed for playground chat ( |
| Playground | Playground default key when testing with a manual API key. |
| Optional | Perigon API base URL. Defaults in |
| Optional | App base URL for the OAuth consent page linked from discovery metadata. |
| Optional | Public MCP origin used in OAuth metadata (defaults to local dev URL). |
The dev server binds to local-mcp.perigon.io (see vite.config.ts). Add this line to /etc/hosts so that hostname resolves on your machine:
127.0.0.1 local-mcp.perigon.iobun i
bun dev
bun testbun dev serves the MCP worker and the playground at https://local-mcp.perigon.io:5173.
Contributing and maintainers
Open a GitHub issue or pull request for bugs, missing tools, or use cases. Someone at Perigon will review it.
Report security issues privately. See SECURITY.md. Do not open a public issue.
Maintained by the Perigon team.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Search and analyze global news coverage and US TV transcripts via the GDELT Project APIs.
Get access to real-time and historical news data including top headlines from global sources
Real-time news search across 500,000+ sources in 60+ languages with sentiment and entities.
Web search, agentic search, news, page retrieval, sitemaps, and trending topics through Search1API.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables access to real-time news articles through search, topic headlines, full story coverage, and geo-based local news across multiple countries and languages using the Real Time News Data API.7MIT

AllNewsAPI MCPofficial
AlicenseAqualityAmaintenanceGet access to real-time and historical news data including top headlines from global sources via AllNewsAPI. Supports multiple filter options including keyword search, category, language and more351 npm1MIT- FlicenseNot gradedqualityDmaintenanceProvides access to the GNews API for searching news articles and retrieving top headlines with advanced filtering options.-
- FlicenseNot gradedqualityDmaintenanceProvides access to the GNews API for searching news articles and getting top headlines, with support for advanced query syntax, filtering, and pagination.-