Koskamo

CMD+RVL Receipts MCP

An MCP server that verifies CMBS claims against current SEC filings (ABS-EE and 10-D). It checks commentary or AI-generated text for factual accuracy against public loan receipts, returning verified, contradicted, or unchecked results with source citations.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

CMD+RVL Receipts MCP logo, by CMD+RVLVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by CMD+RVL
MCP endpoint (Streamable HTTP)
https://receipts.cmdrvl.com/mcp
Vendor documentation

What its tools do

12 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

12 of 12 have a description · 12 of 12 declare behavior hints · 10 of 10 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to cmdrvl.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Check a supported CMBS claim for a named loan, field, and period.
  • Check a market note, analyst comment, or article before use.
  • Check text from Claude or another model before use or sharing.

Source and maintenance

Vendor evidenceRegistry 0.1.0
Maintenance checked

Protocol and capabilities

Server
cmdrvl-receipts 0.1.0
MCP protocol negotiated in check
2025-11-25
Tools
12 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Claim in, receipt out: a VERIFICATION MCP over the dual-source SEC CMBS confirmation ledger, not a data MCP. A claim is required; you get a verdict and a receipt, never the underlying value. Route by question: verify_loan_field (7 loan fields), verify_deal_field (4 pool fields), verify_counterparty (master or special servicer; verify_servicer is the old name), verify_loan_status_counts, verify_fund_holding_coupon (NPORT), verify_building_size and verify_appraised_value (issuance, as of securitization; OUT_OF_COVERAGE when the deal or loan is outside coverage). For a pasted paragraph call verify_claims. Resolve names with find_deals; call coverage FIRST to learn what is in scope; covered_deals is the full list. claim_verdict (CONFIRM / DENY / CONFLICT / UNVERIFIED / OUT_OF_COVERAGE; DENY only here) judges the caller's claim; receipt.confirmation says whether the two filings agree with each other. OUT_OF_COVERAGE means nothing is held for the ask; UNVERIFIED means held but not confirmable. Neither is a denial. Serving is CURRENT-ONLY and the receipt stamps its as-of. New or short on context: call quickstart. Deeper coverage, history, bonds, entitlements: cairn@cmdrvl.com.

Tools

12 advertised

quickstart — Quickstart capability manifest
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compact capability manifest for clients: purpose, workflow, routing table, examples, vocabulary guard, scope caveats, next actions, and contact. A short, low-token summary of what this server does and what it returns.

quickstart input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "detail": {
      "enum": [
        "summary",
        "routing",
        "examples"
      ],
      "type": "string",
      "description": "Default summary. Use routing for tool selection guidance, examples for more call examples."
    }
  },
  "additionalProperties": false
}
quickstart output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "server",
    "purpose",
    "compact",
    "schemas",
    "current_scope",
    "workflow",
    "tools",
    "examples",
    "vocabulary",
    "caveats",
    "next_actions",
    "contact"
  ],
  "properties": {
    "tools": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {},
        "additionalProperties": true
      },
      "description": "Routing table: name, when_to_use, required_args, returns."
    },
    "server": {
      "type": "string"
    },
    "caveats": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "compact": {
      "type": "boolean"
    },
    "contact": {
      "type": "string"
    },
    "purpose": {
      "type": "string"
    },
    "schemas": {
      "type": "object",
      "properties": {},
      "description": "sf-receipt v0: profile, version, schema_uri, context_uri, human_docs.",
      "additionalProperties": true
    },
    "examples": {
      "type": "array",
      "items": {
        "$ref": "#/properties/tools/items"
      },
      "description": "Worked calls: task plus {tool, arguments}."
    },
    "workflow": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "vocabulary": {
      "type": "array",
      "items": {
        "$ref": "#/properties/tools/items"
      },
      "description": "term, meaning."
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "current_scope": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
quickstart annotations
{
  "title": "Quickstart capability manifest",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
coverage — Coverage — what this server can and cannot verify
Advertised by the server during the last successful anonymous check.
Advertised read-only

What this server covers: deals and loans against the universe, the field inventory with full bound definitions, counterparty roles, current-only scope, and dual-sourced agreement stats (single-source reported separately). An OUT_OF_COVERAGE answer means the deal or field is outside this coverage; UNVERIFIED means it is covered but could not be confirmed. Contact cairn@cmdrvl.com for deeper coverage, history, bonds, entitlements.

coverage input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
coverage output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "deals",
    "loans",
    "bonds",
    "securities",
    "fields",
    "temporal",
    "counterparty_roles",
    "confirmation_breakdown",
    "confirmation_statistics",
    "confirmation_breakdown_note",
    "limits",
    "contact",
    "coverage_source",
    "generated_at"
  ],
  "properties": {
    "bonds": {
      "$ref": "#/properties/loans"
    },
    "deals": {
      "type": "object",
      "properties": {},
      "description": "covered, named, fully_confirmed_ever, edgar_cmbs_universe.",
      "additionalProperties": true
    },
    "loans": {
      "type": "object",
      "properties": {},
      "additionalProperties": true
    },
    "fields": {
      "type": "array",
      "items": {
        "$ref": "#/properties/loans"
      },
      "description": "Per field: field, grain, receipts, field_definition (the full bound definition)."
    },
    "limits": {
      "$ref": "#/properties/loans"
    },
    "contact": {
      "$ref": "#/properties/loans"
    },
    "temporal": {
      "$ref": "#/properties/loans"
    },
    "securities": {
      "anyOf": [
        {
          "$ref": "#/properties/loans"
        },
        {
          "type": "null"
        }
      ]
    },
    "generated_at": {
      "type": [
        "string",
        "null"
      ]
    },
    "coverage_source": {
      "enum": [
        "bundled",
        "shard-manifest",
        "shard-fallback"
      ],
      "type": "string"
    },
    "counterparty_roles": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "role",
          "deals"
        ],
        "properties": {
          "role": {
            "type": "string"
          },
          "deals": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "confirmation_breakdown": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": {
            "type": "number"
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "confirmation_statistics": {
      "anyOf": [
        {
          "$ref": "#/properties/loans"
        },
        {
          "type": "null"
        }
      ]
    },
    "confirmation_breakdown_note": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "additionalProperties": false
}
coverage annotations
{
  "title": "Coverage — what this server can and cannot verify",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_deals — Find covered deals
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search covered deals by id, trust name, CIK, alias, shelf, vintage or deal_ref. An EXACT query returns one dominant result. A fuzzy query returns a small ranked set with match reasons, periods and a suggested next call. Returns at most the requested number of matches.

find_deals input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 25,
      "minimum": 1,
      "description": "Maximum ranked candidates to return (default 5; 10 on the builtin fallback; max 25)."
    },
    "query": {
      "type": "string",
      "description": "Deal name, ticker-style id, CIK, alias, shelf/vintage fragment, or deal_ref to search."
    }
  },
  "additionalProperties": false
}
find_deals output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query",
    "count",
    "total_matches",
    "truncated",
    "limit",
    "matches",
    "message",
    "next_actions"
  ],
  "properties": {
    "count": {
      "type": "number"
    },
    "limit": {
      "type": "number"
    },
    "query": {
      "type": "string"
    },
    "matches": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {},
        "additionalProperties": true
      },
      "description": "Deal id, cik, name, shelf, vintage, aliases, score."
    },
    "message": {
      "type": "string"
    },
    "truncated": {
      "type": "boolean"
    },
    "next_actions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "total_matches": {
      "type": "number"
    },
    "search_backend": {
      "$ref": "#/properties/matches/items"
    }
  },
  "additionalProperties": false
}
find_deals annotations
{
  "title": "Find covered deals",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
covered_deals — Covered deals
Advertised by the server during the last successful anonymous check.
Advertised read-only

List every deal this server can verify, with CIKs, aliases and filing periods. Returns the full covered set, which can be long.

covered_deals input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
covered_deals output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "field",
    "count",
    "deals"
  ],
  "properties": {
    "count": {
      "type": "number"
    },
    "deals": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "cik",
          "deal_ref",
          "shelf",
          "vintage",
          "num_loans_current",
          "periods",
          "aliases"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "cik": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "shelf": {
            "type": [
              "string",
              "null"
            ]
          },
          "aliases": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "periods": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "vintage": {
            "type": "string"
          },
          "deal_ref": {
            "type": [
              "string",
              "null"
            ],
            "description": "Canonical deal-registry URN (cmdrvl:DEAL-…), or null."
          },
          "num_loans_current": {
            "type": [
              "number",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "field": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
covered_deals annotations
{
  "title": "Covered deals",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
verify_loan_field — Verify a loan-grain field
Advertised by the server during the last successful anonymous check.
Advertised read-only

Verify one loan-grain field of a CMBS loan against the SEC 10-D and ABS-EE filings. Values are TRUST-LEVEL (this trust's piece, not the whole loan). Always the CURRENT period; the receipt stamps its as-of. Pass claimed_value: you get CONFIRM / DENY / CONFLICT / UNVERIFIED plus an sf-receipt. No claim: UNVERIFIED. An unknown deal, loan or field: OUT_OF_COVERAGE.

verify_loan_field input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "deal",
    "loan_id",
    "field"
  ],
  "properties": {
    "deal": {
      "type": "string",
      "description": "Deal name or alias, e.g. 'WFCM 2020-C58' or 'Wells Fargo 2020-C58'."
    },
    "field": {
      "enum": [
        "beginning_balance",
        "ending_balance",
        "scheduled_principal",
        "scheduled_interest",
        "note_rate",
        "servicer_advances",
        "paid_through_date"
      ],
      "type": "string",
      "description": "The loan-grain field to verify. One of (full definitions: coverage, or the receipt's field_definition):\n• beginning_balance — trust-level SCHEDULED balance at period start\n• ending_balance — trust-level SCHEDULED balance at period end (not the actual/as-paid balance)\n• scheduled_principal — principal applied: scheduled amortization plus unscheduled (curtailments, payoffs)\n• scheduled_interest — scheduled interest, trust-level\n• note_rate — current note rate in percent (not origination rate, not pool WAC)\n• servicer_advances — Taxes & Insurance (escrow) advances outstanding, not P&I advances\n• paid_through_date — paid-through date (a date; exact match)"
    },
    "loan_id": {
      "type": "string",
      "description": "Loan / entity id within the deal, e.g. '25'."
    },
    "claimed_value": {
      "type": [
        "number",
        "string"
      ],
      "description": "Claim to receipt (number, or date string for paid_through_date). Required: no claim = refusal, no value."
    }
  },
  "additionalProperties": false
}
verify_loan_field output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "claim_verdict",
    "claim",
    "receipt",
    "resolved_deal",
    "as_of",
    "message"
  ],
  "properties": {
    "as_of": {
      "type": [
        "string",
        "null"
      ]
    },
    "claim": {
      "type": "object",
      "properties": {},
      "description": "Adjudication: claimed_value, tolerance_*, within_tolerance, rationale.",
      "additionalProperties": true
    },
    "message": {
      "type": "string"
    },
    "receipt": {
      "type": "object",
      "properties": {},
      "description": "sf-receipt 0.3; schema https://cmdrvl.com/schemas/sf-receipt/v0/schema.json; context https://cmdrvl.com/contexts/obs-receipt/v0/context.json",
      "additionalProperties": true
    },
    "claim_verdict": {
      "enum": [
        "CONFIRM",
        "DENY",
        "CONFLICT",
        "UNVERIFIED",
        "OUT_OF_COVERAGE"
      ],
      "type": "string",
      "description": "Caller-claim verdict; DENY only here."
    },
    "resolved_deal": {
      "type": "object",
      "properties": {},
      "description": "Deal resolution: matched, id, cik, candidates.",
      "additionalProperties": true
    }
  },
  "additionalProperties": false
}
verify_loan_field annotations
{
  "title": "Verify a loan-grain field",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
verify_deal_field — Verify a deal-grain (pool) field
Advertised by the server during the last successful anonymous check.
Advertised read-only

Verify one pool-level field of a deal: the ABS-EE loan-tape rollup against the 10-D trustee's reported fact. These are COLLATERAL (loan-pool) balances and flows, NOT bond or certificate balances, and SCHEDULED and ACTUAL are different fields. No loan_id. Always the CURRENT period. Pass claimed_value; no claim: UNVERIFIED; an unknown deal or field: OUT_OF_COVERAGE.

verify_deal_field input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "deal",
    "field"
  ],
  "properties": {
    "deal": {
      "type": "string",
      "description": "Deal name or alias, e.g. 'WFCM 2020-C58'."
    },
    "field": {
      "enum": [
        "beginning_scheduled_collateral_balance",
        "ending_scheduled_collateral_balance",
        "ending_actual_collateral_balance",
        "total_principal_collected"
      ],
      "type": "string",
      "description": "The deal-grain (pool) field to verify. One of (full definitions: coverage, or the receipt's field_definition):\n• beginning_scheduled_collateral_balance — pool SCHEDULED collateral balance at period start (not bond balance)\n• ending_scheduled_collateral_balance — pool SCHEDULED collateral balance at period end (not bond balance)\n• ending_actual_collateral_balance — pool ACTUAL (as-paid) collateral balance at period end\n• total_principal_collected — pool principal collected: scheduled plus unscheduled"
    },
    "claimed_value": {
      "type": [
        "number",
        "string"
      ],
      "description": "Claim to receipt. Required: no claim = refusal, no value."
    }
  },
  "additionalProperties": false
}
verify_deal_field output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "claim_verdict",
    "claim",
    "receipt",
    "resolved_deal",
    "as_of",
    "message"
  ],
  "properties": {
    "as_of": {
      "type": [
        "string",
        "null"
      ]
    },
    "claim": {
      "type": "object",
      "properties": {},
      "description": "Adjudication: claimed_value, tolerance_*, within_tolerance, rationale.",
      "additionalProperties": true
    },
    "message": {
      "type": "string"
    },
    "receipt": {
      "type": "object",
      "properties": {},
      "description": "sf-receipt 0.3; schema https://cmdrvl.com/schemas/sf-receipt/v0/schema.json; context https://cmdrvl.com/contexts/obs-receipt/v0/context.json",
      "additionalProperties": true
    },
    "claim_verdict": {
      "enum": [
        "CONFIRM",
        "DENY",
        "CONFLICT",
        "UNVERIFIED",
        "OUT_OF_COVERAGE"
      ],
      "type": "string",
      "description": "Caller-claim verdict; DENY only here."
    },
    "resolved_deal": {
      "type": "object",
      "properties": {},
      "description": "Deal resolution: matched, id, cik, candidates.",
      "additionalProperties": true
    }
  },
  "additionalProperties": false
}
verify_deal_field annotations
{
  "title": "Verify a deal-grain (pool) field",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
verify_fund_holding_coupon — Verify NPORT cross-filer fund-holding coupon
Advertised by the server during the last successful anonymous check.
Advertised read-only

Verify the NPORT cross-filer annualized coupon rate (annualized_rate) for one security identifier. Security-grain, N-source receipt: citations are peer NPORT-P filings by registrant CIK, dissenters included. CURRENT-ONLY (latest NPORT period exported). Ticker matches are not unique: set require_hard_identifier=true when a claim needs ISIN, CUSIP or other hard identity.

verify_fund_holding_coupon input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "identifier"
  ],
  "properties": {
    "as_of": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}$",
      "description": "Optional NPORT period guard (YYYY-MM). The public corpus is latest-period-per-security, not historical."
    },
    "identifier": {
      "type": "string",
      "description": "Security identifier to look up: ISIN, CUSIP, other identifier, or ticker."
    },
    "claimed_value": {
      "type": [
        "number",
        "string"
      ],
      "description": "Claim to receipt. Required: no claim = refusal, no value."
    },
    "security_id_source": {
      "enum": [
        "isin",
        "cusip",
        "other",
        "ticker",
        "any"
      ],
      "type": "string",
      "description": "Optional source filter. Default any. Use ticker only for ticker-sourced matches."
    },
    "require_hard_identifier": {
      "type": "boolean",
      "description": "When true, exclude ticker-sourced matches because tickers are not unique hard identifiers."
    }
  },
  "additionalProperties": false
}
verify_fund_holding_coupon output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "claim_verdict",
    "claim",
    "receipt",
    "resolved_security",
    "as_of",
    "message"
  ],
  "properties": {
    "as_of": {
      "type": [
        "string",
        "null"
      ]
    },
    "claim": {
      "type": "object",
      "properties": {},
      "additionalProperties": true
    },
    "message": {
      "type": "string"
    },
    "receipt": {
      "type": "object",
      "properties": {},
      "description": "sf-receipt 0.3; schema https://cmdrvl.com/schemas/sf-receipt/v0/schema.json; context https://cmdrvl.com/contexts/obs-receipt/v0/context.json",
      "additionalProperties": true
    },
    "claim_verdict": {
      "enum": [
        "CONFIRM",
        "DENY",
        "CONFLICT",
        "UNVERIFIED",
        "OUT_OF_COVERAGE"
      ],
      "type": "string",
      "description": "Caller-claim verdict; DENY only here."
    },
    "resolved_security": {
      "type": "object",
      "properties": {},
      "description": "Security resolution: matched, security_id, hard_identifier, candidates.",
      "additionalProperties": true
    }
  },
  "additionalProperties": false
}
verify_fund_holding_coupon annotations
{
  "title": "Verify NPORT cross-filer fund-holding coupon",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
verify_building_size — Verify issuance building size
Advertised by the server during the last successful anonymous check.
Advertised read-only

Verify issuance building size (Annex A vs ABS-EE). Units matter: mismatched units return receipt status UNITS_INCOMMENSURATE, not CONFLICT/DENY. A deal or loan outside coverage returns OUT_OF_COVERAGE.

verify_building_size input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "deal",
    "loan_id"
  ],
  "properties": {
    "deal": {
      "type": "string",
      "description": "Deal name or alias, e.g. 'WFCM 2020-C58'."
    },
    "loan_id": {
      "type": "string",
      "description": "Loan / entity id within the deal, e.g. '25'."
    },
    "claimed_unit": {
      "type": "string",
      "description": "Optional unit, e.g. square_feet or units."
    },
    "claimed_value": {
      "type": [
        "number",
        "string"
      ],
      "description": "Claim to receipt. Required."
    }
  },
  "additionalProperties": false
}
verify_building_size output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "claim_verdict",
    "claim",
    "receipt",
    "resolved_deal",
    "as_of",
    "message"
  ],
  "properties": {
    "as_of": {
      "type": [
        "string",
        "null"
      ]
    },
    "claim": {
      "type": "object",
      "properties": {},
      "description": "Adjudication: claimed_value, tolerance_*, within_tolerance, rationale.",
      "additionalProperties": true
    },
    "message": {
      "type": "string"
    },
    "receipt": {
      "type": "object",
      "properties": {},
      "description": "sf-receipt 0.3; schema https://cmdrvl.com/schemas/sf-receipt/v0/schema.json; context https://cmdrvl.com/contexts/obs-receipt/v0/context.json",
      "additionalProperties": true
    },
    "claim_verdict": {
      "enum": [
        "CONFIRM",
        "DENY",
        "CONFLICT",
        "UNVERIFIED",
        "OUT_OF_COVERAGE"
      ],
      "type": "string",
      "description": "Caller-claim verdict; DENY only here."
    },
    "resolved_deal": {
      "type": "object",
      "properties": {},
      "description": "Deal resolution: matched, id, cik, candidates.",
      "additionalProperties": true
    }
  },
  "additionalProperties": false
}
verify_building_size annotations
{
  "title": "Verify issuance building size",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
verify_appraised_value — Verify issuance appraised value
Advertised by the server during the last successful anonymous check.
Advertised read-only

Verify issuance appraised value (Annex A vs ABS-EE). Date/basis mismatches return DATE_INCOMMENSURATE or BASIS_INCOMMENSURATE, not CONFLICT/DENY. A deal or loan outside coverage returns OUT_OF_COVERAGE.

verify_appraised_value input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "deal",
    "loan_id"
  ],
  "properties": {
    "deal": {
      "type": "string",
      "description": "Deal name or alias, e.g. 'WFCM 2020-C58'."
    },
    "loan_id": {
      "type": "string",
      "description": "Loan / entity id within the deal, e.g. '25'."
    },
    "claimed_basis": {
      "type": "string",
      "description": "Optional valuation basis."
    },
    "claimed_value": {
      "type": [
        "number",
        "string"
      ],
      "description": "Claim to receipt. Required."
    },
    "claimed_value_date": {
      "type": "string",
      "description": "Optional valuation date."
    }
  },
  "additionalProperties": false
}
verify_appraised_value output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "claim_verdict",
    "claim",
    "receipt",
    "resolved_deal",
    "as_of",
    "message"
  ],
  "properties": {
    "as_of": {
      "type": [
        "string",
        "null"
      ]
    },
    "claim": {
      "type": "object",
      "properties": {},
      "description": "Adjudication: claimed_value, tolerance_*, within_tolerance, rationale.",
      "additionalProperties": true
    },
    "message": {
      "type": "string"
    },
    "receipt": {
      "type": "object",
      "properties": {},
      "description": "sf-receipt 0.3; schema https://cmdrvl.com/schemas/sf-receipt/v0/schema.json; context https://cmdrvl.com/contexts/obs-receipt/v0/context.json",
      "additionalProperties": true
    },
    "claim_verdict": {
      "enum": [
        "CONFIRM",
        "DENY",
        "CONFLICT",
        "UNVERIFIED",
        "OUT_OF_COVERAGE"
      ],
      "type": "string",
      "description": "Caller-claim verdict; DENY only here."
    },
    "resolved_deal": {
      "type": "object",
      "properties": {},
      "description": "Deal resolution: matched, id, cik, candidates.",
      "additionalProperties": true
    }
  },
  "additionalProperties": false
}
verify_appraised_value annotations
{
  "title": "Verify issuance appraised value",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
verify_counterparty — Verify a deal counterparty (roster)
Advertised by the server during the last successful anonymous check.
Advertised read-only

Adjudicate 'who is the <role> on deal X' against the SEC 10-D counterparty roster (today: master and special servicer). A SINGLE-SOURCE roster fact. Master is the roster party, NOT the ABS-EE tape's primary servicer. Pass claimed_name: CONFIRM/DENY under the ledger's name normalization, never fuzzy. Says WHO the party is, not that a loan is in special servicing. Unknown deal or role: OUT_OF_COVERAGE.

verify_counterparty input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "deal"
  ],
  "properties": {
    "deal": {
      "type": "string",
      "description": "Deal name or alias, e.g. 'WFCM 2020-C58'."
    },
    "role": {
      "enum": [
        "master_servicer",
        "special_servicer"
      ],
      "type": "string",
      "description": "Default special_servicer. Full definitions ride each receipt's field_definition."
    },
    "claimed_name": {
      "type": "string",
      "description": "Name to adjudicate (normalized comparison)."
    }
  },
  "additionalProperties": false
}
verify_counterparty output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "claim_verdict",
    "claim",
    "receipt",
    "resolved_deal",
    "as_of",
    "message"
  ],
  "properties": {
    "as_of": {
      "type": [
        "string",
        "null"
      ]
    },
    "claim": {
      "type": "object",
      "properties": {},
      "description": "Adjudication: claimed_value, tolerance_*, within_tolerance, rationale.",
      "additionalProperties": true
    },
    "message": {
      "type": "string"
    },
    "receipt": {
      "type": "object",
      "properties": {},
      "description": "sf-receipt 0.3; schema https://cmdrvl.com/schemas/sf-receipt/v0/schema.json; context https://cmdrvl.com/contexts/obs-receipt/v0/context.json",
      "additionalProperties": true
    },
    "claim_verdict": {
      "enum": [
        "CONFIRM",
        "DENY",
        "CONFLICT",
        "UNVERIFIED",
        "OUT_OF_COVERAGE"
      ],
      "type": "string",
      "description": "Caller-claim verdict; DENY only here."
    },
    "resolved_deal": {
      "type": "object",
      "properties": {},
      "description": "Deal resolution: matched, id, cik, candidates.",
      "additionalProperties": true
    }
  },
  "additionalProperties": false
}
verify_counterparty annotations
{
  "title": "Verify a deal counterparty (roster)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
verify_loan_status_counts — Verify a deal's loan-status counts (derived)
Advertised by the server during the last successful anonymous check.
Advertised read-only

Verify count claims over loan status ('N in special servicing / paid off / defeased') for a deal. Counts are DERIVED from the ABS-EE tape, not reported by any filing. Three grains, never mixed: activity (active, resolved_paid_off, defeased); servicing: in_special_servicing = loans CURRENTLY with the special servicer (the count for 'N in special servicing'; it OVERLAPS active, never sum); resolution reason (resolved_via_special_servicing and other payoff reasons) = loans that already LEFT the pool, NOT current counts. Pass `claimed` for exact per-status adjudication. Uncovered deal: UNVERIFIED.

verify_loan_status_counts input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "deal"
  ],
  "properties": {
    "deal": {
      "type": "string",
      "description": "Deal name or alias, e.g. 'WFCM 2020-C58'."
    },
    "claimed": {
      "type": "object",
      "description": "Optional claimed per-status counts, e.g. {\"in_special_servicing\": 10, \"defeased\": 2}. Each is adjudicated by EXACT match against the derived count.",
      "propertyNames": {
        "enum": [
          "active",
          "resolved_paid_off",
          "defeased",
          "in_special_servicing",
          "resolved_via_special_servicing",
          "voluntary_prepayment",
          "payoff_unclassified",
          "liquidated_loss",
          "matured_balloon",
          "repurchased"
        ]
      },
      "additionalProperties": {
        "type": "number"
      }
    }
  },
  "additionalProperties": false
}
verify_loan_status_counts output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "claim_verdict",
    "resolved_deal",
    "as_of",
    "statuses",
    "message"
  ],
  "properties": {
    "as_of": {
      "type": [
        "string",
        "null"
      ]
    },
    "message": {
      "type": "string"
    },
    "statuses": {
      "type": "array",
      "items": {
        "$ref": "#/properties/resolved_deal"
      },
      "description": "Per status: status, grain, count, claimed, claim_verdict, receipt."
    },
    "claim_verdict": {
      "enum": [
        "CONFIRM",
        "DENY",
        "CONFLICT",
        "UNVERIFIED",
        "OUT_OF_COVERAGE"
      ],
      "type": "string"
    },
    "resolved_deal": {
      "type": "object",
      "properties": {},
      "additionalProperties": true
    }
  },
  "additionalProperties": false
}
verify_loan_status_counts annotations
{
  "title": "Verify a deal's loan-status counts (derived)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
verify_claims — Verify every checkable claim in a text (bulk)
Advertised by the server during the last successful anonymous check.
Advertised read-only

Bulk verifier: paste text, get per-claim statuses. ASSERTIONS ONLY: a QUESTION ('is it $9.4M?') binds nothing and returns total 0; single-value questions are not claims and are not checked here. Deterministic grammar, four families: loan fields, pool fields, servicer identity, loan-status counts. Unparsed text is listed in unchecked_spans, never dropped. EXACT deal references (id, alias, CIK) work best; matching is never fuzzy. Statuses (verified / contradicted / insufficient_evidence / out_of_scope) are answers, not errors. Each claim has a claim_id, citations and a confidence.

verify_claims input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "description": "The paragraph / memo excerpt to check."
    },
    "deal_hint": {
      "type": "string",
      "description": "Fallback deal context when a sentence names no deal (exact resolution only)."
    },
    "period_hint": {
      "type": "string",
      "description": "YYYY-MM annotation only — latest-only server; a mismatch is noted and drops confidence one tier."
    },
    "risk_tolerance": {
      "enum": [
        "strict",
        "normal",
        "lenient"
      ],
      "type": "string",
      "description": "Default normal = max(ledger tolerance, stated precision); strict = ledger only; lenient = 2x stated precision. Counts and names are always exact."
    }
  },
  "additionalProperties": false
}
verify_claims output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "claims",
    "summary",
    "material_issues",
    "unchecked_spans",
    "search_backend",
    "tool_version"
  ],
  "properties": {
    "claims": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "claim_id",
          "claim_text",
          "status",
          "confidence"
        ],
        "properties": {
          "status": {
            "enum": [
              "verified",
              "contradicted",
              "insufficient_evidence",
              "out_of_scope"
            ],
            "type": "string"
          },
          "claim_id": {
            "type": "string"
          },
          "claim_text": {
            "type": "string"
          },
          "confidence": {
            "enum": [
              "high",
              "medium",
              "low"
            ],
            "type": "string"
          }
        },
        "additionalProperties": true
      },
      "description": "Per claim: normalized_claim, citations, notes, recommended_language."
    },
    "summary": {
      "type": "object",
      "properties": {},
      "description": "Counts: total, verified, contradicted, insufficient_evidence, out_of_scope.",
      "additionalProperties": true
    },
    "tool_version": {
      "type": "string"
    },
    "search_backend": {
      "$ref": "#/properties/material_issues/items"
    },
    "material_issues": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {},
        "additionalProperties": true
      }
    },
    "unchecked_spans": {
      "type": "array",
      "items": {
        "$ref": "#/properties/material_issues/items"
      },
      "description": "Text no grammar rule could check, with reason and hint."
    }
  },
  "additionalProperties": false
}
verify_claims annotations
{
  "title": "Verify every checkable claim in a text (bulk)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
575 ms
95th percentile latency
575 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 575 ms · metadata changed · 12 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http cmd-rvl-receipts-mcp https://receipts.cmdrvl.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add cmd-rvl-receipts-mcp --url https://receipts.cmdrvl.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable cmd-rvl-receipts-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "cmd-rvl-receipts-mcp": {
      "url": "https://receipts.cmdrvl.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "cmd-rvl-receipts-mcp": {
      "type": "streamableHttp",
      "url": "https://receipts.cmdrvl.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start cmd-rvl-receipts-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "cmd-rvl-receipts-mcp": {
      "type": "http",
      "url": "https://receipts.cmdrvl.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http cmd-rvl-receipts-mcp https://receipts.cmdrvl.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://receipts.cmdrvl.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "cmd-rvl-receipts-mcp": {
      "serverUrl": "https://receipts.cmdrvl.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like CMD+RVL Receipts MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run CMD+RVL Receipts MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing