Skip to main content
Glama

NarcoScope — illicit-economy evidence atlas

Server Details

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

Ownership verified
Status
Healthy
Uptime
99.9% over 81 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
beepboop2025/narcoscope
GitHub Stars
1
ChatGPT
–
Claude
–

TDQS

A3.6/5.0

Scored across 14 tools

Disambiguation3/5

The set has several overlapping retrieval clusters: get_atlas, get_market_catalog, query_market_observations, and get_overview all return related market/observation data, while get_palimpsest_bri_context, get_palimpsest_bridge, and get_palimpsest_corridors are difficult to distinguish without close reading. Descriptions add boundary language, but an agent could still misselect among these similarly scoped evidence lanes.

Naming Consistency4/5

Names are consistently snake_case and mostly follow get_noun for retrieval, with predictable clusters such as get_palimpsest_*. The use of list_, query_, and research_ verbs is a minor deviation but still semantically readable.

Tool Count5/5

Fourteen tools is well within a reasonable range for a multi-lane evidence atlas with overview, catalog, query, research, newsroom, and context tools. Each tool appears to serve a distinct surface area, even where boundaries overlap.

Completeness4/5

For a read-only evidence atlas, the surface covers overview, detailed observations, market cataloging, entity designations, research context, newsroom stories, and capability discovery. Minor gaps include no obvious unified search across all evidence lanes, but core exploration workflows are supported.

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.

NameRequiredDescriptionDefault
iso3No
yearNo
limitNo
cursorNo
domainNoall

Output 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.

NameRequiredDescriptionDefault

No parameters

Output 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.

NameRequiredDescriptionDefault
limitNo
queryNo
cursorNo
countryNo
programNo
entity_typeNo

Output 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 lanesB
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.

NameRequiredDescriptionDefault
laneNoall

Output Schema

NameRequiredDescription
lanesYes
queryYes
policyYes
schemaYes
statusYes
limitationsYes
retrieved_atYes

TDQS

B3/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, non-destructive, closed-world), and the description adds real behavioral context beyond them: output is bounded, no cross-lane scoring or composites are produced, no causal/culpability inference is applied, and upstream failures stay 'typed' rather than being silently filled in. That is meaningful disclosure about what the caller will and won't receive.

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?

Two sentences, no filler, and the key constraint (no cross-lane scoring/composites) is front-loaded. The phrasing is dense and slightly jargon-heavy ('Upstream unavailability stays typed') but every clause carries information.

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?

An output schema exists, so return values needn't be described, and the annotations cover safety. What is missing is the lane parameter's meaning and the relationship to the many sibling read tools covering the same seiche/palimpsest domains, which is the main thing an agent needs before choosing this tool.

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 single 'lane' parameter or its seven enum values, so the only guidance comes from the enum identifiers themselves. For a tool whose whole purpose is lane selection, the description should explain what 'all' versus a specific lane returns.

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

Purpose3/5

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

The verb 'Return' plus the domains (money-market, capital-market, BRI, publication-rights) gives a rough sense of the resource, and 'without cross-lane scoring' hints at the seiche/palimpsest lane split. But the object of the tool is described only as 'bounded context,' and no sibling (get_atlas, get_palimpsest_bri_context, get_market_catalog) is named or contrasted, so an agent cannot easily tell what this returns that the siblings do not.

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 states what the tool will NOT do (no composites, no causal or culpability inference) but gives no positive trigger for when to call it, and never mentions the sibling tools that cover the same domains. An agent must infer selection from the title alone.

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

Page drugs, arms and informal-economy indicators (page/limit, maximum 4), with native units, full coverage totals and licenses for sources on the page. Country/category/subgroup/selection lists have independent dimensionPagination; follow dimensionPage with the same dataset/indicator filters (dimensionLimit maximum 50). Retain dataset hashes across pages. Legacy atlas and prices remain distinct resources.

NameRequiredDescriptionDefault
pageNo
limitNo
datasetNo
indicatorNo
dimensionPageNo
dimensionLimitNo

Output Schema

NameRequiredDescription
schemaYes
statusYes
filtersYes
datasetsYes
paginationYes
generatedAtYes
limitationsYes
relatedResourcesYes
unavailableDatasetsYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly/non-destructive/closed-world, so the safety profile is covered. The description adds genuinely new behavioral facts beyond that: hard caps of 4 items per page and 50 per dimension page, the rule that hash retention is required across pages, and that dimension lists paginate independently of the record page.

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

Conciseness3/5

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

No filler sentences, but the structure leads with paging mechanics and a parenthetical rather than with what the tool returns, burying the purpose mid-sentence. Three dense jargon sentences ask a lot of a first-time reader on a catalog-discovery tool.

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?

Output schema exists so return values needn't be described, and the paging contract is well covered. Still, for a 6-parameter tool with zero schema descriptions, an agent is left guessing how to obtain valid 'indicator' values, what the dataset enum members mean, and how to detect the end of a listing.

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?

With 0% schema coverage the description must carry the parameters, and it does define page/limit (max 4), dimensionPage/dimensionLimit (max 50) and how they interact with the dataset/indicator filters. The 'indicator' free-text parameter and the two 'dataset' enum values are left undefined, which is the main remaining gap.

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?

States the resource precisely as paginated 'drugs, arms and informal-economy indicators' and explicitly separates it from 'legacy atlas and prices' resources, which maps onto the get_atlas sibling. The retrieval verb is unusual ('Page ...') and the domain vocabulary is dense, but an agent can still tell what data comes back.

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?

Gives real conditional guidance for the pagination flow: use dimensionPage with the same dataset/indicator filters, respect dimensionLimit, and retain dataset hashes across pages. However, it never contrasts with the most relevant sibling, query_market_observations, and gives no explicit 'do not use this for X' exclusions.

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.

NameRequiredDescriptionDefault
limitNo

Output 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.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
noteYes
schemaYes
headlineYes
divergencesYes
publicationYes
generated_atYes
interpretationYes
designation_programsYes
overdose_by_substanceYes
top_seizure_countriesYes

TDQS

A3.9/5.0
Behavior4/5

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

The annotations already establish that this is a safe, read-only, closed-world operation. The description adds useful behavioral context by saying the return is 'bounded headline aggregates,' indicating limited-size summary output rather than full raw records.

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?

It is a single front-loaded sentence with no filler. Every clause identifies the return type or the covered data domains.

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 no parameters, rich annotations, and an output schema, the description supplies enough context to understand what the overview returns. The main remaining gap is the lack of explicit sibling routing, though that is primarily a usage-guidelines concern.

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 is no parameter semantics for the description to explain. The baseline for this case is 4.

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 (Return) and resource (bounded headline aggregates) and names the covered data domains, so the tool’s purpose is clear. It does not explicitly contrast itself with sibling tools such as query_market_observations or get_market_catalog, which keeps it short of a 5.

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 phrase 'headline aggregates' implies this is for summary-level overview data rather than detailed records, giving some usage context. However, there is no explicit when-to-use guidance or named alternative for detailed queries.

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.

NameRequiredDescriptionDefault

No parameters

Output 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_bridgeInspect China drug data coverageA
Read-only
Inspect

Inspect official China evidence coverage and source metadata. WDR prices and seizures are withheld pending publication permission; independently available precursor, designation and wildlife aggregates retain their provenance, disclosure and causal boundaries.

NameRequiredDescriptionDefault

No parameters

Output Schema

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

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (read-only, closed-world, non-destructive), so the description adds genuine value by disclosing partial data availability: WDR prices and seizures are withheld pending permission, while precursor, designation and wildlife aggregates retain provenance and disclosure boundaries. This tells the agent to expect gaps rather than assume missing data means zero.

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?

Two sentences, front-loaded with the core purpose followed by the caveat. The second sentence is dense with jargon ('causal boundaries', 'designation aggregates') but every clause carries information about coverage limits.

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?

An output schema exists, so return format need not be described. For a no-argument inspection tool, the description supplies the key context (what is covered, what is suppressed and why). It could go further in stating how the aggregates relate to the other palimpsest endpoints.

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?

Zero parameters with an empty schema, so there is nothing for the description to disambiguate. Baseline of 4 applies; the description adds nothing here but nothing is required.

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?

States a specific verb and resource: inspect official China evidence coverage plus source metadata. Clear enough to know what the tool returns, but it never distinguishes itself from the similarly-named siblings (get_palimpsest_bri_context, get_palimpsest_corridors), and the tool name 'bridge' is opaque relative to the description.

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?

There is no guidance on when to call this versus the other palimpsest tools, and no stated prerequisites. The note about withheld WDR data is a caveat about results, not a selection rule for the agent.

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 overlayB
Read-only
Inspect

Inspect official China, Pakistan and Myanmar evidence coverage. WDR prices and seizures are metadata-only pending publication permission; other available aggregates retain provenance, missing-data and geography-and-time-only join rules.

NameRequiredDescriptionDefault

No parameters

Output Schema

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

TDQS

B3.2/5.0
Behavior4/5

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

Beyond the annotations (readOnly/closed-world/non-destructive), the description discloses genuinely non-obvious data availability behavior: WDR prices and seizures are metadata-only pending publication permission, while other aggregates retain provenance, missing-data, and join-rule semantics. That goes well past the safety profile the annotations already cover, though the phrasing is compressed enough that the exact effect on results is hard to pin down.

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

Conciseness3/5

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

At two sentences it is appropriately short and leads with scope, but the second sentence is a run-on of domain jargon ('provenance, missing-data and geography-and-time-only join rules') that resists parsing. Brevity here comes at the cost of comprehensibility rather than being purely efficient.

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?

An output schema exists, so return-value explanation is not required, and the description does cover coverage scope and data-permission caveats. However, the central concept ('corridors' / 'palimpsest overlay') stays undefined, leaving the agent without enough understanding of what it will receive or how this differs from adjacent palimpsest tools.

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 takes zero parameters, so there is nothing to disambiguate; the baseline of 4 applies. The description references geography-and-time join rules but does not imply any input the caller must supply.

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

Purpose3/5

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

The verb 'inspect' plus 'official China, Pakistan and Myanmar evidence coverage' gives a rough scope, but the actual resource — a 'corridor overlay' — is never defined, so an agent cannot say what a corridor is or what data comes back. It also fails to distinguish itself from the closely named siblings get_palimpsest_bri_context and get_palimpsest_bridge, which are likely to be confused with it.

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 states no conditions for when to call this instead of get_palimpsest_bri_context, get_palimpsest_bridge, or get_entities, and gives no exclusions or prerequisites. An agent must guess at the routing decision purely from tool names.

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.

NameRequiredDescriptionDefault
slugYes
artifactNomachine-brief

Output 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.

NameRequiredDescriptionDefault

No parameters

Output 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.

NameRequiredDescriptionDefault
toNo
geoNo
fromNo
pageNo
limitNo
datasetNo
categoryNo
subgroupNo
indicatorNo

Output Schema

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

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint=false, so the description's real contribution is pagination behavior: bounded stable pagination, default/max limit, and retaining dataset hashes across pages. It also discloses the return posture (units, source locators, estimates, unavailable values stay explicit), which goes 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.

Conciseness4/5

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

Three tight sentences, front-loaded with the filter surface and followed by pagination and scope limits; no filler. Slightly telegraphic phrasing ('Retain dataset hashes across pages') costs a little readability but nothing is wasted.

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?

Output schema already documents the returned shape, so the description need not explain return values, and annotations cover the safety profile. What remains — filterable dimensions, pagination bounds and stability, and explicit scope exclusions — is all present, which is sufficient for a 9-parameter read tool.

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

Parameters5/5

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

With 0% schema description coverage across 9 parameters, the description carries the burden and largely succeeds: it names dataset, indicator, geography/geo, category, subgroup and the reference period (from/to) as filters, and clarifies the period is inclusive — a genuine semantic addition the schema's regex does not convey. Pagination parameters are also given default 200 / max 500 and cross-page stability, leaving only minor gaps such as the dataset enum values.

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?

States a specific verb ('Filter') and resource ('published observations') plus the exact filter dimensions, which an agent can map onto the schema properties. It clearly separates itself from catalog/metadata siblings like get_market_catalog, though it names no sibling explicitly.

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 negative constraints ('No market-size aggregation, unit conversion or causal inference') tell the agent what this tool will not answer, which is useful routing signal. However, there is no positive when-to-use guidance relative to get_market_catalog or the other siblings, so the agent must infer that this is the row-level data retrieval tool.

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.

NameRequiredDescriptionDefault
limitNo
topicNoall
offsetNo

Output 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
    • Changedget_federation1 field changed
      • changedOutput schema / properties / lanes / items / properties / transport / oneOf
        Previous value: -[
        -  {
        -    "type": "null"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "attempts": {
        -        "const": 1
        -      },
        -      "max_response_bytes": {
        -        "maximum": 2000000,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "timeout_ms": {
        -        "maximum": 15000,
        -        "minimum": 1,
        -        "type": "integer"
        -      }
        -    },
        -    "required": [
        -      "attempts",
        -      "timeout_ms",
        -      "max_response_bytes"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "type": "null"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "attempts": {
        +        "const": 1
        +      },
        +      "max_response_bytes": {
        +        "maximum": 4194304,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "timeout_ms": {
        +        "maximum": 15000,
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "attempts",
        +      "timeout_ms",
        +      "max_response_bytes"
        +    ],
        +    "type": "object"
        +  }
        +]
  2. 5 tool updates
    • Changedget_market_catalog35 fields changed
      • addedOutput schema / properties / datasets / items / properties / coverage / properties / estimated / anyOf
        Added value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / datasets / items / properties / coverage / properties / estimated / minimum
        Removed value: -0
      • removedOutput schema / properties / datasets / items / properties / coverage / properties / estimated / type
        Removed value: -"integer"
      • addedOutput schema / properties / datasets / items / properties / coverage / properties / numericObservations / anyOf
        Added value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / datasets / items / properties / coverage / properties / numericObservations / minimum
        Removed value: -0
      • removedOutput schema / properties / datasets / items / properties / coverage / properties / numericObservations / type
        Removed value: -"integer"
      • addedOutput schema / properties / datasets / items / properties / coverage / properties / observations / anyOf
        Added value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / datasets / items / properties / coverage / properties / observations / minimum
        Removed value: -0
      • removedOutput schema / properties / datasets / items / properties / coverage / properties / observations / type
        Removed value: -"integer"
      • addedOutput schema / properties / datasets / items / properties / coverage / properties / reported / anyOf
        Added value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / datasets / items / properties / coverage / properties / reported / minimum
        Removed value: -0
      • removedOutput schema / properties / datasets / items / properties / coverage / properties / reported / type
        Removed value: -"integer"
      • addedOutput schema / properties / datasets / items / properties / coverage / properties / unavailable / anyOf
        Added value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / datasets / items / properties / coverage / properties / unavailable / minimum
        Removed value: -0
      • removedOutput schema / properties / datasets / items / properties / coverage / properties / unavailable / type
        Removed value: -"integer"
      • addedOutput schema / properties / datasets / items / properties / indicators / items / properties / coverage / properties / estimated / anyOf
        Added value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / datasets / items / properties / indicators / items / properties / coverage / properties / estimated / minimum
        Removed value: -0
      • removedOutput schema / properties / datasets / items / properties / indicators / items / properties / coverage / properties / estimated / type
        Removed value: -"integer"
      • addedOutput schema / properties / datasets / items / properties / indicators / items / properties / coverage / properties / numericObservations / anyOf
        Added value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / datasets / items / properties / indicators / items / properties / coverage / properties / numericObservations / minimum
        Removed value: -0
      • removedOutput schema / properties / datasets / items / properties / indicators / items / properties / coverage / properties / numericObservations / type
        Removed value: -"integer"
      • addedOutput schema / properties / datasets / items / properties / indicators / items / properties / coverage / properties / observations / anyOf
        Added value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / datasets / items / properties / indicators / items / properties / coverage / properties / observations / minimum
        Removed value: -0
      • removedOutput schema / properties / datasets / items / properties / indicators / items / properties / coverage / properties / observations / type
        Removed value: -"integer"
      • addedOutput schema / properties / datasets / items / properties / indicators / items / properties / coverage / properties / reported / anyOf
        Added value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / datasets / items / properties / indicators / items / properties / coverage / properties / reported / minimum
        Removed value: -0
      • removedOutput schema / properties / datasets / items / properties / indicators / items / properties / coverage / properties / reported / type
        Removed value: -"integer"
      • addedOutput schema / properties / datasets / items / properties / indicators / items / properties / coverage / properties / unavailable / anyOf
        Added value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / datasets / items / properties / indicators / items / properties / coverage / properties / unavailable / minimum
        Removed value: -0
      • removedOutput schema / properties / datasets / items / properties / indicators / items / properties / coverage / properties / unavailable / type
        Removed value: -"integer"
      • addedOutput schema / properties / datasets / items / properties / indicators / items / properties / publication
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "observationScope": {
        +      "const": "published_rows_only"
        +    },
        +    "permissionEvidence": {
        +      "type": "null"
        +    },
        +    "policyId": {
        +      "const": "narcoscope.publication-rights.2026-10-28.v1"
        +    },
        +    "reason": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "sourceIds": {
        +      "items": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "type": "array",
        +      "uniqueItems": true
        +    },
        +    "status": {
        +      "enum": [
        +        "published",
        +        "partial",
        +        "metadata_only"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "policyId",
        +    "status",
        +    "sourceIds",
        +    "permissionEvidence",
        +    "observationScope",
        +    "reason"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / datasets / items / properties / indicators / items / required
        Previous value: -[
        -  "id",
        -  "sourceId",
        -  "market",
        -  "label",
        -  "unit",
        -  "measureType",
        -  "description",
        -  "limitations",
        -  "featured",
        -  "coverage",
        -  "dimensions",
        -  "dimensionPagination"
        -]New value: +[
        +  "id",
        +  "sourceId",
        +  "market",
        +  "label",
        +  "unit",
        +  "measureType",
        +  "description",
        +  "limitations",
        +  "publication",
        +  "featured",
        +  "coverage",
        +  "dimensions",
        +  "dimensionPagination"
        +]
      • addedOutput schema / properties / datasets / items / properties / publication
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "observationScope": {
        +      "const": "published_rows_only"
        +    },
        +    "permissionEvidence": {
        +      "type": "null"
        +    },
        +    "policyId": {
        +      "const": "narcoscope.publication-rights.2026-10-28.v1"
        +    },
        +    "reason": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "sourceIds": {
        +      "items": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "type": "array",
        +      "uniqueItems": true
        +    },
        +    "status": {
        +      "enum": [
        +        "published",
        +        "partial",
        +        "metadata_only"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "policyId",
        +    "status",
        +    "sourceIds",
        +    "permissionEvidence",
        +    "observationScope",
        +    "reason"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / datasets / items / required
        Previous value: -[
        -  "id",
        -  "title",
        -  "sha256",
        -  "generatedAt",
        -  "sources",
        -  "indicators",
        -  "coverage",
        -  "limitations",
        -  "sourceCount",
        -  "indicatorCount"
        -]New value: +[
        +  "id",
        +  "title",
        +  "sha256",
        +  "generatedAt",
        +  "publication",
        +  "sources",
        +  "indicators",
        +  "coverage",
        +  "limitations",
        +  "sourceCount",
        +  "indicatorCount"
        +]
      • changedOutput schema / properties / status / enum
        Previous value: -[
        -  "available",
        -  "partial",
        -  "unavailable"
        -]New value: +[
        +  "available",
        +  "partial",
        +  "unavailable",
        +  "metadata_only"
        +]
    • Changedget_overview2 fields changed
      • addedOutput schema / properties / publication
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "observationScope": {
        +      "const": "published_rows_only"
        +    },
        +    "permissionEvidence": {
        +      "type": "null"
        +    },
        +    "policyId": {
        +      "const": "narcoscope.publication-rights.2026-10-28.v1"
        +    },
        +    "reason": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "sourceIds": {
        +      "items": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "type": "array",
        +      "uniqueItems": true
        +    },
        +    "status": {
        +      "enum": [
        +        "published",
        +        "partial",
        +        "metadata_only"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "policyId",
        +    "status",
        +    "sourceIds",
        +    "permissionEvidence",
        +    "observationScope",
        +    "reason"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "schema",
        -  "generated_at",
        -  "note",
        -  "headline",
        -  "overdose_by_substance",
        -  "top_seizure_countries",
        -  "designation_programs",
        -  "divergences",
        -  "interpretation"
        -]New value: +[
        +  "schema",
        +  "generated_at",
        +  "note",
        +  "publication",
        +  "headline",
        +  "overdose_by_substance",
        +  "top_seizure_countries",
        +  "designation_programs",
        +  "divergences",
        +  "interpretation"
        +]
    • Changedget_palimpsest_bridge5 fields changed
      • changedOutput schema / $defs / dataset / properties / data / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • addedOutput schema / $defs / dataset / properties / publication
        Added value: +{
        +  "$ref": "#/$defs/publication"
        +}
      • addedOutput schema / $defs / publication
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "observationScope": {
        +      "const": "published_rows_only"
        +    },
        +    "permissionEvidence": {
        +      "type": "null"
        +    },
        +    "policyId": {
        +      "const": "narcoscope.publication-rights.2026-10-28.v1"
        +    },
        +    "reason": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "sourceIds": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "minItems": 1,
        +      "type": "array"
        +    },
        +    "status": {
        +      "const": "metadata_only"
        +    }
        +  },
        +  "required": [
        +    "policyId",
        +    "status",
        +    "sourceIds",
        +    "permissionEvidence",
        +    "reason",
        +    "observationScope"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / datasets / properties / drugSeizures / allOf
        Previous value: -[
        -  {
        -    "$ref": "#/$defs/dataset"
        -  },
        -  {
        -    "properties": {
        -      "datasetId": {
        -        "const": "drug_seizures"
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "$ref": "#/$defs/dataset"
        +  },
        +  {
        +    "properties": {
        +      "datasetId": {
        +        "const": "drug_seizures"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "data": {
        +        "type": "null"
        +      },
        +      "publication": {
        +        "$ref": "#/$defs/publication"
        +      }
        +    },
        +    "required": [
        +      "publication"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedOutput schema / properties / datasets / properties / retailDrugPrices / allOf
        Previous value: -[
        -  {
        -    "$ref": "#/$defs/dataset"
        -  },
        -  {
        -    "properties": {
        -      "datasetId": {
        -        "const": "retail_drug_prices"
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "$ref": "#/$defs/dataset"
        +  },
        +  {
        +    "properties": {
        +      "datasetId": {
        +        "const": "retail_drug_prices"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "data": {
        +        "type": "null"
        +      },
        +      "publication": {
        +        "$ref": "#/$defs/publication"
        +      }
        +    },
        +    "required": [
        +      "publication"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_palimpsest_corridors5 fields changed
      • changedOutput schema / $defs / dataset / properties / data / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • addedOutput schema / $defs / dataset / properties / publication
        Added value: +{
        +  "$ref": "#/$defs/publication"
        +}
      • addedOutput schema / $defs / publication
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "observationScope": {
        +      "const": "published_rows_only"
        +    },
        +    "permissionEvidence": {
        +      "type": "null"
        +    },
        +    "policyId": {
        +      "const": "narcoscope.publication-rights.2026-10-28.v1"
        +    },
        +    "reason": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "sourceIds": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "minItems": 1,
        +      "type": "array"
        +    },
        +    "status": {
        +      "const": "metadata_only"
        +    }
        +  },
        +  "required": [
        +    "policyId",
        +    "status",
        +    "sourceIds",
        +    "permissionEvidence",
        +    "reason",
        +    "observationScope"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / datasets / properties / drugSeizures / allOf
        Previous value: -[
        -  {
        -    "$ref": "#/$defs/dataset"
        -  },
        -  {
        -    "properties": {
        -      "datasetId": {
        -        "const": "drug_seizures"
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "$ref": "#/$defs/dataset"
        +  },
        +  {
        +    "properties": {
        +      "datasetId": {
        +        "const": "drug_seizures"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "data": {
        +        "type": "null"
        +      },
        +      "publication": {
        +        "$ref": "#/$defs/publication"
        +      }
        +    },
        +    "required": [
        +      "publication"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedOutput schema / properties / datasets / properties / retailDrugPrices / allOf
        Previous value: -[
        -  {
        -    "$ref": "#/$defs/dataset"
        -  },
        -  {
        -    "properties": {
        -      "datasetId": {
        -        "const": "retail_drug_prices"
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "$ref": "#/$defs/dataset"
        +  },
        +  {
        +    "properties": {
        +      "datasetId": {
        +        "const": "retail_drug_prices"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "data": {
        +        "type": "null"
        +      },
        +      "publication": {
        +        "$ref": "#/$defs/publication"
        +      }
        +    },
        +    "required": [
        +      "publication"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedquery_market_observations9 fields changed
      • addedOutput schema / properties / pagination / properties / pages / anyOf
        Added value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / pagination / properties / pages / minimum
        Removed value: -0
      • removedOutput schema / properties / pagination / properties / pages / type
        Removed value: -"integer"
      • addedOutput schema / properties / pagination / properties / total / anyOf
        Added value: +[
        +  {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / pagination / properties / total / minimum
        Removed value: -0
      • removedOutput schema / properties / pagination / properties / total / type
        Removed value: -"integer"
      • addedOutput schema / properties / publication
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "observationScope": {
        +      "const": "published_rows_only"
        +    },
        +    "permissionEvidence": {
        +      "type": "null"
        +    },
        +    "policyId": {
        +      "const": "narcoscope.publication-rights.2026-10-28.v1"
        +    },
        +    "reason": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "sourceIds": {
        +      "items": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "type": "array",
        +      "uniqueItems": true
        +    },
        +    "status": {
        +      "enum": [
        +        "published",
        +        "partial",
        +        "metadata_only"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "policyId",
        +    "status",
        +    "sourceIds",
        +    "permissionEvidence",
        +    "observationScope",
        +    "reason"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / status / enum
        Previous value: -[
        -  "available",
        -  "partial",
        -  "unavailable"
        -]New value: +[
        +  "available",
        +  "partial",
        +  "unavailable",
        +  "metadata_only"
        +]
      • changedOutput schema / required
        Previous value: -[
        -  "schema",
        -  "status",
        -  "generatedAt",
        -  "unavailableDatasets",
        -  "limitations",
        -  "filters",
        -  "pagination",
        -  "datasets",
        -  "indicators",
        -  "sources",
        -  "observations"
        -]New value: +[
        +  "schema",
        +  "status",
        +  "generatedAt",
        +  "unavailableDatasets",
        +  "limitations",
        +  "publication",
        +  "filters",
        +  "pagination",
        +  "datasets",
        +  "indicators",
        +  "sources",
        +  "observations"
        +]
  3. 1 tool update
    • Changedget_market_catalog16 fields changed
      • addedInput schema / properties
        Added value: +{
        +  "dataset": {
        +    "enum": [
        +      "global-drugs",
        +      "global-arms-economy"
        +    ],
        +    "type": "string"
        +  },
        +  "dimensionLimit": {
        +    "default": 25,
        +    "maximum": 50,
        +    "minimum": 1,
        +    "type": "integer"
        +  },
        +  "dimensionPage": {
        +    "default": 1,
        +    "maximum": 1000000,
        +    "minimum": 1,
        +    "type": "integer"
        +  },
        +  "indicator": {
        +    "maxLength": 160,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "limit": {
        +    "default": 4,
        +    "maximum": 4,
        +    "minimum": 1,
        +    "type": "integer"
        +  },
        +  "page": {
        +    "default": 1,
        +    "maximum": 1000000,
        +    "minimum": 1,
        +    "type": "integer"
        +  }
        +}
      • addedOutput schema / properties / datasets / items / properties / indicatorCount
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / datasets / items / properties / indicators / items / properties / dimensionPagination
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "categories": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "limit": {
        +          "maximum": 50,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "nextPage": {
        +          "anyOf": [
        +            {
        +              "minimum": 2,
        +              "type": "integer"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "page": {
        +          "maximum": 1000000,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "pages": {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        "total": {
        +          "minimum": 0,
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "page",
        +        "limit",
        +        "total",
        +        "pages",
        +        "nextPage"
        +      ],
        +      "type": "object"
        +    },
        +    "geographies": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "limit": {
        +          "maximum": 50,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "nextPage": {
        +          "anyOf": [
        +            {
        +              "minimum": 2,
        +              "type": "integer"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "page": {
        +          "maximum": 1000000,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "pages": {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        "total": {
        +          "minimum": 0,
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "page",
        +        "limit",
        +        "total",
        +        "pages",
        +        "nextPage"
        +      ],
        +      "type": "object"
        +    },
        +    "selections": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "limit": {
        +          "maximum": 50,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "nextPage": {
        +          "anyOf": [
        +            {
        +              "minimum": 2,
        +              "type": "integer"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "page": {
        +          "maximum": 1000000,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "pages": {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        "total": {
        +          "minimum": 0,
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "page",
        +        "limit",
        +        "total",
        +        "pages",
        +        "nextPage"
        +      ],
        +      "type": "object"
        +    },
        +    "subgroups": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "limit": {
        +          "maximum": 50,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "nextPage": {
        +          "anyOf": [
        +            {
        +              "minimum": 2,
        +              "type": "integer"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "page": {
        +          "maximum": 1000000,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "pages": {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        "total": {
        +          "minimum": 0,
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "page",
        +        "limit",
        +        "total",
        +        "pages",
        +        "nextPage"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "geographies",
        +    "categories",
        +    "subgroups",
        +    "selections"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / datasets / items / properties / indicators / items / properties / dimensions / properties / categories / maxItems
        Previous value: -500000New value: +50
      • changedOutput schema / properties / datasets / items / properties / indicators / items / properties / dimensions / properties / geographies / maxItems
        Previous value: -500000New value: +50
      • changedOutput schema / properties / datasets / items / properties / indicators / items / properties / dimensions / properties / selections / maxItems
        Previous value: -500000New value: +50
      • changedOutput schema / properties / datasets / items / properties / indicators / items / properties / dimensions / properties / subgroups / maxItems
        Previous value: -500000New value: +50
      • changedOutput schema / properties / datasets / items / properties / indicators / items / required
        Previous value: -[
        -  "id",
        -  "sourceId",
        -  "market",
        -  "label",
        -  "unit",
        -  "measureType",
        -  "description",
        -  "limitations",
        -  "featured",
        -  "coverage",
        -  "dimensions"
        -]New value: +[
        +  "id",
        +  "sourceId",
        +  "market",
        +  "label",
        +  "unit",
        +  "measureType",
        +  "description",
        +  "limitations",
        +  "featured",
        +  "coverage",
        +  "dimensions",
        +  "dimensionPagination"
        +]
      • changedOutput schema / properties / datasets / items / properties / indicators / maxItems
        Previous value: -500New value: +4
      • addedOutput schema / properties / datasets / items / properties / sourceCount
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedOutput schema / properties / datasets / items / properties / sources / maxItems
        Previous value: -80New value: +4
      • changedOutput schema / properties / datasets / items / required
        Previous value: -[
        -  "id",
        -  "title",
        -  "sha256",
        -  "generatedAt",
        -  "sources",
        -  "indicators",
        -  "coverage",
        -  "limitations"
        -]New value: +[
        +  "id",
        +  "title",
        +  "sha256",
        +  "generatedAt",
        +  "sources",
        +  "indicators",
        +  "coverage",
        +  "limitations",
        +  "sourceCount",
        +  "indicatorCount"
        +]
      • addedOutput schema / properties / filters
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "dataset": {
        +      "anyOf": [
        +        {
        +          "enum": [
        +            "global-drugs",
        +            "global-arms-economy"
        +          ],
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "indicator": {
        +      "anyOf": [
        +        {
        +          "maxLength": 160,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "required": [
        +    "dataset",
        +    "indicator"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / pagination
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "limit": {
        +      "maximum": 4,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "nextPage": {
        +      "anyOf": [
        +        {
        +          "minimum": 2,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "page": {
        +      "maximum": 1000000,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "pages": {
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "total": {
        +      "minimum": 0,
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "page",
        +    "limit",
        +    "total",
        +    "pages",
        +    "nextPage"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / schema / const
        Previous value: -"narcoscope.global-market-catalog.v1"New value: +"narcoscope.global-market-catalog-page.v1"
      • changedOutput schema / required
        Previous value: -[
        -  "schema",
        -  "status",
        -  "generatedAt",
        -  "unavailableDatasets",
        -  "limitations",
        -  "datasets",
        -  "relatedResources"
        -]New value: +[
        +  "schema",
        +  "status",
        +  "generatedAt",
        +  "unavailableDatasets",
        +  "limitations",
        +  "datasets",
        +  "relatedResources",
        +  "filters",
        +  "pagination"
        +]
  4. 1 tool update
    • Addedresearch_network
  5. 2 tool updates
    • Addedget_market_catalog
    • Addedquery_market_observations
  6. 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"
        +}
  7. 1 tool update
    • Addedget_connected_research
  8. 3 tool updates
    • Addedget_atlas
    • Addedget_entities
    • Addedget_federation
  9. 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"
        +}
  10. 1 tool update
    • Addedget_palimpsest_bri_context
  11. 1 tool update
    • Addedget_palimpsest_corridors
  12. 5 tool updates
    • First observedget_newsroom
    • First observedget_overview
    • First observedget_palimpsest_bridge
    • First observedget_story
    • First observedlist_capabilities

Publisher details

Operator
beepboop2025 · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Not available
Restrictions
Public-interest evidence with privacy minimization, source-specific rights and causal-inference limits. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables coding agents to discover, optionally rank, and exactly read bounded source-addressed evidence from large repositories and noisy logs, with local-only privacy controls and quota-aware recovery.
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides evidence-oriented MCP service for cryptographically identified agents, bounded public contracts, privacy-preserving records, and append-only audit.
    Apache 2.0
  • F
    license
    Not graded
    quality
    B
    maintenance
    Role-aware MCP server over real HPC and cloud log corpora (BGL, OpenStack, Zookeeper) in SereneDB, where every answer cites the exact SQL that ran, backed by a tamper-evident, hash-chained evidence ledger.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.