Skip to main content
Glama

sanctions-screening-mcp-server

sanctions-screening-mcp-server: list sources

sanctions_list_sources
Read-onlyIdempotent

List the sanctions watchlists (OFAC SDN + Consolidated, EU, UK, UN) and GLEIF datasets currently loaded in the local mirror, each with its record count, source URL, license, and the mirror's readiness and as-of timestamp — for GLEIF, also its Level 2 ownership relationship count, whether its reporting exceptions are loaded and how many, and whether its alternate-name index is built. Use this for provenance and freshness on any result — results are only as current as the last mirror refresh, and a not-ready mirror means screening cannot run yet. Attribution: UK data is under the Open Government Licence v3.0; all sources are cited here.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
leiAsOfNoISO 8601 timestamp of the last completed GLEIF sync, when available.
sourcesNoAll loaded sources, sanctions lists then the GLEIF dataset.
leiReadyNoTrue once the GLEIF (LEI) mirror has completed at least one full sync.
sanctionsAsOfNoISO 8601 timestamp of the last completed sanctions sync, when available.
sanctionsReadyNoTrue once the sanctions mirror has completed at least one full sync.
alternateNamesIndexedNoWhether the GLEIF alternate-name index — trading, previous, alternative-language, and transliterated names — is built. When false, sanctions_resolve_entity searches legal names only until mirror:init reloads the GLEIF golden copy. True on a GLEIF mirror that has never loaded (leiReady false): its empty index is complete, and the first load builds it with the entities.
reportingExceptionsLoadedNoWhether GLEIF reporting exceptions are loaded. When false, sanctions_trace_ownership reads a parent level with no published relationship as unknown.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "not": {
      -      "required": [
      -        "error"
      -      ]
      -    },
      -    "required": [
      -      "sanctionsReady",
      -      "leiReady",
      -      "reportingExceptionsLoaded",
      -      "sources"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "error"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "sanctionsReady",
      +      "leiReady",
      +      "reportingExceptionsLoaded",
      +      "alternateNamesIndexed",
      +      "sources"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / alternateNamesIndexed
      Added value: +{
      +  "description": "Whether the GLEIF alternate-name index — trading, previous, alternative-language, and transliterated names — is built. When false, sanctions_resolve_entity searches legal names only until mirror:init reloads the GLEIF golden copy. True on a GLEIF mirror that has never loaded (leiReady false): its empty index is complete, and the first load builds it with the entities.",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / sources / items / properties / recordCount / description
      Previous value: -"Records currently loaded for this source (Level 1 entities for gleif)."New value: +"Records currently loaded for this source — for gleif, Level 1 entity records."
    • addedOutput schema / properties / sources / items / properties / relationshipCount
      Added value: +{
      +  "description": "GLEIF Level 2 ownership relationships loaded (gleif only).",
      +  "type": "number"
      +}
    • changedOutput schema / properties / sources / items / properties / url / description
      Previous value: -"Upstream source URL the mirror harvests from."New value: +"Upstream URL the mirror harvests this source from, as configured — for gleif, the golden-copy API base."
  2. Changed4 schema fields changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "not": {
      -      "required": [
      -        "error"
      -      ]
      -    },
      -    "required": [
      -      "sanctionsReady",
      -      "leiReady",
      -      "sources"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "error"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "sanctionsReady",
      +      "leiReady",
      +      "reportingExceptionsLoaded",
      +      "sources"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / reportingExceptionsLoaded
      Added value: +{
      +  "description": "Whether GLEIF reporting exceptions are loaded. When false, sanctions_trace_ownership reads a parent level with no published relationship as unknown.",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / sources / items / properties / recordCount / description
      Previous value: -"Records currently loaded for this source."New value: +"Records currently loaded for this source (Level 1 entities for gleif)."
    • addedOutput schema / properties / sources / items / properties / reportingExceptionCount
      Added value: +{
      +  "description": "GLEIF reporting-exception records loaded (gleif only). Absent when the dataset has never been loaded — never read as zero.",
      +  "type": "number"
      +}
  3. Changed6 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "sanctionsReady",
      +      "leiReady",
      +      "sources"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present when the call failed. Absent on success.",
      +  "properties": {
      +    "code": {
      +      "description": "JSON-RPC error code for this failure.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "description": "Machine-readable failure mode.",
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "sanctionsReady",
      -  "leiReady",
      -  "sources"
      -]
  4. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/closed-world, so the bar is lower. The description still adds real value: mirror readiness state, as-of timestamp semantics, the staleness caveat ('results are only as current as the last mirror refresh'), and licensing/attribution constraints.

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?

Front-loaded with the core action and resource, then adds the caveat and attribution. The GLEIF field enumeration is dense and partially redundant given an output schema exists, but the sentences are purposeful rather than filler.

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 an output schema present, return values need not be explained, and the description wisely spends its budget on semantics instead: readiness, freshness, and license provenance. An agent has everything needed to call and interpret it.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. Nothing is required from the description on this dimension, and it correctly omits any parameter discussion.

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 and resource: listing the sanctions watchlists and GLEIF datasets loaded in the local mirror, with the exact metadata returned per source. It is instantly distinguishable from siblings like sanctions_screen_name or sanctions_get_entity, which query entities rather than report source provenance.

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?

Explicitly routes the agent: 'Use this for provenance and freshness on any result', and adds a critical operational condition – a not-ready mirror means screening cannot run yet. No when-not or named sibling alternatives are given, but the use context is unambiguous.

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.