Koskamo

SecureLend Underwriting MCP

An official MCP server for SecureLend's AI underwriting service that allows agents to open credit files, chase missing documents, screen sanctions, and draft cited underwriting memos for lenders. It supports resolving listed companies, reading filings, and scoring cases against packages, but does not approve loans.

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.

SecureLend Underwriting MCP logo, by SecureLend, Inc.Vendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by SecureLend, Inc.
You need:tools/call needs an OAuth bearer token with scope lenderEvery lender tool asks for a sign-in
MCP endpoint (Streamable HTTP)
https://mcp.securelend.ai/v1/lender/mcp
Vendor documentation

What you can do with it

  • Draft a cited credit memo from a deal package
  • Screen sanctions and chase missing documents
  • Resolve listed company data and read filings
  • Score a case against a lender's rubric

Source and maintenance

Vendor evidenceRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
securelend-lender 1.0.0
MCP protocol
2025-06-18
Tools
14 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.

SecureLend lender MCP. A deal file goes in and a cited memo comes out. A person makes the credit decision. initialize, notifications/initialized, ping, and tools/list need no token. tools/call requires an OAuth bearer token with scope lender. No tool approves a loan.

Tools

14 advertised

resolve_listed_company — Resolve listed company
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Resolve a ticker, legal name, or CIK. Writes nothing. Returns one chosen company or the candidates.

resolve_listed_company input schema
{
  "type": "object",
  "required": [
    "query",
    "asOf"
  ],
  "properties": {
    "asOf": {
      "type": "string",
      "description": "YYYY-MM-DD"
    },
    "query": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
resolve_listed_company annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
read_listed_company — Read listed company filing
Advertised by the server during the last successful anonymous check.
Open-world

Fetches the annual filing and attaches a citation to the open case when the company resolves uniquely. Ambiguous names write nothing.

read_listed_company input schema
{
  "type": "object",
  "required": [
    "asOf"
  ],
  "properties": {
    "cik": {
      "type": "string"
    },
    "asOf": {
      "type": "string",
      "description": "YYYY-MM-DD"
    },
    "query": {
      "type": "string"
    },
    "caseId": {
      "type": "string",
      "description": "CaseSchema.id. Omit to open or reuse the filing case."
    }
  },
  "additionalProperties": false
}
read_listed_company annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "destructiveHint": false
}
open_case — Open case
Advertised by the server during the last successful anonymous check.

Open a case on the caller's tenant. Same record as New file. Ignores any tenant id in the arguments.

open_case input schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Optional CaseSchema.id"
    },
    "email": {
      "type": "string"
    },
    "source": {
      "type": "string"
    },
    "legalName": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
open_case annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
read_case — Read case
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read one case: status, loan id, facts, evidence ids, gaps, recommendation, document file names and types, pending jobs, memo id plus status, provenance, discrepancies, intake re-walk, auditor confirmation, debtor verification status, funding-batch summary with breaks and findings, and covenant reviews. No storage keys. Does not approve, fund, or send.

read_case input schema
{
  "type": "object",
  "required": [
    "caseId"
  ],
  "properties": {
    "caseId": {
      "type": "string",
      "description": "CaseSchema.id"
    }
  },
  "additionalProperties": false
}
read_case annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
walk_credit_file — Walk credit file (extract + spread)
Advertised by the server during the last successful anonymous check.

Index documents on the open case, extract facts from the package (including image PDFs where supported), and spread financials into the case. Starts or returns the walk job already running. Does not draft the credit memo and does not approve a loan.

walk_credit_file input schema
{
  "type": "object",
  "required": [
    "caseId"
  ],
  "properties": {
    "caseId": {
      "type": "string",
      "description": "CaseSchema.id"
    }
  },
  "additionalProperties": false
}
walk_credit_file annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
score_case_against_pack — Score case against underwriting pack
Advertised by the server during the last successful anonymous check.

Score facts already on the open case against the active underwriting pack/rubric. Does not accept new facts in the arguments. Returns walk_pending while a file walk is still running. Does not approve a loan.

score_case_against_pack input schema
{
  "type": "object",
  "required": [
    "caseId"
  ],
  "properties": {
    "event": {
      "type": "string"
    },
    "caseId": {
      "type": "string",
      "description": "CaseSchema.id"
    }
  },
  "additionalProperties": false
}
score_case_against_pack annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
chase_missing_documents — Chase missing documents
Advertised by the server during the last successful anonymous check.

Name every missing pack document and missing required number. Drafts a chase email when the file has a borrower email, and does not send it. Returns the existing draft when the same items are still missing.

chase_missing_documents input schema
{
  "type": "object",
  "required": [
    "caseId"
  ],
  "properties": {
    "caseId": {
      "type": "string",
      "description": "CaseSchema.id"
    }
  },
  "additionalProperties": false
}
chase_missing_documents annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
screen_sanctions — Screen sanctions
Advertised by the server during the last successful anonymous check.
Open-world

Screen a name on the case with OpenSanctions. Same as Screen OpenSanctions. SANCTIONS or PEP. A missing key writes nothing and does not pass the file.

screen_sanctions input schema
{
  "type": "object",
  "required": [
    "caseId"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "caseId": {
      "type": "string",
      "description": "CaseSchema.id"
    },
    "checkType": {
      "enum": [
        "SANCTIONS",
        "PEP"
      ],
      "type": "string"
    }
  },
  "additionalProperties": false
}
screen_sanctions annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "destructiveHint": false
}
draft_memo_from_file — Draft memo from file
Advertised by the server during the last successful anonymous check.

Draft a credit memo from the case file. Same CaseSchema.id as Draft from file. Uses SECURELEND_MODEL when it is not template, then a saved tenant model, otherwise the file template.

draft_memo_from_file input schema
{
  "type": "object",
  "required": [
    "caseId"
  ],
  "properties": {
    "caseId": {
      "type": "string",
      "description": "CaseSchema.id"
    }
  },
  "additionalProperties": false
}
draft_memo_from_file annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
start_underwriting_package — Start underwriting package
Advertised by the server during the last successful anonymous check.
Open-world

Create a new underwriting package for a borrower and return deskUrl, dashboardUrl (hosted package page), and exportUrl (zip). Background checks may start automatically. Requires borrower, amount, currency, and security; a secured loan also needs a complete guarantee. Does not approve the loan. Human review remains required.

start_underwriting_package input schema
{
  "type": "object",
  "required": [
    "borrower",
    "amount",
    "currency",
    "security"
  ],
  "properties": {
    "amount": {
      "type": "number"
    },
    "pricing": {
      "type": "string"
    },
    "purpose": {
      "type": "string"
    },
    "borrower": {
      "type": "string",
      "description": "Legal name, ticker, or both. NASDAQ: OPTX and a trailing (OPTX) are the listed issuer. A private company name returns connectUrl and sources."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code, for example USD."
    },
    "security": {
      "enum": [
        "unsecured",
        "secured"
      ],
      "type": "string"
    },
    "guarantees": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "who": {
            "type": "string"
          },
          "type": {
            "enum": [
              "personal_guarantee",
              "corporate_or_parent",
              "blanket_lien",
              "asset",
              "government_guarantee"
            ],
            "type": "string"
          },
          "asset": {
            "type": "string"
          },
          "limited": {
            "type": "boolean"
          },
          "program": {
            "type": "string"
          }
        }
      }
    },
    "tenorMonths": {
      "type": "number"
    },
    "amortisation": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
start_underwriting_package annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "destructiveHint": false
}
read_package — Read underwriting package
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read an underwriting package. Does not re-run the checks. POST requires an OAuth bearer token with scope lender. Pass packageId or caseId for the caller's workspace.

read_package input schema
{
  "type": "object",
  "properties": {
    "caseId": {
      "type": "string"
    },
    "packageId": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
read_package annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
register_financed_invoice — Register financed invoice
Advertised by the server during the last successful anonymous check.

Register a financed invoice on the blind anti-fraud registry. Stores only a keyed HMAC token and registrar hash, never supplier, debtor, invoice number, or amount. Returns conflict when another lender already registered it.

register_financed_invoice input schema
{
  "type": "object",
  "properties": {
    "amount": {
      "type": "number",
      "description": "Invoice face amount."
    },
    "caseId": {
      "type": "string",
      "description": "Optional CaseSchema.id to register a purchase row from Book."
    },
    "debtor": {
      "type": "string",
      "description": "Account debtor (bill_to) legal name."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code, for example USD or EUR."
    },
    "supplier": {
      "type": "string",
      "description": "Supplier or vendor legal name."
    },
    "purchaseId": {
      "type": "string",
      "description": "Optional purchase row id on the case."
    },
    "invoiceNumber": {
      "type": "string",
      "description": "Invoice number as printed."
    }
  },
  "additionalProperties": false
}
register_financed_invoice annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}
check_invoice_financed — Check invoice financed status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Check whether an invoice has already been financed on the blind registry. Pass supplier, debtor, invoiceNumber, amount, and currency, or a token. Returns only financed (true or false), matchKind, ownRegistration, and token. Never returns lender identity or invoice details.

check_invoice_financed input schema
{
  "type": "object",
  "properties": {
    "token": {
      "type": "string",
      "description": "Optional invtok_... blind token."
    },
    "amount": {
      "type": "number",
      "description": "Invoice face amount."
    },
    "debtor": {
      "type": "string",
      "description": "Account debtor (bill_to) legal name."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code, for example USD or EUR."
    },
    "supplier": {
      "type": "string",
      "description": "Supplier or vendor legal name."
    },
    "invoiceNumber": {
      "type": "string",
      "description": "Invoice number as printed."
    }
  },
  "additionalProperties": false
}
check_invoice_financed annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
release_financed_invoice — Release financed invoice
Advertised by the server during the last successful anonymous check.

Delete a financed invoice registration from the blind anti-fraud registry when the invoice is paid off or withdrawn. Only the registering workspace can delete its token.

release_financed_invoice input schema
{
  "type": "object",
  "properties": {
    "token": {
      "type": "string",
      "description": "Optional invtok_... blind token to delete."
    },
    "amount": {
      "type": "number",
      "description": "Invoice face amount."
    },
    "caseId": {
      "type": "string",
      "description": "Optional CaseSchema.id to release a purchase row from Book."
    },
    "debtor": {
      "type": "string",
      "description": "Account debtor (bill_to) legal name."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code, for example USD or EUR."
    },
    "supplier": {
      "type": "string",
      "description": "Supplier or vendor legal name."
    },
    "purchaseId": {
      "type": "string",
      "description": "Optional purchase row id on the case."
    },
    "invoiceNumber": {
      "type": "string",
      "description": "Invoice number as printed."
    }
  },
  "additionalProperties": false
}
release_financed_invoice annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "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
787 ms
95th percentile latency
787 ms

Maintenance history

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

  • · probe · passed · 787 ms · metadata changed · 14 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 securelend-underwriting-mcp https://mcp.securelend.ai/v1/lender/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 securelend-underwriting-mcp --url https://mcp.securelend.ai/v1/lender/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable securelend-underwriting-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "securelend-underwriting-mcp": {
      "url": "https://mcp.securelend.ai/v1/lender/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "securelend-underwriting-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.securelend.ai/v1/lender/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start securelend-underwriting-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "securelend-underwriting-mcp": {
      "type": "http",
      "url": "https://mcp.securelend.ai/v1/lender/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 securelend-underwriting-mcp https://mcp.securelend.ai/v1/lender/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "securelend-underwriting-mcp": {
      "url": "https://mcp.securelend.ai/v1/lender/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": {
    "securelend-underwriting-mcp": {
      "serverUrl": "https://mcp.securelend.ai/v1/lender/mcp"
    }
  }
}

Let your agent find its tools

Find servers like SecureLend Underwriting 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 SecureLend Underwriting 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