Skip to main content
Glama

NarcoScope — illicit-economy evidence atlas

Server Details

Read bounded illicit-economy evidence with provenance, privacy, availability, and federation intact.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 37 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
beepboop2025/narcoscope
GitHub Stars
1

TDQS

A3.6/5.0

Scored across 14 tools

Disambiguation2/5

Several tools occupy overlapping research/context lanes: get_connected_research, research_network, get_federation, and the three get_palimpsest_* variants all surface China/BRI/corridor context with similar safety caveats. An agent selecting between them will struggle to know which boundary applies.

Naming Consistency4/5

The dominant get_<area> pattern is clear, and palimpsest variants share a get_palimpsest_* prefix. The three non-get_ exceptions (query_market_observations, list_capabilities, research_network) are recognizable but break the otherwise uniform verb-first pattern.

Tool Count4/5

14 tools is within a reasonable range for a read-only evidence atlas, and most serve a distinct data lane. However, the palimpsest trio plus connected_research and research_network adds redundancy, making the set feel slightly heavier than needed.

Completeness4/5

For a read-only atlas, coverage is strong: overview, detailed observations, catalog, stories, entities, research context, and capabilities are all present. The main gap is that several described next steps like LiquiLens filings and Undertow liquidity are not exposed as tools, leaving those threads as dead ends within the server.

Available Tools

14 tools
get_atlasQuery the illicit-economy atlasA
Read-only
Inspect

Return country-year organized-crime and firearms-tracing observations with source metadata, native caveats, explicit null fields, and stable cursor pagination. No records identify people or operational locations.

ParametersJSON Schema
NameRequiredDescriptionDefault
iso3No
yearNo
limitNo
cursorNo
domainNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
queryYes
schemaYes
statusYes
recordsYes
sourcesYes
limitationsYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false; the description adds further behavioral context: output includes source metadata and native caveats, missing data is explicit null, pagination uses stable cursors, and records never identify people or operational locations. This goes beyond the annotations and does not contradict them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The first sentence front-loads the return scope and key output traits; the second adds a single high-value privacy constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter read-only query with an output schema present, this description covers the resource scope, output traits, pagination, and privacy boundary, which is enough to invoke correctly. It omits alternative-tool routing, but that is already scored under usage guidelines and is not required to call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It maps 'country-year' to iso3/year, names the two domain values, and implies cursor/limit via 'stable cursor pagination'. However, it does not explain limit bounds, cursor format, or the 'all' domain option, leaving the schema's patterns, defaults, and enums to carry much of the parameter-meaning burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with a specific verb ('Return') and a precise resource: country-year organized-crime and firearms-tracing observations. It adds distinctive detail—source metadata, native caveats, explicit null fields, stable cursor pagination, and a privacy boundary—that separates it from siblings like get_entities or get_overview.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for when to use the tool: when country-year organized-crime or firearms-tracing observations are needed. It also states an implicit when-not ('No records identify people or operational locations'), but does not name an alternative sibling tool or provide explicit routing conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_connected_researchRead China and regional economic researchA
Read-only
Inspect

Return source-linked China economic findings, CPEC, Balochistan, BRI and Myanmar research questions, reporting metadata, and dated national indicators. Optional hash-bound observatory summaries add economic histories, EU-reported trade and official methodology cases. SAFE quantities remain private. Country and theme context only; gaps do not establish concealment, actor relationships or causality.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
schemaYes
sha256Yes
source_urlYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds meaningful behavioral context: 'SAFE quantities remain private' and 'Country and theme context only; gaps do not establish concealment, actor relationships or causality.' This goes beyond the annotations by clarifying what the tool will not reveal and how to interpret missing data. It also discloses the optional hash-bound summaries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three substantive sentences: the first lists core outputs, the second describes optional additions, and the third states privacy and interpretative safeguards. The content is front-loaded, dense, and every clause adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with an output schema, the description sufficiently covers what is returned, what remains private, and how to interpret gaps. It does not explain when to prefer this tool over sibling research tools, but the topic specificity and output schema carry most of the invocation burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters with an empty schema and 100% schema description coverage, so the baseline is 4. The description mentions 'Optional hash-bound observatory summaries' without tying them to a parameter, but since the schema disallows additional properties this is not a parameter conflict; no parameter explanation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Return' and names a concrete resource: source-linked China economic findings, CPEC, Balochistan, BRI and Myanmar research questions, reporting metadata, and dated national indicators. This is specific and conveys a clear read/research purpose, though it does not explicitly contrast with sibling tools such as get_palimpsest_bri_context, so some overlap ambiguity remains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use guidance is provided. The caveats about SAFE quantities and gaps describe interpretation limits, not selection criteria or alternatives. An agent would have to infer when this tool is appropriate based on the topic list, leaving usage to inference rather than direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_entitiesQuery privacy-minimized OFAC designation identitiesA
Read-only
Inspect

Return approved public designation identity fields only. A designation is an administrative action, not an adjudication or proof of guilt; aliases, addresses, dates of birth, identity documents, and allegation text are withheld.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
cursorNo
countryNo
programNo
entity_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
errorYes
queryYes
schemaYes
sourceYes
statusYes
privacyYes
recordsYes
disclaimerYes

TDQS

A3.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only/destructive annotations, the description discloses that this is a limited data view ('approved public designation identity fields only') and explicitly lists withheld categories: aliases, addresses, dates of birth, identity documents, and allegation text. It also adds important context that a designation is not an adjudication or proof of guilt.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences with no filler. The core behavior is stated first, and the withheld-field detail earns its place by setting expectations for the response.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema and annotations cover return format and safety, and the description clarifies data limitations. But with six undocumented parameters and no guidance on filtering or pagination, the definition is not fully complete for an agent deciding how to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description needed to explain the six parameters. It does not: query, limit, cursor, country, program, and entity_type are all undocumented, and opaque enum values such as 'SDNTK' and 'ILLICIT-DRUGS-EO14059' are left unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb and resource: 'Return approved public designation identity fields only.' It clearly identifies the domain (OFAC designation identities) and distinguishes the tool from siblings by subject matter, even without naming alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is an implied use case: when an agent needs public OFAC designation identity fields rather than full records. However, the description does not explicitly state when to use this tool over siblings, nor does it mention exclusions or alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_federationRead Seiche and Palimpsest as separate evidence lanesA
Read-only
Inspect

Return bounded public money-market, capital-market, BRI, or publication-rights context without cross-lane scoring, composites, causal inference, or culpability inference. Upstream unavailability stays typed.

ParametersJSON Schema
NameRequiredDescriptionDefault
laneNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
lanesYes
queryYes
policyYes
schemaYes
statusYes
limitationsYes
retrieved_atYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/destructive safety, and the description adds meaningful behavior: results are bounded, public, and free of inference/cross-lane synthesis, and upstream unavailability is preserved as typed rather than collapsed. This goes beyond the structured metadata without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences earn their place: the first states scope and exclusions, the second a key error/availability behavior. No filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a rich output schema, safe annotations, and a single optional enum parameter, the description covers purpose, boundaries, and an important upstream-availability behavior. It is missing only explicit lane-parameter semantics and sibling routing, so it is near-complete but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the prose needed to explain the lane parameter, but it never mentions 'lane', 'all', 'seiche-summary', or the palimpsest/seiche enum values. The domain labels in the description only indirectly map to enum values, leaving parameter selection semantics mostly to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Return bounded public ... context') and clearly defines the tool's lane-scoped read purpose: separate Seiche and Palimpsest evidence without cross-lane scoring or inference. This distinguishes it from synthesis-oriented siblings while matching the title's 'separate evidence lanes' framing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit negative usage rule ('without cross-lane scoring, composites, causal inference, or culpability inference'), making clear when this tool is not appropriate. It does not name alternative tools or positive when-to-use conditions, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_market_catalogDiscover granular global market evidenceA
Read-only
Inspect

List drugs, arms and informal-economy datasets, native indicator units, exact country/category/subgroup dimensions, numeric and unavailable coverage, source hashes and source-specific reuse restrictions. Legacy atlas and price histories remain distinct resources.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
schemaYes
statusYes
datasetsYes
generatedAtYes
limitationsYes
relatedResourcesYes
unavailableDatasetsYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already carry the key safety traits: readOnlyHint=true and destructiveHint=false. The description adds useful detail about what the catalog contains, including source hashes and source-specific reuse restrictions, but does not go deeper into behaviors like pagination, response size, or whether the catalog is cached. This is adequate but not exceptionally transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both information-dense. The first fronts the main purpose and enumerates the catalog's contents, while the second provides a necessary boundary against adjacent resources. No filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, read-only tool with a rich output schema and clear annotations, the description covers what the tool lists, what dimensions it exposes, and what remains out of scope. An agent has enough information to invoke it correctly and interpret the result at a high level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema is empty, so the description cannot be expected to elaborate on parameter meanings. The baseline for a zero-parameter tool is 4, and the description provides ample context about the nature of the returned catalog without needing to discuss parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with the specific verb 'List' and enumerates exactly what the tool returns: drugs, arms, informal-economy datasets, indicator units, dimensions, coverage, source hashes, and reuse restrictions. It also explicitly distinguishes legacy atlas and price histories as separate resources, making its scope clear relative to sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this tool is the entry point for discovering market catalog contents, and it draws a boundary by stating legacy atlas and price histories are distinct resources. It stops short of explicitly saying 'use get_atlas for legacy atlas data' or naming alternatives, but the distinction is sufficient for an agent to avoid misusing this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_newsroomRead the evidence newsroomB
Read-only
Inspect

List current deterministic analyses with citations, correction metadata, publication gates, and explicit evidence limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
feedsYes
titleYes
schemaYes
articlesYes
generated_atYes
verificationYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful contextual detail about what the newsroom contains, such as citations, correction metadata, publication gates, and evidence limits, but it does not explain behaviors like ordering, pagination, or what 'publication gates' mean in practice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the action and resource, then packs the relevant details into a compact list. There is no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list operation with one simple optional parameter, an output schema, and readOnly annotations, the description is fairly complete. It names the content domain and the key metadata categories. It could be stronger with sibling guidance, but that is already captured under usage guidelines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description never mentions the 'limit' parameter. The schema itself provides type, default, min, and max constraints, but the description adds no semantic meaning about how the limit affects the returned list, so it does not compensate for the missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and a specific resource ('current deterministic analyses'), and enumerates the kinds of metadata returned. It is clear what the tool does, though it does not explicitly differentiate it from sibling tools like get_story or get_overview.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus its siblings, nor any exclusions or conditions. The word 'current' implies a recency filter, but there is no actionable direction about choosing this over get_overview or get_palimpsest_bridge.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_overviewRead the official-data overviewA
Read-only
Inspect

Return bounded headline aggregates across official prices, seizures, overdose mortality, wastewater, and public designations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
schemaYes
headlineYes
divergencesYes
generated_atYes
interpretationYes
designation_programsYes
overdose_by_substanceYes
top_seizure_countriesYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safe read-only nature is covered. The description adds the useful behavioral note that aggregates are 'bounded' and 'headline', implying a curted summary rather than exhaustive data, but it does not describe pagination, rate limits, or other runtime behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the core action and scope, and every phrase adds meaning by listing the specific data domains included. There is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter overview tool with an output schema present, the description is sufficient: it names the data domains and the bounded/headline nature of the aggregate, while the output schema supplies the exact return structure. No critical information is missing for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters. Since there are no parameters to document, the description does not need to add parameter semantics, and the baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Return') with a concrete resource ('headline aggregates across official prices, seizures, overdose mortality, wastewater, and public designations'). It clearly identifies what the tool provides and is distinguishable from the sibling tools by focusing on the official-data overview domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied: an agent would use this when it needs a bounded official-data overview, not when it needs newsroom content, story details, or palimpsest context. However, the description does not explicitly state when to prefer it over alternatives or mention any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_palimpsest_bri_contextRead bounded Palimpsest Belt and Road contextA
Read-only
Inspect

Return pinned source readiness and national WDI coverage for CPEC, Gwadar, CMEC, Kyaukpyu, and Balochistan as a parallel context lane. Cross-lane drug, actor, route, guilt, political, project, causal, tactical, and navigable inference or use is prohibited.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
linksYes
schemaYes
interpretationYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint and openWorldHint, but the description adds a meaningful behavioral boundary: it explicitly forbids cross-lane drug, actor, route, guilt, political, project, causal, tactical, and navigable inference or use. This is valuable context beyond the structured annotations, clarifying the tool's limited analytical scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The main action is front-loaded, and the second sentence crisply adds the key restriction. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read tool with an output schema defined, the description fully covers purpose, scope, and the critical behavioral constraint. There is nothing an agent needs to know to invoke it correctly that is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema fully covers the interface. Per the baseline for parameterless tools, a score of 4 is appropriate; no further parameter explanation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'return' and the specific resource: pinned source readiness and national WDI coverage for CPEC, Gwadar, CMEC, Kyaukpyu, and Balochistan. It also frames this as a 'parallel context lane,' which distinguishes its scope from siblings like bridge or corridors.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a negative guideline—prohibiting cross-lane inference—but never explicitly compares itself to sibling tools or states conditions for when to choose it over them. The usage context is implied but not directly spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_palimpsest_bridgeRead the Palimpsest bridgeA
Read-only
Inspect

Return the official-only China aggregate shared with the Intelligence Commons, including disclosure and causal boundaries.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
$schemaYes
dataAsOfYes
datasetsYes
geographyYes
artifactIdYes
disclosureYes
exclusionsYes
limitationsYes
canonicalUrlYes
schemaVersionYes
interpretationYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that the output includes 'disclosure and causal boundaries', which is more about content than behavior. It does not disclose any other behavioral traits (e.g., pagination, auth requirements, rate limits). Since annotations cover the main concerns and the description adds minimal behavioral context, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-constructed sentence of 14 words. It front-loads the key information (what is returned) and avoids any filler. Every word earns its place, making it appropriately concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters) and the presence of an output schema (which the prompt states exempts the description from explaining return values), the description is complete. It clearly states what is returned, and the annotations cover safety. No critical information needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and schema description coverage is trivially 100% (no parameters to document). The description therefore does not need to add parameter semantics. As per the calibration, 0 params yields a baseline of 4, since there is nothing to explain beyond what the schema already covers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Return') and a well-defined resource ('official-only China aggregate shared with the Intelligence Commons'), and further specifies the content boundaries ('disclosure and causal boundaries'). This distinguishes it from sibling tools like get_palimpsest_bri_context or get_palimpsest_corridors, which presumably cover other aspects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus sibling tools, nor does it mention alternatives or exclusions. The intended usage is implied by the resource name, but there is no explicit routing guidance. With a clear context but no exclusions, this fits the 'clear context, no exclusions' level at best, though the lack of explicit comparison suggests score 3.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_palimpsest_corridorsRead the Palimpsest corridor overlayA
Read-only
Inspect

Return official country-level China, Pakistan, and Myanmar aggregates with missing-data, provenance, disclosure, and geography-and-time-only join rules.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
$schemaYes
dataAsOfYes
datasetsYes
artifactIdYes
disclosureYes
exclusionsYes
geographiesYes
limitationsYes
canonicalUrlYes
schemaVersionYes
interpretationYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only and non-destructive behavior. The description adds meaningful behavioral context by disclosing missing-data, provenance, disclosure, and geography-and-time-only join rules, which go beyond the annotations and help the agent understand what kind of result to expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the core action and resource, then packs necessary qualifiers into a compact list. No filler or repetition of the title; every word contributes to agent understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read tool with an output schema, the description covers the essential content: what data is returned, for which countries, and under which join/missing-data rules. Nothing critical is missing for an agent to decide whether to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters and the schema is empty, so parameter detail is not needed. The description does not waste space on parameters and instead focuses on output semantics, which is appropriate for a parameterless read-only tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Return') and resource ('official country-level China, Pakistan, and Myanmar aggregates'), plus distinctive join and provenance rules. This clearly distinguishes it from siblings like get_palimpsest_bridge and get_palimpsest_bri_context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes clear context: this tool is for official country-level corridor aggregates for three specific countries, with particular data-quality and join-rule constraints. It does not explicitly name alternatives or say when not to use it, but the specificity makes the intended use inferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_storyRead a newsroom story artifactA
Read-only
Inspect

Fetch one story as metadata, a machine brief, or the cited dossier. Use the machine brief first for agent workflows.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
artifactNomachine-brief

Output Schema

ParametersJSON Schema
NameRequiredDescription
schemaYes
articleYes
contentYes
artifactYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered structurally. The description adds value by disclosing the three return formats, enriching the agent's expectation of the response, though it does not go into detail about what each artifact mode contains. This is adequate but not rich behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero filler. The primary action is front-loaded, and the usage tip is appended as the second sentence. Every word earns its place; no redundant phrasing or restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only fetch tool with an output schema, this is largely complete: it names the resource, scope, artifact modes, and a recommended default. It does not elaborate on the semantic difference between the three artifact types or document the slug format, but these are minor gaps given the self-explanatory mode names and the presence of an output schema covering return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does explain the 'artifact' parameter's enum by naming its three modes (metadata, machine brief, dossier), adding meaning beyond the bare enum values. However, the required 'slug' parameter has no semantic or example context in either the schema (which only shows a regex pattern) or the description, leaving a gap for the one required parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Fetch) and resource (one story), and precisely defines the three artifact modes it returns: metadata, machine brief, or cited dossier. These artifact types clearly separate it from sibling tools like get_newsroom (fetches an entire newsroom), get_overview, and the get_palimpsest_* family, so an agent can distinguish it without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Offers one genuine usage tip — 'Use the machine brief first for agent workflows' — which guides the default artifact choice. However, it gives no when-not-to-use guidance and does not reference alternative tools (e.g., when to call get_newsroom or get_overview instead). The guidance is artifact-level rather than tool-selection-level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_capabilitiesDiscover NarcoScopeA
Read-only
Inspect

List the evidence explorer, newsroom, API, feeds, MCP tools, audiences, and safety boundaries.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
apiYes
mcpYes
feedsYes
schemaYes
productYes
featuredYes
boundariesYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds value by enumerating what the capability listing includes, especially 'safety boundaries,' which gives an agent a clearer picture of the tool's informational scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the verb and resource list. Every element earns its place, and there is no redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter discovery tool with an output schema and clear sibling context, the description is nearly complete. It could more explicitly frame itself as the capability discovery entry point, but nothing essential is missing for invoking it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there are no parameter semantics to clarify. The baseline of 4 applies, and the description adds useful context about what the no-argument call returns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' and names the exact scope: evidence explorer, newsroom, API, feeds, MCP tools, audiences, and safety boundaries. This clearly distinguishes it from the sibling get_* tools, which each retrieve a single specific resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description and title imply this is a discovery/entry-point tool, but it never explicitly states when to use it versus the get_* siblings. There is no direct guidance like 'use this first to see what is available' or mention of alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_market_observationsQuery granular market observationsA
Read-only
Inspect

Filter published observations by dataset, indicator, geography, category, subgroup and inclusive reference period with bounded stable pagination (default 200, maximum 500). Retain dataset hashes across pages. Units, source locators, estimates and unavailable values remain explicit. No market-size aggregation, unit conversion or causal inference.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
geoNo
fromNo
pageNo
limitNo
datasetNo
categoryNo
subgroupNo
indicatorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
schemaYes
statusYes
filtersYes
sourcesYes
datasetsYes
indicatorsYes
paginationYes
generatedAtYes
limitationsYes
observationsYes
unavailableDatasetsYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral detail beyond the readOnly/destructive annotations: stable bounded pagination with default and maximum limits, dataset hash retention across pages, and preservation of units, source locators, estimates, and unavailable values. It also states what the tool will not do, which is valuable calibration for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the first sentence states purpose and main filters, the second covers cross-page behavior, and the third clarifies output fidelity and non-transformations. Every sentence earns its place and no redundant filler is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 9-parameter schema, the output schema, and annotations already covering safety, the description is complete enough for correct invocation. It covers filter semantics, pagination behavior, output richness, and important exclusions. The only minor omission is naming a fallback tool for aggregation, but that is more of a usability nicety than a correctness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description compensates by assigning semantic meaning to most parameters: dataset, indicator, geography, category, subgroup, inclusive from/to reference period, and pagination limits. It does not explicitly describe the page parameter by name, though the concept of stable pagination across pages makes its role inferable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Filter') and a distinct resource ('published observations'), then enumerates the exact filtering dimensions: dataset, indicator, geography, category, subgroup, and reference period. This clearly distinguishes the tool from the sibling get_* tools, especially get_market_catalog, which targets catalog metadata rather than observation records.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states when to use the tool: retrieving granular published observations matching the given filters. It also draws a clear 'when-not' boundary by explicitly excluding market-size aggregation, unit conversion, and causal inference, preventing misuse. It does not name a specific alternative sibling tool, but the context is strong enough for an agent to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

research_networkConnect global evidence with funding and institution researchB
Read-only
Inspect

Read Palimpsest’s complete source catalog by topic alongside Seiche funding context, with next steps into LiquiLens filings and Undertow liquidity. Source dates, rights and missingness stay attached; no actor, route, criminal or causal inference is implied.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
topicNoall
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
schemaYes
statusYes
datasetsYes
selectionYes
eligibilityYes
context_onlyYes

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only and non-destructive behavior, and the description goes beyond them by promising that source dates, rights, and missingness stay attached. It also explicitly states that no actor, route, criminal, or causal inference is implied, which is a valuable guardrail for interpreting the output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and front-loads the core operation clearly. The second sentence adds important provenance and inference caveats. It is dense with proprietary naming, but there is no filler or redundant material.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The read-only annotations and output schema cover safety and return-shape basics, and the description adds useful behavioral constraints. However, the phrase 'with next steps into LiquiLens filings and Undertow liquidity' is vague, and the description does not explain pagination parameters, leaving moderate gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description needed to explain the parameters, but it only references 'by topic' and says nothing about limit or offset. The enum values and pagination semantics are left entirely to the agent's inference from parameter names and schema constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific operation and resource: 'Read Palimpsest's complete source catalog by topic alongside Seiche funding context.' This makes the tool's function recognizable, but it does not explicitly distinguish itself from sibling tools like get_palimpsest_bridge or get_palimpsest_corridors, and the heavy use of product names creates some ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a caller needs source catalog data combined with funding context, but it gives no explicit when-to-use or when-not-to-use guidance. No alternative tools are named, so an agent must infer selection from the many sibling get_* tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Addedresearch_network
  2. 2 tool updates
    • Addedget_market_catalog
    • Addedquery_market_observations
  3. 1 tool update
    • Changedget_connected_research1 field changed
      • addedOutput schema / properties / data / properties / observatory
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "datasets": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "maxItems": 4,
        +      "minItems": 4,
        +      "type": "array"
        +    },
        +    "findings": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "maxItems": 100,
        +      "type": "array"
        +    },
        +    "generated_at": {
        +      "type": "string"
        +    },
        +    "input_sha256": {
        +      "pattern": "^[0-9a-f]{64}$",
        +      "type": "string"
        +    },
        +    "methodology_cases": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "maxItems": 30,
        +      "type": "array"
        +    },
        +    "schema": {
        +      "const": "palimpsest.china-evidence-observatory-summary.v1"
        +    },
        +    "source_url": {
        +      "const": "https://www.palimpsest.info/china/evidence/"
        +    },
        +    "use_policy": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "actor_inference": {
        +          "const": "prohibited"
        +        },
        +        "concealment_inference": {
        +          "const": "not_established_by_gaps_or_disagreement"
        +        },
        +        "missing_values": {
        +          "const": "unavailable_not_zero"
        +        },
        +        "private_numeric_data": {
        +          "const": "excluded"
        +        }
        +      },
        +      "required": [
        +        "concealment_inference",
        +        "actor_inference",
        +        "private_numeric_data",
        +        "missing_values"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "schema",
        +    "generated_at",
        +    "source_url",
        +    "input_sha256",
        +    "datasets",
        +    "findings",
        +    "methodology_cases",
        +    "use_policy"
        +  ],
        +  "type": "object"
        +}
  4. 1 tool update
    • Addedget_connected_research
  5. 3 tool updates
    • Addedget_atlas
    • Addedget_entities
    • Addedget_federation
  6. 6 tool updates
    • Changedget_newsroom1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "articles": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "automationDisclosure": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "contentClass": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "contentHash": {
        +            "pattern": "^[a-f0-9]{64}$",
        +            "type": "string"
        +          },
        +          "correctionsStatus": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "dataAsOf": {
        +            "format": "date",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "dek": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "dossierUrl": {
        +            "format": "uri",
        +            "pattern": "^https://",
        +            "type": "string"
        +          },
        +          "htmlUrl": {
        +            "format": "uri",
        +            "pattern": "^https://",
        +            "type": "string"
        +          },
        +          "humanReviewStatus": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "machineBriefUrl": {
        +            "format": "uri",
        +            "pattern": "^https://",
        +            "type": "string"
        +          },
        +          "publishedAt": {
        +            "format": "date-time",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "revisionHash": {
        +            "pattern": "^[a-f0-9]{64}$",
        +            "type": "string"
        +          },
        +          "rightToReplyStatus": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "simulatedHumanVoicesIncluded": {
        +            "type": "boolean"
        +          },
        +          "slug": {
        +            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        +            "type": "string"
        +          },
        +          "testimonyIncluded": {
        +            "type": "boolean"
        +          },
        +          "title": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "updatedAt": {
        +            "format": "date-time",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "slug",
        +          "title",
        +          "dek",
        +          "contentClass",
        +          "dataAsOf",
        +          "publishedAt",
        +          "updatedAt",
        +          "htmlUrl",
        +          "dossierUrl",
        +          "machineBriefUrl",
        +          "revisionHash",
        +          "contentHash",
        +          "automationDisclosure",
        +          "humanReviewStatus",
        +          "correctionsStatus",
        +          "rightToReplyStatus",
        +          "testimonyIncluded",
        +          "simulatedHumanVoicesIncluded"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 25,
        +      "type": "array"
        +    },
        +    "feeds": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "atom": {
        +          "format": "uri",
        +          "pattern": "^https://",
        +          "type": "string"
        +        },
        +        "json": {
        +          "format": "uri",
        +          "pattern": "^https://",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "json",
        +        "atom"
        +      ],
        +      "type": "object"
        +    },
        +    "generated_at": {
        +      "format": "date-time",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "schema": {
        +      "const": "narcoscope.api.newsroom.v1"
        +    },
        +    "title": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "verification": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "banned_claim_matches": {
        +          "minimum": 0,
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "citation_coverage": {
        +          "additionalProperties": true,
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "gates": {
        +          "items": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "type": [
        +            "array",
        +            "null"
        +          ]
        +        },
        +        "pipeline_version": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "source_inventory": {
        +          "additionalProperties": true,
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "visual_citation_coverage": {
        +          "additionalProperties": true,
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "pipeline_version",
        +        "gates",
        +        "citation_coverage",
        +        "visual_citation_coverage",
        +        "source_inventory",
        +        "banned_claim_matches"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "schema",
        +    "generated_at",
        +    "title",
        +    "articles",
        +    "feeds",
        +    "verification"
        +  ],
        +  "type": "object"
        +}
    • Changedget_overview1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "designation_programs": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "count": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "label": {
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "label",
        +          "count"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "divergences": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "demandLabel": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "demandPct": {
        +            "type": "number"
        +          },
        +          "label": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "reading": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "supplyLabel": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "supplyPct": {
        +            "type": "number"
        +          },
        +          "window": {
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "window",
        +          "supplyLabel",
        +          "supplyPct",
        +          "demandLabel",
        +          "demandPct",
        +          "reading"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "generated_at": {
        +      "format": "date",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "headline": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "designations": {
        +          "minimum": 0,
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "seizureCountries": {
        +          "minimum": 0,
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "seizureYear": {
        +          "minimum": 1900,
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "usOverdoseLatest": {
        +          "minimum": 0,
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "usOverdoseWindow": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "usOverdoseYear": {
        +          "minimum": 1900,
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "usOverdoseYoY": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "wastewaterCities": {
        +          "minimum": 0,
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "worldSeizureTonnes": {
        +          "minimum": 0,
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "usOverdoseLatest",
        +        "usOverdoseYoY",
        +        "usOverdoseYear",
        +        "usOverdoseWindow",
        +        "worldSeizureTonnes",
        +        "seizureYear",
        +        "designations",
        +        "seizureCountries",
        +        "wastewaterCities"
        +      ],
        +      "type": "object"
        +    },
        +    "interpretation": {
        +      "items": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "minItems": 1,
        +      "type": "array"
        +    },
        +    "note": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "overdose_by_substance": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "deaths": {
        +            "minimum": 0,
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "label": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "substance": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "yoy": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "substance",
        +          "label",
        +          "deaths",
        +          "yoy"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "schema": {
        +      "const": "narcoscope.api.overview.v1"
        +    },
        +    "top_seizure_countries": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "iso3": {
        +            "pattern": "^[A-Z]{3}$",
        +            "type": "string"
        +          },
        +          "kg": {
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "name": {
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "iso3",
        +          "name",
        +          "kg"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 10,
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "schema",
        +    "generated_at",
        +    "note",
        +    "headline",
        +    "overdose_by_substance",
        +    "top_seizure_countries",
        +    "designation_programs",
        +    "divergences",
        +    "interpretation"
        +  ],
        +  "type": "object"
        +}
    • Changedget_palimpsest_bridge1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "dataset": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "data": {
        +          "type": "object"
        +        },
        +        "datasetId": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "limitations": {
        +          "items": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "minItems": 1,
        +          "type": "array"
        +        },
        +        "measurement": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "grain": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "method": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "status": {
        +              "enum": [
        +                "official_reported",
        +                "official_action_record"
        +              ]
        +            },
        +            "unit": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "valueType": {
        +              "enum": [
        +                "statistical_measurement",
        +                "administrative_measurement",
        +                "administrative_action"
        +              ]
        +            }
        +          },
        +          "required": [
        +            "status",
        +            "valueType",
        +            "method",
        +            "unit",
        +            "grain"
        +          ],
        +          "type": "object"
        +        },
        +        "provenance": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "documentSha256": {
        +              "pattern": "^[a-f0-9]{64}$",
        +              "type": "string"
        +            },
        +            "input": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "path": {
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "sha256": {
        +                  "pattern": "^[a-f0-9]{64}$",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "path",
        +                "sha256"
        +              ],
        +              "type": "object"
        +            },
        +            "localDataDate": {
        +              "format": "date",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "publisher": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "retrievedAt": {
        +              "format": "date-time",
        +              "type": "string"
        +            },
        +            "sourceEdition": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "title": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "url": {
        +              "format": "uri",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "publisher",
        +            "title",
        +            "url",
        +            "sourceEdition",
        +            "localDataDate",
        +            "input"
        +          ],
        +          "type": "object"
        +        },
        +        "sourceStatus": {
        +          "const": "official"
        +        },
        +        "temporalCoverage": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "fromYear": {
        +              "type": [
        +                "integer",
        +                "null"
        +              ]
        +            },
        +            "kind": {
        +              "enum": [
        +                "year_range",
        +                "snapshot"
        +              ]
        +            },
        +            "snapshotDate": {
        +              "format": "date",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "toYear": {
        +              "type": [
        +                "integer",
        +                "null"
        +              ]
        +            }
        +          },
        +          "required": [
        +            "kind",
        +            "fromYear",
        +            "toYear",
        +            "snapshotDate"
        +          ],
        +          "type": "object"
        +        },
        +        "topic": {
        +          "minLength": 1,
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "datasetId",
        +        "topic",
        +        "sourceStatus",
        +        "measurement",
        +        "temporalCoverage",
        +        "provenance",
        +        "data",
        +        "limitations"
        +      ],
        +      "type": "object"
        +    },
        +    "ofacDesignationData": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "byEntityType": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              "entityType": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "entityType",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "byProgram": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              "label": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "program": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "program",
        +              "label",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "multiCountryRecordCount": {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        "narcoticsSpecificProgramRecordCount": {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        "recordCount": {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        "tcoOnlyRecordCount": {
        +          "minimum": 0,
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "recordCount",
        +        "narcoticsSpecificProgramRecordCount",
        +        "tcoOnlyRecordCount",
        +        "byEntityType",
        +        "byProgram",
        +        "multiCountryRecordCount"
        +      ],
        +      "type": "object"
        +    },
        +    "precursorCorridorData": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "contextRecords": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "allocationStatus": {
        +                "const": "not_reported_by_origin_destination_pair"
        +              },
        +              "contextId": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "countScope": {
        +                "const": "four_reporting_countries_operation_total"
        +              },
        +              "destinations": {
        +                "items": {
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "minItems": 1,
        +                "type": "array",
        +                "uniqueItems": true
        +              },
        +              "operationReportedSeizureCount": {
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "origins": {
        +                "items": {
        +                  "minLength": 1,
        +                  "type": "string"
        +                },
        +                "minItems": 1,
        +                "type": "array",
        +                "uniqueItems": true
        +              },
        +              "precursor": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "recordKind": {
        +                "const": "qualitative_context"
        +              },
        +              "sourceLocator": {
        +                "$ref": "#/$defs/sourceLocator"
        +              },
        +              "summary": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "year": {
        +                "minimum": 1900,
        +                "type": "integer"
        +              }
        +            },
        +            "required": [
        +              "contextId",
        +              "precursor",
        +              "origins",
        +              "destinations",
        +              "year",
        +              "recordKind",
        +              "allocationStatus",
        +              "operationReportedSeizureCount",
        +              "countScope",
        +              "summary",
        +              "sourceLocator"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "corridors": {
        +          "items": {
        +            "additionalProperties": false,
        +            "allOf": [
        +              {
        +                "if": {
        +                  "properties": {
        +                    "aggregationEligibility": {
        +                      "const": "eligible"
        +                    }
        +                  },
        +                  "required": [
        +                    "aggregationEligibility"
        +                  ],
        +                  "type": "object"
        +                },
        +                "then": {
        +                  "properties": {
        +                    "aggregationGroup": {
        +                      "type": "string"
        +                    },
        +                    "quantityRelation": {
        +                      "const": "exact"
        +                    },
        +                    "recordKind": {
        +                      "not": {
        +                        "const": "derived_subtotal"
        +                      }
        +                    }
        +                  },
        +                  "type": "object"
        +                }
        +              },
        +              {
        +                "else": {
        +                  "properties": {
        +                    "aggregationEligibility": {
        +                      "const": "ineligible_non_exact"
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                "if": {
        +                  "properties": {
        +                    "quantityRelation": {
        +                      "const": "exact"
        +                    }
        +                  },
        +                  "required": [
        +                    "quantityRelation"
        +                  ],
        +                  "type": "object"
        +                },
        +                "then": {
        +                  "properties": {
        +                    "aggregationEligibility": {
        +                      "not": {
        +                        "const": "ineligible_non_exact"
        +                      }
        +                    }
        +                  },
        +                  "type": "object"
        +                }
        +              },
        +              {
        +                "if": {
        +                  "properties": {
        +                    "recordKind": {
        +                      "const": "derived_subtotal"
        +                    }
        +                  },
        +                  "required": [
        +                    "recordKind"
        +                  ],
        +                  "type": "object"
        +                },
        +                "then": {
        +                  "properties": {
        +                    "aggregationEligibility": {
        +                      "const": "ineligible_derived"
        +                    },
        +                    "aggregationGroup": {
        +                      "const": null
        +                    }
        +                  },
        +                  "type": "object"
        +                }
        +              },
        +              {
        +                "if": {
        +                  "properties": {
        +                    "aggregationEligibility": {
        +                      "const": "ineligible_derived"
        +                    }
        +                  },
        +                  "required": [
        +                    "aggregationEligibility"
        +                  ],
        +                  "type": "object"
        +                },
        +                "then": {
        +                  "properties": {
        +                    "aggregationGroup": {
        +                      "const": null
        +                    },
        +                    "recordKind": {
        +                      "const": "derived_subtotal"
        +                    }
        +                  },
        +                  "type": "object"
        +                }
        +              },
        +              {
        +                "if": {
        +                  "properties": {
        +                    "aggregationEligibility": {
        +                      "const": "ineligible_incompatible_basis"
        +                    }
        +                  },
        +                  "required": [
        +                    "aggregationEligibility"
        +                  ],
        +                  "type": "object"
        +                },
        +                "then": {
        +                  "properties": {
        +                    "aggregationGroup": {
        +                      "const": null
        +                    }
        +                  },
        +                  "type": "object"
        +                }
        +              }
        +            ],
        +            "properties": {
        +              "aggregationEligibility": {
        +                "enum": [
        +                  "eligible",
        +                  "ineligible_non_exact",
        +                  "ineligible_derived",
        +                  "ineligible_incompatible_basis"
        +                ]
        +              },
        +              "aggregationGroup": {
        +                "oneOf": [
        +                  {
        +                    "enum": [
        +                      "mdma_precursor_substance_mass",
        +                      "meth_pre_precursor_substance_mass",
        +                      "pseudoephedrine_preparation_gross_mass",
        +                      "potassium_permanganate_substance_mass",
        +                      "pseudoephedrine_preparation_mass"
        +                    ]
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              },
        +              "destination": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "incidentCount": {
        +                "minimum": 1,
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "originAttribution": {
        +                "enum": [
        +                  "china_only",
        +                  "joint_origin_includes_china"
        +                ]
        +              },
        +              "precursor": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "quantityBasis": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "quantityKg": {
        +                "minimum": 0,
        +                "type": "number"
        +              },
        +              "quantityRelation": {
        +                "enum": [
        +                  "exact",
        +                  "approx",
        +                  "less_than",
        +                  "greater_than"
        +                ]
        +              },
        +              "recordKind": {
        +                "enum": [
        +                  "single_incident",
        +                  "multi_incident_aggregate",
        +                  "annual_aggregate",
        +                  "derived_subtotal"
        +                ]
        +              },
        +              "reportedOrigin": {
        +                "minLength": 1,
        +                "type": "string"
        +              },
        +              "seizureLocation": {
        +                "minLength": 1,
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "sourceLocator": {
        +                "$ref": "#/$defs/sourceLocator"
        +              },
        +              "transit": {
        +                "minLength": 1,
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "year": {
        +                "minimum": 1900,
        +                "type": "integer"
        +              }
        +            },
        +            "required": [
        +              "originAttribution",
        +              "reportedOrigin",
        +              "transit",
        +              "destination",
        +              "seizureLocation",
        +              "year",
        +              "precursor",
        +              "quantityKg",
        +              "quantityRelation",
        +              "quantityBasis",
        +              "recordKind",
        +              "aggregationEligibility",
        +              "aggregationGroup",
        +              "incidentCount",
        +              "sourceLocator"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "includedContextRecordCount": {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        "includedQuantitativeRecordCount": {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        "quantityAggregation": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "else": {
        +                "properties": {
        +                  "aggregationGroup": {
        +                    "const": null
        +                  },
        +                  "summedQuantityKg": {
        +                    "const": null
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "if": {
        +                "properties": {
        +                  "status": {
        +                    "const": "computed_exact_only"
        +                  }
        +                },
        +                "required": [
        +                  "status"
        +                ],
        +                "type": "object"
        +              },
        +              "then": {
        +                "properties": {
        +                  "aggregationGroup": {
        +                    "enum": [
        +                      "mdma_precursor_substance_mass",
        +                      "meth_pre_precursor_substance_mass",
        +                      "pseudoephedrine_preparation_gross_mass",
        +                      "potassium_permanganate_substance_mass",
        +                      "pseudoephedrine_preparation_mass"
        +                    ]
        +                  },
        +                  "eligibleRecordCount": {
        +                    "minimum": 1,
        +                    "type": "integer"
        +                  },
        +                  "summedQuantityKg": {
        +                    "type": "number"
        +                  }
        +                },
        +                "type": "object"
        +              }
        +            }
        +          ],
        +          "properties": {
        +            "aggregationGroup": {
        +              "oneOf": [
        +                {
        +                  "enum": [
        +                    "mdma_precursor_substance_mass",
        +                    "meth_pre_precursor_substance_mass",
        +                    "pseudoephedrine_preparation_gross_mass",
        +                    "potassium_permanganate_substance_mass",
        +                    "pseudoephedrine_preparation_mass"
        +                  ]
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "eligibleRecordCount": {
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "exactRecordCount": {
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "excludedRecordCount": {
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "nonExactRecordCount": {
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "status": {
        +              "enum": [
        +                "computed_exact_only",
        +                "not_computed_non_exact_inputs",
        +                "not_computed_ineligible_exact_inputs",
        +                "not_computed_mixed_aggregation_groups",
        +                "not_computed_no_records"
        +              ]
        +            },
        +            "summedQuantityKg": {
        +              "minimum": 0,
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            }
        +          },
        +          "required": [
        +            "status",
        +            "exactRecordCount",
        +            "nonExactRecordCount",
        +            "eligibleRecordCount",
        +            "excludedRecordCount",
        +            "aggregationGroup",
        +            "summedQuantityKg"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "includedQuantitativeRecordCount",
        +        "includedContextRecordCount",
        +        "quantityAggregation",
        +        "corridors",
        +        "contextRecords"
        +      ],
        +      "type": "object"
        +    },
        +    "sourceLocator": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "paragraph": {
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "pdfPage": {
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "printedPage": {
        +          "minimum": 1,
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "pdfPage",
        +        "printedPage",
        +        "paragraph"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "$id": "urn:narcoscope:mcp-output:palimpsest-bridge:v1",
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "$schema": {
        +      "const": "./narcoscope-palimpsest-v1.schema.json"
        +    },
        +    "artifactId": {
        +      "const": "narcoscope.china.official-coverage"
        +    },
        +    "canonicalUrl": {
        +      "format": "uri",
        +      "pattern": "^https://",
        +      "type": "string"
        +    },
        +    "dataAsOf": {
        +      "format": "date",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "datasets": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "drugSeizures": {
        +          "allOf": [
        +            {
        +              "$ref": "#/$defs/dataset"
        +            },
        +            {
        +              "properties": {
        +                "datasetId": {
        +                  "const": "drug_seizures"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ]
        +        },
        +        "ofacDesignations": {
        +          "allOf": [
        +            {
        +              "$ref": "#/$defs/dataset"
        +            },
        +            {
        +              "properties": {
        +                "data": {
        +                  "$ref": "#/$defs/ofacDesignationData"
        +                },
        +                "datasetId": {
        +                  "const": "ofac_designations"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ]
        +        },
        +        "precursorCorridorIncidents": {
        +          "allOf": [
        +            {
        +              "$ref": "#/$defs/dataset"
        +            },
        +            {
        +              "properties": {
        +                "data": {
        +                  "$ref": "#/$defs/precursorCorridorData"
        +                },
        +                "datasetId": {
        +                  "const": "precursor_corridor_incidents"
        +                },
        +                "provenance": {
        +                  "properties": {
        +                    "documentSha256": {
        +                      "const": "8397f2799116fe33ce6851ec2c7e03a042886fb9c048f72cdb259724de5ddd6e"
        +                    },
        +                    "retrievedAt": {
        +                      "const": "2026-08-12T13:50:25Z"
        +                    },
        +                    "url": {
        +                      "const": "https://www.incb.org/incb/uploads/documents/Publications/AnnualReports/AR2025/Precursors_Report/E_INCB_2025_4_eng.pdf"
        +                    }
        +                  },
        +                  "required": [
        +                    "documentSha256",
        +                    "retrievedAt"
        +                  ],
        +                  "type": "object"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ]
        +        },
        +        "retailDrugPrices": {
        +          "allOf": [
        +            {
        +              "$ref": "#/$defs/dataset"
        +            },
        +            {
        +              "properties": {
        +                "datasetId": {
        +                  "const": "retail_drug_prices"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ]
        +        },
        +        "wildlifeConfiscations": {
        +          "allOf": [
        +            {
        +              "$ref": "#/$defs/dataset"
        +            },
        +            {
        +              "properties": {
        +                "datasetId": {
        +                  "const": "wildlife_confiscations"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ]
        +        }
        +      },
        +      "required": [
        +        "retailDrugPrices",
        +        "drugSeizures",
        +        "precursorCorridorIncidents",
        +        "ofacDesignations",
        +        "wildlifeConfiscations"
        +      ],
        +      "type": "object"
        +    },
        +    "disclosure": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "exactAddressDisclosure": {
        +          "const": "none"
        +        },
        +        "identifierDisclosure": {
        +          "const": "none"
        +        },
        +        "illustrativeDataIncluded": {
        +          "const": false
        +        },
        +        "level": {
        +          "const": "public_aggregate"
        +        },
        +        "runtimeCoupling": {
        +          "const": "none_static_artifact"
        +        },
        +        "sourcePolicy": {
        +          "const": "official_only"
        +        },
        +        "subjectEntityDisclosure": {
        +          "const": "none"
        +        }
        +      },
        +      "required": [
        +        "level",
        +        "sourcePolicy",
        +        "subjectEntityDisclosure",
        +        "exactAddressDisclosure",
        +        "identifierDisclosure",
        +        "illustrativeDataIncluded",
        +        "runtimeCoupling"
        +      ],
        +      "type": "object"
        +    },
        +    "exclusions": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "classification": {
        +            "enum": [
        +              "illustrative",
        +              "illustrative_or_constructed",
        +              "unreviewed_leads",
        +              "privacy_minimized"
        +            ]
        +          },
        +          "component": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "reason": {
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "component",
        +          "classification",
        +          "reason"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "geography": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "country": {
        +          "const": "China"
        +        },
        +        "iso2": {
        +          "const": "CN"
        +        },
        +        "iso3": {
        +          "const": "CHN"
        +        }
        +      },
        +      "required": [
        +        "country",
        +        "iso2",
        +        "iso3"
        +      ],
        +      "type": "object"
        +    },
        +    "interpretation": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "limitations": {
        +      "items": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "minItems": 1,
        +      "type": "array"
        +    },
        +    "schemaVersion": {
        +      "const": "narcoscope.palimpsest.china-aggregate.v1"
        +    }
        +  },
        +  "required": [
        +    "$schema",
        +    "schemaVersion",
        +    "artifactId",
        +    "dataAsOf",
        +    "geography",
        +    "disclosure",
        +    "datasets",
        +    "exclusions",
        +    "limitations",
        +    "canonicalUrl",
        +    "interpretation"
        +  ],
        +  "title": "NarcoScope public China aggregate for Palimpsest",
        +  "type": "object"
        +}
    • Changedget_palimpsest_corridors1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$defs": {
        +    "dataset": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "data": {
        +          "type": "object"
        +        },
        +        "datasetId": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "limitations": {
        +          "$ref": "#/$defs/limitations"
        +        },
        +        "measurement": {
        +          "$ref": "#/$defs/measurement"
        +        },
        +        "provenance": {
        +          "$ref": "#/$defs/provenance"
        +        },
        +        "sourceStatus": {
        +          "const": "official"
        +        },
        +        "temporalCoverage": {
        +          "$ref": "#/$defs/temporalCoverage"
        +        },
        +        "topic": {
        +          "minLength": 1,
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "datasetId",
        +        "topic",
        +        "sourceStatus",
        +        "measurement",
        +        "temporalCoverage",
        +        "provenance",
        +        "data",
        +        "limitations"
        +      ],
        +      "type": "object"
        +    },
        +    "exclusion": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "classification": {
        +          "enum": [
        +            "illustrative_or_constructed",
        +            "licensed_conflict_data",
        +            "out_of_scope",
        +            "privacy_minimized",
        +            "safety_minimized"
        +          ]
        +        },
        +        "component": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "reason": {
        +          "minLength": 1,
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "component",
        +        "classification",
        +        "reason"
        +      ],
        +      "type": "object"
        +    },
        +    "geography": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "country": {
        +          "enum": [
        +            "China",
        +            "Myanmar",
        +            "Pakistan"
        +          ]
        +        },
        +        "iso2": {
        +          "enum": [
        +            "CN",
        +            "MM",
        +            "PK"
        +          ]
        +        },
        +        "iso3": {
        +          "enum": [
        +            "CHN",
        +            "MMR",
        +            "PAK"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "country",
        +        "iso2",
        +        "iso3"
        +      ],
        +      "type": "object"
        +    },
        +    "limitations": {
        +      "items": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "minItems": 1,
        +      "type": "array"
        +    },
        +    "measurement": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "grain": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "method": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "status": {
        +          "enum": [
        +            "official_reported",
        +            "official_action_record"
        +          ]
        +        },
        +        "unit": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "valueType": {
        +          "enum": [
        +            "statistical_measurement",
        +            "administrative_measurement",
        +            "administrative_action"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "status",
        +        "valueType",
        +        "method",
        +        "unit",
        +        "grain"
        +      ],
        +      "type": "object"
        +    },
        +    "precursorData": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "contextRecords": {
        +          "items": {
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "corridors": {
        +          "items": {
        +            "$ref": "#/$defs/precursorRecord"
        +          },
        +          "type": "array"
        +        },
        +        "crossTargetBilateralRecordCount": {
        +          "const": 0
        +        },
        +        "includedContextRecordCount": {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        "includedQuantitativeRecordCount": {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        "quantityAggregation": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "reason": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "status": {
        +              "const": "not_computed_mixed_claim_semantics"
        +            },
        +            "summedQuantityKg": {
        +              "const": null
        +            }
        +          },
        +          "required": [
        +            "status",
        +            "summedQuantityKg",
        +            "reason"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "includedQuantitativeRecordCount",
        +        "includedContextRecordCount",
        +        "crossTargetBilateralRecordCount",
        +        "quantityAggregation",
        +        "corridors",
        +        "contextRecords"
        +      ],
        +      "type": "object"
        +    },
        +    "precursorRecord": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "aggregationEligibility": {
        +          "enum": [
        +            "eligible",
        +            "ineligible_non_exact",
        +            "ineligible_derived",
        +            "ineligible_incompatible_basis"
        +          ]
        +        },
        +        "aggregationGroup": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "destination": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "geographyMatches": {
        +          "items": {
        +            "enum": [
        +              "CHN",
        +              "MMR",
        +              "PAK"
        +            ]
        +          },
        +          "minItems": 1,
        +          "type": "array",
        +          "uniqueItems": true
        +        },
        +        "incidentCount": {
        +          "minimum": 1,
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "precursor": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "quantityBasis": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "quantityKg": {
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "quantityRelation": {
        +          "enum": [
        +            "exact",
        +            "approx",
        +            "less_than",
        +            "greater_than"
        +          ]
        +        },
        +        "recordKind": {
        +          "enum": [
        +            "single_incident",
        +            "multi_incident_aggregate",
        +            "annual_aggregate",
        +            "derived_subtotal"
        +          ]
        +        },
        +        "reportedOrigin": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "seizureLocation": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "sourceLocator": {
        +          "$ref": "#/$defs/sourceLocator"
        +        },
        +        "transit": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "year": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "geographyMatches",
        +        "reportedOrigin",
        +        "transit",
        +        "destination",
        +        "seizureLocation",
        +        "year",
        +        "precursor",
        +        "quantityKg",
        +        "quantityRelation",
        +        "quantityBasis",
        +        "recordKind",
        +        "aggregationEligibility",
        +        "aggregationGroup",
        +        "incidentCount",
        +        "sourceLocator"
        +      ],
        +      "type": "object"
        +    },
        +    "provenance": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "documentSha256": {
        +          "pattern": "^[a-f0-9]{64}$",
        +          "type": "string"
        +        },
        +        "input": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "path": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "sha256": {
        +              "pattern": "^[a-f0-9]{64}$",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "path",
        +            "sha256"
        +          ],
        +          "type": "object"
        +        },
        +        "localDataDate": {
        +          "format": "date",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "publisher": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "retrievedAt": {
        +          "format": "date-time",
        +          "type": "string"
        +        },
        +        "sourceEdition": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "title": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "url": {
        +          "format": "uri",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "publisher",
        +        "title",
        +        "url",
        +        "sourceEdition",
        +        "localDataDate",
        +        "input"
        +      ],
        +      "type": "object"
        +    },
        +    "sourceLocator": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "paragraph": {
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "pdfPage": {
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "printedPage": {
        +          "minimum": 1,
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "pdfPage",
        +        "printedPage",
        +        "paragraph"
        +      ],
        +      "type": "object"
        +    },
        +    "temporalCoverage": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "fromYear": {
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "kind": {
        +          "enum": [
        +            "year_range",
        +            "snapshot"
        +          ]
        +        },
        +        "snapshotDate": {
        +          "format": "date",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "toYear": {
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "kind",
        +        "fromYear",
        +        "toYear",
        +        "snapshotDate"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "$id": "urn:narcoscope:mcp-output:palimpsest-corridors:v2",
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "$schema": {
        +      "const": "./narcoscope-palimpsest-corridors-v2.schema.json"
        +    },
        +    "artifactId": {
        +      "const": "narcoscope.china-pakistan-myanmar.official-coverage"
        +    },
        +    "canonicalUrl": {
        +      "format": "uri",
        +      "pattern": "^https://",
        +      "type": "string"
        +    },
        +    "dataAsOf": {
        +      "format": "date",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "datasets": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "drugSeizures": {
        +          "allOf": [
        +            {
        +              "$ref": "#/$defs/dataset"
        +            },
        +            {
        +              "properties": {
        +                "datasetId": {
        +                  "const": "drug_seizures"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ]
        +        },
        +        "ofacDesignations": {
        +          "allOf": [
        +            {
        +              "$ref": "#/$defs/dataset"
        +            },
        +            {
        +              "properties": {
        +                "datasetId": {
        +                  "const": "ofac_designations"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ]
        +        },
        +        "precursorCorridorIncidents": {
        +          "allOf": [
        +            {
        +              "$ref": "#/$defs/dataset"
        +            },
        +            {
        +              "properties": {
        +                "data": {
        +                  "$ref": "#/$defs/precursorData"
        +                },
        +                "datasetId": {
        +                  "const": "precursor_corridor_incidents"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ]
        +        },
        +        "retailDrugPrices": {
        +          "allOf": [
        +            {
        +              "$ref": "#/$defs/dataset"
        +            },
        +            {
        +              "properties": {
        +                "datasetId": {
        +                  "const": "retail_drug_prices"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ]
        +        },
        +        "wildlifeConfiscations": {
        +          "allOf": [
        +            {
        +              "$ref": "#/$defs/dataset"
        +            },
        +            {
        +              "properties": {
        +                "datasetId": {
        +                  "const": "wildlife_confiscations"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ]
        +        }
        +      },
        +      "required": [
        +        "retailDrugPrices",
        +        "drugSeizures",
        +        "precursorCorridorIncidents",
        +        "ofacDesignations",
        +        "wildlifeConfiscations"
        +      ],
        +      "type": "object"
        +    },
        +    "disclosure": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "exactAddressDisclosure": {
        +          "const": "none"
        +        },
        +        "identifierDisclosure": {
        +          "const": "none"
        +        },
        +        "illustrativeDataIncluded": {
        +          "const": false
        +        },
        +        "joinPolicy": {
        +          "const": "geography_and_time_only"
        +        },
        +        "level": {
        +          "const": "public_country_aggregate"
        +        },
        +        "politicalOrArmedActorInference": {
        +          "const": "prohibited"
        +        },
        +        "preciseCoordinateDisclosure": {
        +          "const": "none"
        +        },
        +        "runtimeCoupling": {
        +          "const": "none_static_artifact"
        +        },
        +        "sourcePolicy": {
        +          "const": "official_only"
        +        },
        +        "subjectEntityDisclosure": {
        +          "const": "none"
        +        }
        +      },
        +      "required": [
        +        "level",
        +        "sourcePolicy",
        +        "subjectEntityDisclosure",
        +        "exactAddressDisclosure",
        +        "preciseCoordinateDisclosure",
        +        "identifierDisclosure",
        +        "illustrativeDataIncluded",
        +        "runtimeCoupling",
        +        "joinPolicy",
        +        "politicalOrArmedActorInference"
        +      ],
        +      "type": "object"
        +    },
        +    "exclusions": {
        +      "items": {
        +        "$ref": "#/$defs/exclusion"
        +      },
        +      "minItems": 5,
        +      "type": "array"
        +    },
        +    "geographies": {
        +      "items": {
        +        "$ref": "#/$defs/geography"
        +      },
        +      "maxItems": 3,
        +      "minItems": 3,
        +      "type": "array"
        +    },
        +    "interpretation": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "limitations": {
        +      "$ref": "#/$defs/limitations"
        +    },
        +    "schemaVersion": {
        +      "const": "narcoscope.palimpsest.corridor-aggregate.v2"
        +    }
        +  },
        +  "required": [
        +    "$schema",
        +    "schemaVersion",
        +    "artifactId",
        +    "dataAsOf",
        +    "geographies",
        +    "disclosure",
        +    "datasets",
        +    "exclusions",
        +    "limitations",
        +    "canonicalUrl",
        +    "interpretation"
        +  ],
        +  "title": "NarcoScope public China-Pakistan-Myanmar aggregate for Palimpsest",
        +  "type": "object"
        +}
    • Changedget_story1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "article": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "automationDisclosure": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "contentClass": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "contentHash": {
        +          "pattern": "^[a-f0-9]{64}$",
        +          "type": "string"
        +        },
        +        "correctionsStatus": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "dataAsOf": {
        +          "format": "date",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "dek": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "dossierUrl": {
        +          "format": "uri",
        +          "pattern": "^https://",
        +          "type": "string"
        +        },
        +        "htmlUrl": {
        +          "format": "uri",
        +          "pattern": "^https://",
        +          "type": "string"
        +        },
        +        "humanReviewStatus": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "id": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "machineBriefUrl": {
        +          "format": "uri",
        +          "pattern": "^https://",
        +          "type": "string"
        +        },
        +        "publishedAt": {
        +          "format": "date-time",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "revisionHash": {
        +          "pattern": "^[a-f0-9]{64}$",
        +          "type": "string"
        +        },
        +        "rightToReplyStatus": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "simulatedHumanVoicesIncluded": {
        +          "type": "boolean"
        +        },
        +        "slug": {
        +          "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        +          "type": "string"
        +        },
        +        "testimonyIncluded": {
        +          "type": "boolean"
        +        },
        +        "title": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "updatedAt": {
        +          "format": "date-time",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "slug",
        +        "title",
        +        "dek",
        +        "contentClass",
        +        "dataAsOf",
        +        "publishedAt",
        +        "updatedAt",
        +        "htmlUrl",
        +        "dossierUrl",
        +        "machineBriefUrl",
        +        "revisionHash",
        +        "contentHash",
        +        "automationDisclosure",
        +        "humanReviewStatus",
        +        "correctionsStatus",
        +        "rightToReplyStatus",
        +        "testimonyIncluded",
        +        "simulatedHumanVoicesIncluded"
        +      ],
        +      "type": "object"
        +    },
        +    "artifact": {
        +      "enum": [
        +        "metadata",
        +        "machine-brief",
        +        "dossier"
        +      ]
        +    },
        +    "content": {
        +      "additionalProperties": true,
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "schema": {
        +      "const": "narcoscope.api.story.v1"
        +    }
        +  },
        +  "required": [
        +    "schema",
        +    "artifact",
        +    "article",
        +    "content"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_capabilities1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "api": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "base_url": {
        +          "format": "uri",
        +          "pattern": "^https://",
        +          "type": "string"
        +        },
        +        "openapi": {
        +          "format": "uri",
        +          "pattern": "^https://",
        +          "type": "string"
        +        },
        +        "resources": {
        +          "items": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "base_url",
        +        "openapi",
        +        "resources"
        +      ],
        +      "type": "object"
        +    },
        +    "boundaries": {
        +      "items": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "minItems": 1,
        +      "type": "array"
        +    },
        +    "featured": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "id": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "title": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "url": {
        +            "format": "uri",
        +            "pattern": "^https://",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "outcome",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "feeds": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "atom": {
        +          "format": "uri",
        +          "pattern": "^https://",
        +          "type": "string"
        +        },
        +        "json": {
        +          "format": "uri",
        +          "pattern": "^https://",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "json",
        +        "atom"
        +      ],
        +      "type": "object"
        +    },
        +    "mcp": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "current_protocol": {
        +          "const": "2026-07-28"
        +        },
        +        "discovery_method": {
        +          "const": "server/discover"
        +        },
        +        "endpoint": {
        +          "format": "uri",
        +          "pattern": "^https://",
        +          "type": "string"
        +        },
        +        "legacy_initialization": {
        +          "const": true
        +        },
        +        "lifecycle": {
        +          "const": "stateless-per-request"
        +        },
        +        "protocol_versions": {
        +          "maxItems": 3,
        +          "minItems": 3,
        +          "prefixItems": [
        +            {
        +              "const": "2026-07-28"
        +            },
        +            {
        +              "const": "2025-06-18"
        +            },
        +            {
        +              "const": "2025-03-26"
        +            }
        +          ],
        +          "type": "array"
        +        },
        +        "tools": {
        +          "items": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "transport": {
        +          "const": "streamable-http"
        +        }
        +      },
        +      "required": [
        +        "endpoint",
        +        "transport",
        +        "current_protocol",
        +        "protocol_versions",
        +        "lifecycle",
        +        "discovery_method",
        +        "legacy_initialization",
        +        "tools"
        +      ],
        +      "type": "object"
        +    },
        +    "product": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "audience": {
        +          "items": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "name": {
        +          "const": "NarcoScope"
        +        },
        +        "promise": {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "url": {
        +          "format": "uri",
        +          "pattern": "^https://",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "name",
        +        "url",
        +        "promise",
        +        "audience"
        +      ],
        +      "type": "object"
        +    },
        +    "schema": {
        +      "const": "narcoscope.capabilities.v1"
        +    }
        +  },
        +  "required": [
        +    "schema",
        +    "product",
        +    "featured",
        +    "api",
        +    "mcp",
        +    "feeds",
        +    "boundaries"
        +  ],
        +  "type": "object"
        +}
  7. 1 tool update
    • Addedget_palimpsest_bri_context
  8. 1 tool update
    • Addedget_palimpsest_corridors
  9. 5 tool updates
    • First observedget_newsroom
    • First observedget_overview
    • First observedget_palimpsest_bridge
    • First observedget_story
    • First observedlist_capabilities

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides evidence-oriented MCP service for cryptographically identified agents, bounded public contracts, privacy-preserving records, and append-only audit.
    Apache 2.0
  • A
    license
    B
    quality
    B
    maintenance
    Provides a read-only MCP interface to query and retrieve verifiable evidence from a local memory bank, supporting search, dossier, chronology, source, and evidence tools.
    6
    BSD Zero Clause
  • F
    license
    Not graded
    quality
    C
    maintenance
    Cryptographically anchored, tamper-evident evidence receipts for AI agents — verified run receipts, existence-at-time proofs, and cited answers from an anchored public record. Remote MCP with proof-gated settlement; attests existence and integrity, never truth.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.