Skip to main content
Glama

ASPERN: counterparty checks for agents

Sanctions list screening of a vault (paid)

vault_sanctions_screening
Idempotent

One vault against the OFAC SDN list: its contract roles and its direct holders where the holder list is complete, exact address matches only, with the list version and whether it is current. Paid ($0.01). States: EXACT_LISTED_ADDRESS_MATCH (a match of an identifier, for review, not a finding about who controls it), NO_EXACT_MATCH (bounded: the list is not exhaustive, so this never means no sanctioned party), UNKNOWN (an incomplete holder list or a stale list). Never describe a result as clean, compliant or safe. Quote says and limits.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "slug": "<slug>"
    },
    "name": "vault_sanctions_screening"
  }
}

Input Schema

NameRequiredDescriptionDefault
slugYesVault slug or contract address.

Output Schema

NameRequiredDescriptionDefault
listYesWhich list, e.g. OFAC SDN.
metaNoHow current this answer is and what it was read from: `freshness` and the ages behind it. Present on every answer from this server, whatever the tool.
saysYesThe bounded statement to quote.
scopeNoroles, direct holders.
stateYesEXACT_LISTED_ADDRESS_MATCH, NO_EXACT_MATCH or UNKNOWN.
limitsYesWhat this screening cannot show. Quote it.
matchesNoEach exact match with role, listed entity, programme and the official record link.
screenedNoAddresses screened.
warningsNoAnything the server wants a caller to know about THIS answer before acting on it. Empty is the normal case and is not a guarantee.
candidatesNoSame EVM hex listed under another currency: for review, never a match.
listCurrentNoFalse when our copy is past 36 hours: the state is then UNKNOWN.
notScreenedNoAddresses that should have been screened and were not.
listPublishedOnNoThe list version screened against.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.4/5.0
Behavior5/5

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

Goes well past the annotations by disclosing the paid cost ($0.01), the matching limitation (exact address only, non-exhaustive list), the list version/currency caveat, and the degradation path to UNKNOWN on incomplete holder lists. It also constrains interpretation (a match is for review, not a finding about control) and forbids describing results as clean/compliant/safe, which the readOnlyHint/openWorldHint fields do not convey.

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-loads the core action and scope, then lists the three result states with their interpretations. The middle clause about holders and exact matches is dense and reads as a run-on, but no sentence is filler.

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?

An output schema exists, so return structure is covered, and the description still supplies the interpretive layer an agent needs: what each state means, when the result is bounded rather than negative, and the quoting obligation for `says` and `limits`. Nothing required to call or read this tool correctly is missing.

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% for the single slug parameter, so the schema already documents that a vault slug or contract address is accepted. The description adds no format, casing, or resolution detail beyond restating that the subject is a vault, so the 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?

States a specific verb and resource (one vault against the OFAC SDN list) plus the exact scope: contract roles and direct holders where the holder list is complete, exact address matches only. The vault-scoped framing separates it from subject-level siblings like counterparty_check or portfolio_screen without needing their schemas.

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?

Implicitly bounds when the tool applies by saying it only covers direct holders where the list is complete and only exact matches. It does not name a sibling alternative (e.g. counterparty_check or portfolio_screen) or say when a caller should prefer them, so the routing is inferred rather than stated.

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.