NarcoScopeWorld markets and illicit economies API & agents

NarcoScope for developers and agents

Build on evidence, not scraped prose.

One read-only contract exposes NarcoScope’s country-year organized-crime and firearms-tracing atlas, privacy-minimized public designations, citation-gated newsroom, and separate Seiche and Palimpsest context lanes. REST and MCP use the same validators and output schemas, so sources, clocks, caveats, privacy gates, and unavailable states survive the handoff.

Inspect the live contract Import OpenAPI View MCP manifest Read the source

Global market catalog

Discover drugs, arms and informal-economy indicators without downloading all rows. Each indicator lists its countries, categories, subgroups, native unit, reference periods and numeric coverage. Source licenses and reuse restrictions travel with the data. MCP: get_market_catalog.

curl https://narcoscope.com/api/v1/markets

Granular observations

Query an indicator, geography, category, subgroup and period. MCP: query_market_observations. Pages default to 200 observations and allow up to 500; retain dataset hashes and restart if a hash changes. Empty category or subgroup matches empty values; omit a filter to include all values.

curl 'https://narcoscope.com/api/v1/market-observations?dataset=global-arms-economy&indicator=wb-informal-dge-p&geo=CHN&category=&subgroup=&from=1990&to=2020&limit=500'

Country-year atlas

Filter source-native organized-crime or firearms-tracing records. Null means unavailable; zero remains an observed zero.

curl 'https://narcoscope.com/api/v1/atlas?domain=organized_crime&iso3=COL&year=2023&limit=25'

Public designations

Page official public identities without aliases, addresses, birth data, documents, or allegation text. Search covers official names only.

curl 'https://narcoscope.com/api/v1/entities?entity_type=organization&program=SDNTK&limit=25'

Federated context

Read Seiche money or capital markets and Palimpsest BRI or rights status as independent lanes. No shared score or causal join is produced.

curl 'https://narcoscope.com/api/v1/federation?lane=seiche-money-markets'

REST

Start with capabilities, a small overview, or the newsroom. Responses are public, cacheable JSON; malformed filters return 400 and unavailable evidence returns a typed 503.

curl https://narcoscope.com/api/v1/capabilities

API discovery

Agents can discover both the REST API and MCP service from the RFC 9727 API Catalog.

curl https://narcoscope.com/.well-known/api-catalog

MCP

Connect over stateless Streamable HTTP. get_atlas, get_entities, and get_federation mirror REST, including schema-valid unavailable results.

{"mcpServers":{"narcoscope":{"url":"https://narcoscope.com/mcp"}}}

Palimpsest corridors

Fetch official-only China, Pakistan, and Myanmar country aggregates. Use get_palimpsest_corridors over MCP or the REST path below.

curl https://narcoscope.com/api/v1/palimpsest-corridors

BRI context

Inspect CPEC, Gwadar, CMEC, Kyaukpyu, Balochistan, and WDI coverage through get_palimpsest_bri_context. It is a parallel lane, never a drug/infrastructure join.

curl https://narcoscope.com/api/v1/palimpsest-bri

Feeds

Follow stable item IDs and exact story URLs. Every newsroom item links to a machine brief and cited dossier.

/news/feed.json
/news/feed.xml

MCP 2026 requests are self-contained.

Current clients call server/discover instead of opening a session. Every request carries the protocol version and client capabilities in params._meta; Streamable HTTP mirrors the protocol, method, and tool name into headers. NarcoScope rejects missing or mismatched routing metadata. Legacy clients can still negotiate MCP 2025-06-18 with initialize.

POST /mcp
MCP-Protocol-Version: 2026-07-28
Mcp-Method: server/discover

{"jsonrpc":"2.0","id":1,"method":"server/discover","params":{"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}}}}

The safety boundary is part of the API.

Granular market observations keep reported quantities, modeled estimates and unavailable cells separate. Coverage counts distinguish numeric observations from explicit missing cells. Annual data is never disaggregated into a requested month; units are never converted or summed into an illicit-market total. Catalog hashes identify exact packaged data bytes, while source hashes and worksheet or table locators identify original evidence. Each source’s license and notes govern reuse; the application’s code license does not override data restrictions.

NarcoScope exposes aggregate published evidence—not point-of-sale, real-time, sub-street, navigable, synthesis-route, chemistry, or yield information. A seizure is an administrative observation, not a direct market-size estimate. A public designation is an administrative action, not proof of guilt or an adjudication; the API withholds aliases and subject-level sensitive fields. Federation lanes preserve upstream scope, status, clocks, citations, and caveats, but never join scores or infer causality or culpability. Seiche calls use one GET, zero retries, a 15-second whole-response deadline, and a 2,000,000-byte ceiling. Missing, malformed, oversized, or timed-out evidence fails closed as unavailable rather than becoming a zero.

The Palimpsest newswire-rights lane exposes only the bounded, pinned historical restriction receipt admitted by the local BRI envelope. It is not continuous monitoring and does not republish the oversized quarantined-path list. The BRI lane cannot be joined to drug-market evidence or used for drug-conflict-infrastructure causality, actor classification, bilateral route inference, guilt, political classification, or project attribution from national statistics.

Free public good · no API key · read only · Open NarcoScope