Skip to main content
Glama

NarcoScope — illicit-economy evidence atlas

Discover granular global market evidence

get_market_catalog
Read-only

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.

Input Schema

NameRequiredDescriptionDefault
pageNo
limitNo
datasetNo
indicatorNo
dimensionPageNo
dimensionLimitNo

Output Schema

NameRequiredDescriptionDefault
schemaYes
statusYes
filtersYes
datasetsYes
paginationYes
generatedAtYes
limitationsYes
relatedResourcesYes
unavailableDatasetsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed35 schema 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"
      +]
  2. Changed16 schema 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"
      +]
  3. Added

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.