Skip to main content
Glama

OFAC sanctions check

ofac_check
Read-onlyIdempotent

Screen one blockchain address against the U.S. Treasury OFAC SDN (Specially Designated Nationals) list: a direct match on the address itself, plus the engine's two-hop proximity walk over the address's real transfer history. Two separate claims, reported separately.

Three direct-match outcomes, and they must not be collapsed:

  • a match: the address is published on the SDN list. The designated entity, its type, its sanctions programs and the chain OFAC filed it under are returned.

  • no match: the whole published list was searched and the address is not on it. That is a real finding about one list on one date.

  • not screened: the list could not be read, so nothing was checked. Never report this as clear; point the user at https://sanctionssearch.ofac.treas.gov/ instead.

Proximity: when proximity_checked is true the engine walked up to two hops of transfer history (its warehouse or a live read) looking for a listed address, and reports found or not, the hop count, the path and how far it went. Being N hops from a listed address is a fact about the graph, never a designation. When proximity_checked is false nothing was walked and the result says so.

Limits to repeat whenever the result is restated: SDN list only (not the EU, UN or UK/OFSI lists, and not OFAC's non-SDN lists such as SSI, NS-MBS and CAPTA); as published on a stated date; a walk bounded by hops and a node budget. A miss is not a sanctions clearance.

Call this when a user asks about sanctions exposure, designation, or OFAC status for an address, so the answer is grounded in what was actually searched.

Args:

  • address (string): an EVM 0x address or a base58 Solana address.

Input Schema

NameRequiredDescriptionDefault
addressYesAn EVM 0x address or a base58 Solana address. Case is preserved.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, open-world, non-destructive, and the description does not contradict them. Beyond that it discloses the three-state outcome model (match / no-match / not-screened), the meaning of proximity_checked being true or false, the two-hop and node-budget bounds, and the list-scope caveats (SDN only, as of a stated date) — exactly the behavioral context annotations cannot carry.

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?

The purpose is front-loaded in the first sentence and the outcome taxonomy is scannable, but the text runs long for a one-parameter tool and includes instructions aimed at how the agent should phrase its answer ('Limits to repeat whenever the result is restated') rather than at tool selection or invocation. Useful content, but the volume and the meta-reporting directives dilute it.

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?

There is no output schema, so the description carries the full burden of describing return values, and it does: entity, type, sanctions programs and chain for a hit; explicit not-screened state; proximity found/not, hop count, path and depth. For a single-address screening tool the agent has everything needed to call it and to interpret the result honestly.

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 coverage is 100% and the single parameter is fully documented in the schema, including address formats and case preservation, which the description restates rather than extends. Nothing new is added about the parameter itself (no validation rules, no failure modes for malformed input), so the 3 baseline applies.

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

Purpose5/5

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

The opening sentence names the exact verb, resource and scope: screen one blockchain address against the OFAC SDN list, direct match plus two-hop proximity walk. The three direct-match outcomes and the distinction between designation and graph proximity make it unmistakable what this tool produces versus any other sibling.

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 a clear positive trigger ('Call this when a user asks about sanctions exposure, designation, or OFAC status for an address') and a hard negative directive ('never report not-screened as clear; point the user at sanctionssearch.ofac.treas.gov'). It does not name any sibling tool or say when another tool (e.g. wallet_score, cex_attribution) would be the better choice, so it stops short of full alternatives coverage.

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.

Resources