Skip to main content
Glama

Check possible exclusion matches

check_exclusions
Read-onlyIdempotent

Check 1 to 20 identities against a dated active SAM snapshot. Pass identities as an array of objects, not a record ID or page URL. Each identity needs a name, UEI, CAGE, or NPI. Exact identifier matches and name-only possible matches remain distinct. Read coverage.freshness; stale or unknown-source empty lookups report unavailable with snapshot_status no_match_in_snapshot. No match is not clearance.

Input Schema

NameRequiredDescriptionDefault
generationNoRetained snapshot UUID; omit for the current snapshot.
identitiesYesOne to twenty identities to compare with the dated SAM snapshot.

Output Schema

NameRequiredDescriptionDefault
resultsYes
coverageYes
generationYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / $defs / Identity / properties / name / description
      Previous value: -"Person or organization name; name-only matches are possible matches."New value: +"Person or organization name, within 256 UTF-8 bytes; name-only matches are possible matches."
    • changedOutput schema / $defs / Identity / properties / name / description
      Previous value: -"Person or organization name; name-only matches are possible matches."New value: +"Person or organization name, within 256 UTF-8 bytes; name-only matches are possible matches."
  2. Changed3 schema fields changed
    • addedOutput schema / $defs / SourceFreshness / properties / attention_required
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / $defs / SourceFreshness / properties / warn_age_seconds
      Added value: +{
      +  "description": "Early-warning boundary, separate from the stale-source boundary.",
      +  "format": "int64",
      +  "type": "integer"
      +}
    • changedOutput schema / $defs / SourceFreshness / required
      Previous value: -[
      -  "state",
      -  "evaluated_at",
      -  "max_age_seconds"
      -]New value: +[
      +  "state",
      +  "evaluated_at",
      +  "max_age_seconds",
      +  "warn_age_seconds",
      +  "attention_required"
      +]
  3. Changed7 schema fields changed
    • addedOutput schema / $defs / ExclusionCoverage
      Added value: +{
      +  "properties": {
      +    "freshness": {
      +      "$ref": "#/$defs/SourceFreshness",
      +      "description": "Fresh, stale, unknown or unavailable, with age and the 24-hour warning policy."
      +    },
      +    "observed_at": {
      +      "description": "Observation time does not replace the official source timestamp.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "scope": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "sha256": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "source_date": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "source_url": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "description": "Present as unavailable when no SAM coverage exists in this generation.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "freshness"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / $defs / ExclusionMatch / properties / snapshot_status
      Added value: +{
      +  "description": "Observed lookup outcome in the dated snapshot, even when status is unavailable.",
      +  "type": "string"
      +}
    • changedOutput schema / $defs / ExclusionMatch / properties / status / description
      Previous value: -"Distinguishes exact-identifier, possible-name and no-match outcomes."New value: +"Exact or possible match, fresh-snapshot no-match, or unavailable. Stale,\nunknown and missing sources never produce a clean no-match status."
    • changedOutput schema / $defs / ExclusionMatch / required
      Previous value: -[
      -  "identity",
      -  "status",
      -  "records",
      -  "truncated"
      -]New value: +[
      +  "identity",
      +  "status",
      +  "snapshot_status",
      +  "records",
      +  "truncated"
      +]
    • addedOutput schema / $defs / FreshnessState
      Added value: +{
      +  "enum": [
      +    "fresh",
      +    "stale",
      +    "unknown",
      +    "unavailable"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / $defs / SourceFreshness
      Added value: +{
      +  "properties": {
      +    "evaluated_at": {
      +      "description": "UTC time when age was evaluated; source and observation dates are unchanged.",
      +      "type": "string"
      +    },
      +    "max_age_seconds": {
      +      "description": "Explicit warning threshold for this daily snapshot. Not a scheduler promise.",
      +      "format": "int64",
      +      "type": "integer"
      +    },
      +    "source_age_seconds": {
      +      "description": "Age of the official source timestamp, never the import or enrichment timestamp.",
      +      "format": "int64",
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "state": {
      +      "$ref": "#/$defs/FreshnessState"
      +    },
      +    "warning": {
      +      "description": "User-facing warning, or null when within the warning threshold.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "state",
      +    "evaluated_at",
      +    "max_age_seconds"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / coverage / $ref
      Previous value: -"#/$defs/JsonObject"New value: +"#/$defs/ExclusionCoverage"
  4. Changed2 schema fields changed
    • addedInput schema / properties / identities / maxItems
      Added value: +20
    • addedInput schema / properties / identities / minItems
      Added value: +1
  5. Changed7 schema fields changed
    • addedInput schema / $defs / Identity / properties / cage / description
      Added value: +"Exact five-character CAGE code, when known."
    • addedInput schema / $defs / Identity / properties / name / description
      Added value: +"Person or organization name; name-only matches are possible matches."
    • addedInput schema / $defs / Identity / properties / npi / description
      Added value: +"Exact ten-digit National Provider Identifier, when known."
    • addedInput schema / $defs / Identity / properties / uei / description
      Added value: +"Exact 12-character Unique Entity ID, when known."
    • addedInput schema / properties / generation / description
      Added value: +"Retained snapshot UUID; omit for the current snapshot."
    • addedInput schema / properties / identities / description
      Added value: +"One to twenty identities to compare with the dated SAM snapshot."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$defs": {
      +    "ExclusionMatch": {
      +      "properties": {
      +        "identity": {
      +          "$ref": "#/$defs/Identity"
      +        },
      +        "records": {
      +          "description": "Candidate exclusion records with match basis; not a clearance decision.",
      +          "items": {
      +            "$ref": "#/$defs/JsonObject"
      +          },
      +          "type": "array"
      +        },
      +        "status": {
      +          "description": "Distinguishes exact-identifier, possible-name and no-match outcomes.",
      +          "type": "string"
      +        },
      +        "truncated": {
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "identity",
      +        "status",
      +        "records",
      +        "truncated"
      +      ],
      +      "type": "object"
      +    },
      +    "Identity": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "cage": {
      +          "description": "Exact five-character CAGE code, when known.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "name": {
      +          "description": "Person or organization name; name-only matches are possible matches.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "npi": {
      +          "description": "Exact ten-digit National Provider Identifier, when known.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "uei": {
      +          "description": "Exact 12-character Unique Entity ID, when known.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "JsonObject": {
      +      "description": "Source-specific JSON map. The envelope is stable; map keys vary by official source.",
      +      "type": "object"
      +    }
      +  },
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "properties": {
      +    "coverage": {
      +      "$ref": "#/$defs/JsonObject"
      +    },
      +    "generation": {
      +      "type": "string"
      +    },
      +    "results": {
      +      "items": {
      +        "$ref": "#/$defs/ExclusionMatch"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "generation",
      +    "results",
      +    "coverage"
      +  ],
      +  "type": "object"
      +}
  6. Added

TDQS

A4.5/5.0
Behavior5/5

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

Annotations declare readOnlyHint and idempotentHint, and the description adds important behavioral context beyond that: exact matches vs. name-only possible matches, the distinction between staleness and no_match, and the caveat that 'No match is not clearance.' This is high-value, non-obvious disclosure.

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 compact set of five sentences, all front-loaded with the core action and followed by precise usage constraints. Every sentence provides actionable information with zero fluff.

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 batch-checking tool with an output schema and full schema coverage, the description supplies critical behavioral nuances (possible vs. exact matches, staleness handling, no-match-not-clearance) that an agent needs to interpret results correctly. Nothing essential 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%, with each parameter described in the schema, so the baseline is 3. The description mentions the array-of-objects shape and required identity attributes, but adds no syntax or format detail beyond what the schema already provides.

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 states a specific verb ('Check') and resource ('1 to 20 identities against a dated active SAM snapshot'), and the semantics are distinct from sibling tools like search_exclusions and explain_match. It clearly defines the batch-checking action and the scoped snapshot.

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?

The description provides clear usage context ('Pass identities as an array of objects, not a record ID or page URL') and specifies the required identity attributes, but it does not explicitly name alternative sibling tools (e.g., search_exclusions or explain_match) or state when to use this tool over them.

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.