{
  "object": "mcp.server",
  "status": "ROADMAP",
  "property": "apis.loans",
  "note": "No origination row at this door is live. Nothing at this door is priced. No tool takes an Application, requests a Decision, or returns a price. The compute tools are performed, keyless and free.",
  "tools": [
    {
      "name": "read_register",
      "description": "The capability register as typed rows.",
      "endpoint": "GET https://apis.loans/v1/register",
      "rows": [
        {
          "capability": "Application state and Stage, with the Terminal Outcome set",
          "verb": "apply",
          "route": "GET /v1/applications/{id}",
          "gate": "none",
          "documented_refusal": "UNRATIFIED",
          "request_schema": null,
          "status": "ROADMAP"
        },
        {
          "capability": "Application intake",
          "verb": "apply",
          "route": "POST /v1/applications",
          "gate": "signer-R · lenderReserved: take the Application",
          "documented_refusal": "BLOCKED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/ApplicationCreateRequest",
          "status": "ROADMAP"
        },
        {
          "capability": "Timer Ladder state, every rung with a named responsible party",
          "verb": "apply",
          "route": "GET /v1/applications/{id}/clocks",
          "gate": "none",
          "documented_refusal": "UNRATIFIED",
          "request_schema": null,
          "status": "ROADMAP"
        },
        {
          "capability": "Disclosure rendering, with delivery evidence on the artifact",
          "verb": "disclose",
          "route": "POST /v1/applications/{id}/disclosures",
          "gate": "none",
          "documented_refusal": "UNRATIFIED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/DisclosureRenderRequest",
          "status": "ROADMAP"
        },
        {
          "capability": "Redisclosure on a changed circumstance",
          "verb": "disclose",
          "route": "POST /v1/applications/{id}/disclosures/reissue",
          "gate": "none",
          "documented_refusal": "UNRATIFIED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/DisclosureReissueRequest",
          "status": "ROADMAP"
        },
        {
          "capability": "Advisory Proposal, with no commit power, whoever made it",
          "verb": "decide",
          "route": "POST /v1/applications/{id}/proposals",
          "gate": "none",
          "documented_refusal": "UNRATIFIED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/ProposalCreateRequest",
          "status": "ROADMAP"
        },
        {
          "capability": "Decision",
          "verb": "decide",
          "route": "POST /v1/applications/{id}/decision",
          "gate": "signer-R · lenderReserved: decide",
          "documented_refusal": "BLOCKED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/DecisionRequestRequest",
          "status": "ROADMAP"
        },
        {
          "capability": "Decision artifact intake, adverse-action notice inside it",
          "verb": "decide",
          "route": "PUT /v1/applications/{id}/decision",
          "gate": "none",
          "documented_refusal": "UNRATIFIED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/DecisionRecordRequest",
          "status": "ROADMAP"
        },
        {
          "capability": "Consummation record",
          "verb": "consummate",
          "route": "POST /v1/applications/{id}/consummation",
          "gate": "none",
          "documented_refusal": "UNRATIFIED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/ConsummationRecordRequest",
          "status": "ROADMAP"
        },
        {
          "capability": "Rescission window, the one clock that forbids a stage",
          "verb": "consummate",
          "route": "GET /v1/applications/{id}/rescission",
          "gate": "none",
          "documented_refusal": "UNRATIFIED",
          "request_schema": null,
          "status": "ROADMAP"
        },
        {
          "capability": "Notarial act, including remote online notarization",
          "verb": "consummate",
          "route": "POST /v1/signings",
          "gate": "signer-L · requiresSigner: notary-commission",
          "documented_refusal": "BLOCKED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/SigningCreateRequest",
          "status": "ROADMAP"
        },
        {
          "capability": "Extension of credit",
          "verb": "fund",
          "route": "POST /v1/facilities",
          "gate": "signer-R · lenderReserved: extend credit",
          "documented_refusal": "BLOCKED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/FacilityCreateRequest",
          "status": "ROADMAP"
        },
        {
          "capability": "Advance against a Mandate, inside a ceiling the Lender committed",
          "verb": "fund",
          "route": "POST /v1/facilities/{id}/advances",
          "gate": "access · requiresAccess: sponsor-bank rail",
          "documented_refusal": "UNRATIFIED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/AdvanceCreateRequest",
          "status": "ROADMAP"
        },
        {
          "capability": "Perfection filing",
          "verb": "perfect",
          "route": "POST /v1/collateral/{id}/perfection",
          "gate": "access · requiresAccess: county e-recording",
          "documented_refusal": "UNRATIFIED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/PerfectionCreateRequest",
          "status": "ROADMAP"
        },
        {
          "capability": "Filing status, as the recording office answers it",
          "verb": "perfect",
          "route": "GET /v1/collateral/{id}/perfection",
          "gate": "none",
          "documented_refusal": "UNRATIFIED",
          "request_schema": null,
          "status": "ROADMAP"
        },
        {
          "capability": "Release filing",
          "verb": "perfect",
          "route": "POST /v1/collateral/{id}/release",
          "gate": "access · requiresAccess: county e-recording",
          "documented_refusal": "UNRATIFIED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/ReleaseCreateRequest",
          "status": "ROADMAP"
        },
        {
          "capability": "Amortization schedule, level payment, with per-period interest and principal",
          "verb": "compute",
          "route": "POST /v1/math/amortization",
          "gate": "none",
          "documented_refusal": "PERFORMED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/AmortizationRequest",
          "status": "PERFORMED"
        },
        {
          "capability": "Per-diem interest on a balance, on the day-count convention the caller names",
          "verb": "compute",
          "route": "POST /v1/math/per-diem",
          "gate": "none",
          "documented_refusal": "PERFORMED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/PerDiemRequest",
          "status": "PERFORMED"
        },
        {
          "capability": "Projected balance to close at a date, which is arithmetic and not an attested Payoff quote",
          "verb": "compute",
          "route": "POST /v1/math/payoff-projection",
          "gate": "none",
          "documented_refusal": "PERFORMED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/PayoffProjectionRequest",
          "status": "PERFORMED"
        },
        {
          "capability": "Business-day arithmetic, federal holidays computed rather than tabled",
          "verb": "compute",
          "route": "POST /v1/calendars/business-days",
          "gate": "none",
          "documented_refusal": "PERFORMED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/BusinessDaysRequest",
          "status": "PERFORMED"
        },
        {
          "capability": "The published register as typed rows, every route with its gate and what it answers",
          "verb": "compute",
          "route": "GET /v1/register",
          "gate": "none",
          "documented_refusal": "PERFORMED",
          "request_schema": null,
          "status": "PERFORMED"
        },
        {
          "capability": "The six lifecycle verbs, their artifacts, the rule that fixes each, and the five Terminal Outcomes",
          "verb": "compute",
          "route": "GET /v1/lifecycle",
          "gate": "none",
          "documented_refusal": "PERFORMED",
          "request_schema": null,
          "status": "PERFORMED"
        },
        {
          "capability": "Given a route in the register, the refusal it carries and why it carries it",
          "verb": "compute",
          "route": "POST /v1/refusals/explain",
          "gate": "none",
          "documented_refusal": "PERFORMED",
          "request_schema": "https://apis.loans/openapi.json#/components/schemas/ExplainRefusalRequest",
          "status": "PERFORMED"
        }
      ]
    },
    {
      "name": "explain_refusal",
      "description": "Given a route, return which refusal it carries and why.",
      "endpoint": "POST https://apis.loans/v1/refusals/explain",
      "input_schema": {
        "$ref": "https://apis.loans/openapi.json#/components/schemas/ExplainRefusalRequest"
      },
      "note": "Performed. It returns the exact body that route answers with, so the refusal can be read without being provoked."
    },
    {
      "name": "lifecycle",
      "description": "The six verbs, their artifacts, and the five Terminal Outcomes.",
      "endpoint": "GET https://apis.loans/v1/lifecycle",
      "verbs": [
        {
          "verb": "apply",
          "artifact": "Application",
          "rule": "Regulation B's own trigger word, 12 CFR 1002.2(f). The moment it exists, clocks start and duties attach."
        },
        {
          "verb": "disclose",
          "artifact": "Disclosure",
          "rule": "TRID: the Loan Estimate within three business days, the Closing Disclosure received three business days before consummation."
        },
        {
          "verb": "decide",
          "artifact": "Decision",
          "rule": "The Lender's typed determination. A Declination IS a Decision, and the adverse-action notice ships inside the artifact."
        },
        {
          "verb": "consummate",
          "artifact": "Consummation",
          "rule": "The moment the Borrower becomes contractually obligated, 12 CFR 1026.2(a)(13), fixed by state law and only recorded here."
        },
        {
          "verb": "fund",
          "artifact": "Advance",
          "rule": "Money moves, with a settlement_ref on the event."
        },
        {
          "verb": "perfect",
          "artifact": "Perfection",
          "rule": "The filing office's own acceptance. Not our claim, and not the Lender's."
        }
      ],
      "terminal_outcomes": [
        "funded",
        "offered-not-accepted",
        "declined",
        "withdrawn",
        "closed-incomplete"
      ]
    },
    {
      "name": "compute",
      "description": "The performed rows: amortization, per-diem interest, payoff projection, and business-day arithmetic. Keyless and free. Each computes on inputs the caller supplies and none quotes a rate, offers a term or decides anything.",
      "endpoints": [
        "POST https://apis.loans/v1/math/amortization",
        "POST https://apis.loans/v1/math/per-diem",
        "POST https://apis.loans/v1/math/payoff-projection",
        "POST https://apis.loans/v1/calendars/business-days",
        "POST https://apis.loans/v1/refusals/explain"
      ]
    }
  ],
  "openapi": "https://apis.loans/openapi.json",
  "llms_txt": "https://apis.loans/llms.txt",
  "contact": "keys@apis.finance"
}