Skip to main content
GET /v2/lenders/:lenderId returns the public profile of a registered lender — used by verifiers (consumer agents, MCP verify_credit_risk callers, partner portals) to resolve the lenderId embedded in a Schema B credit-risk attestation to a human-readable lender + their on-chain signing wallet for forensic cross-check.
This endpoint is public — no JWT, no IP-allowlist. Only ACTIVE / PENDING_KYB / SUSPENDED / ARCHIVED lifecycle states are exposed (no operator-only fields).

When to use

  • A consumer agent has parsed a Schema B attestation and needs to display who underwrote the merchant (human-readable name + jurisdiction + regulatory reference)
  • A verifier needs to cross-check the on-chain issuerWallet against the registered signingWallet to detect schema impersonation
  • A partner portal needs to show track-record (issuedAttestationCount, lastAttestationAt) before routing a merchant to this lender

Request

GET /v2/lenders/:lenderId
ParamTypeNotes
lenderIdstringKebab-case, 3-64 chars, matches ^[a-z0-9_-]{3,64}$

Response (200, found)

{
  "found": true,
  "lenderId": "crediblex-uae",
  "displayName": "CredibleX (UAE)",
  "archetype": "fsra-licensed",
  "jurisdiction": "AE",
  "status": "ACTIVE",
  "signingWallet": "0xD5F6FB7b6E71DD7F609b8442951444E5a5C76cce",
  "regulatorReference": "FSRA-12345",
  "issuedAttestationCount": 42,
  "lastAttestationAt": "2026-06-11T22:00:00Z"
}

Response (200, not found)

{
  "found": false,
  "lenderId": "unknown-lender"
}
The found discriminator lets MCP / agent consumers branch without 404-handling.

Field reference

FieldTypeNotes
displayNamestringHuman-readable lender name (operator-set)
archetypeenumfsra-licensed | defi-vault | generic
jurisdictionstringISO 3166-1 alpha-2 country code, or GLOBAL for unrestricted (DeFi vaults)
statusenumPENDING_KYB | ACTIVE | SUSPENDED | ARCHIVED — only ACTIVE lenders can mint Schema B attestations
signingWallethex0x-prefixed 20-byte EVM address used to sign attestations on-chain
regulatorReferencestring | nullFSRA / SCA / etc. license number when applicable
issuedAttestationCountintLifetime count of Schema B attestations this lender has issued

Lifecycle timeline

GET /v2/lenders/:lenderId/timeline
Returns the whitelist-redacted lifecycle history of a registered lender — used by third-party verifiers asking the temporal question: was this lender ACTIVE at the time a Schema B attestation was minted? A point-in-time status lookup against GET /v2/lenders/:lenderId only answers right now; the timeline lets a verifier replay the lender’s state at any occurredAt in the past.
This endpoint is public — no JWT, no IP-allowlist. The response is intentionally redacted to a verifier-safe whitelist. The following operator-only fields are deliberately NOT in the response: actorId (which admin made the change), reason (free-text justification), and raw before/after value diffs for metadata-change events (display name, jurisdiction, signing wallet, regulator reference, contact notes). Only previousStatus / newStatus are exposed, and only for LENDER_REGISTERED + LENDER_STATUS_CHANGED events.

Request

ParamTypeNotes
lenderIdstringKebab-case, matches ^[a-z0-9_-]{3,64}$

Response (200)

{
  "lenderId": "crediblex-uae",
  "count": 3,
  "events": [
    {
      "occurredAt": "2026-06-10T14:22:11Z",
      "eventType": "LENDER_STATUS_CHANGED",
      "previousStatus": "PENDING_KYB",
      "newStatus": "ACTIVE"
    },
    {
      "occurredAt": "2026-06-08T09:15:03Z",
      "eventType": "LENDER_DISPLAY_NAME_CHANGED",
      "previousStatus": null,
      "newStatus": null
    },
    {
      "occurredAt": "2026-06-01T00:00:00Z",
      "eventType": "LENDER_REGISTERED",
      "previousStatus": null,
      "newStatus": "PENDING_KYB"
    }
  ]
}
Events are ordered newest-first and capped at 500 events per response (hard cap — older events are not paginated).

Event types

eventTypeCarries previousStatus / newStatus?
LENDER_REGISTEREDpreviousStatus: null, newStatus set (typically PENDING_KYB)
LENDER_STATUS_CHANGEDboth set
LENDER_DISPLAY_NAME_CHANGEDboth null
LENDER_JURISDICTION_CHANGEDboth null
LENDER_SIGNING_WALLET_CHANGEDboth null
LENDER_REGULATOR_REFERENCE_CHANGEDboth null
LENDER_CONTACT_NOTES_CHANGEDboth null
previousStatus / newStatus values are drawn from the lifecycle enum: PENDING_KYB | ACTIVE | SUSPENDED | ARCHIVED. For metadata-change events the raw before/after values are intentionally redacted — verifiers can confirm that a change occurred at occurredAt (and combine that with the current public profile) but cannot read the operator-only diff.

Curl example

curl -s https://apiv3.droplinked.com/v2/lenders/crediblex-uae/timeline | jq .

MCP wrapper

Consumer agents reach this endpoint via the get_lender_history MCP tool — already live on mcp.droplinked.com — so ChatGPT / Claude / OpenAI Agents SDK callers can replay a lender’s lifecycle without prior knowledge of the path scheme.