Introducing deep.navy
One MCP endpoint gives your agent news located by place, SEC filings and XBRL facts, satellite and weather data, public profiles and any web page.
· deep.navy · 4 min read
deep.navy is a data terminal for agents. You add one URL to your MCP client, https://mcp.deep.navy/mcp, with your API key as a bearer token, and your agent can call 17 tools across six toolsets: the web, news, SEC EDGAR, geospatial data, public profiles and monitors. Every result says where it came from. It is free while in preview, and no card is needed to create a key.
Update, October 7, 2026: company identity, US weather, World Bank indicators, EIA energy data and tenant-key management are now available. See the current documentation, Platform API and energy guide. The counts and examples below describe the original release.
This post shows what your agent gets back. Every example below is a real call made on production on 5 October 2026, trimmed so it stays readable.
Connect it in one command
Claude Code takes the endpoint as one command. Keep the key in an environment variable rather than in the command:
claude mcp add --scope user --transport http deepnavy https://mcp.deep.navy/mcp --header "Authorization: Bearer $DEEPNAVY_KEY"User scope makes deep.navy available in every project; --scope project writes a shareable .mcp.json for a team repo instead.
Cursor reads the same URL and header from mcp.json, and Claude Desktop reaches it through the mcp-remote bridge; the docs have the snippets for each. Every toolset is also served on its own endpoint, so an agent that only needs filings can be given https://mcp.deep.navy/edgar and nothing else. You switch tools on and off per account in the dashboard, and /mcp serves exactly the tools you enabled.
News that knows where it happened
news_search is keyword search over news articles, with filters for recency, publication date and domain. Its near filter finds articles by place. Each article carries location signals assigned when it was indexed, and each signal keeps the evidence for it: the page’s schema.org markup, the dateline the story opens with, or the outlet’s place of publication on Wikidata. Nothing is guessed from body text.
Asked for this week’s articles mentioning “contract” that were filed from California, news_search returned a BioSpace press release, and this is why it matched:
{
"basis": "BASIS_DATELINE",
"name": "San Diego",
"ruleId": "geo.news.v1/dateline",
"evidence": "SAN DIEGO-"
}The story opens with the dateline SAN DIEGO-, and San Diego is in California, so the article matched by administrative containment. Your agent can show that reason to a person, or check it by opening the article with web_fetch.
Filings by section, numbers by fact
edgar_search finds 10-K, 10-Q and 8-K filings by keywords, ticker, form type and filing date. edgar_fetch returns one filing as markdown, or one section of it such as Item 1A, with the accession number and the sec.gov URL it came from. With a facts query it returns XBRL financial facts under the company’s own tags instead. Asked for Apple’s NetIncomeLoss for calendar 2025, it returned this:
{
"concept": "NetIncomeLoss",
"unit": "USD",
"value": 112010000000,
"fiscalYear": "2025",
"form": "10-K",
"accession": "0000320193-25-000079",
"frame": "CY2025"
}The accession number points to the 10-K the figure was reported in, so the number can be traced to its filing.
Satellite, weather and places, as STAC
geo_search searches earth-observation catalogs by place, time and filters and returns a STAC 1.1 ItemCollection that pystac, QGIS and any STAC client read as it is. The datasets are Sentinel-2 Level-2A, NOAA GOES-18 and GOES-19 imagery and fire detection, HRRR forecasts and ISD station observations, and geo_places resolves a name to an Overture Maps place and, on request, its boundary.
Asked for the clearest Sentinel-2 scene over Los Angeles since 20 September, it returned item S2C_T11SLT_20261004T184227_L2A, captured on 4 October with eo:cloud_cover at 0.0038 percent. Every asset in it is marked public, so the files download from the AWS Open Data bucket with no account.
Any page, with its history
web_fetch returns any URL as main-content markdown, plain text or the original HTML, from the index when a stored copy is fresh enough and live otherwise, and it tells your agent which one it got. Every fetch is stored, and a new version is written only when the main content changes. web_versions lists a page’s versions and web_diff returns the unified diff between any two: on the Hacker News front page, versions 1 and 2 were four minutes apart, and the diff shows the points and comment counts that moved.
People and monitors, in beta
people_search searches public profile pages that people publish about themselves, starting from about 125,000 people Wikidata lists with an official website and an English Wikipedia article. A result carries only what the page publishes about its subject, never an email address or a phone number, and names the rule that decided the page is a profile.
A monitor is a news_search, edgar_search or geo_search request saved with a trigger and a webhook. Realtime monitors deliver each new match within about a minute of it being indexed, and interval monitors deliver a digest every hour, six hours, day or seven days. Every delivery is signed with HMAC-SHA256 in a Deepnavy-Signature header, so your service can check it came from deep.navy. Your agent can create its own monitors with monitor_create.
Try it
Create a key, add the URL to your client, and ask your agent for a filing, a scene or the news near a place. Everything is free while in preview. The docs list every argument and every field, features shows a real call for each toolset, and pricing has the plans that apply once billing starts.