{
    "openapi": "3.1.0",
    "info": {
        "title": "Credicorp public API",
        "version": "1.0.0",
        "description": "Public, no-authentication API surface for the Credicorp marketing site, including the guarded public agent contracts. Illustrations and pre-screens are not lending decisions, and public submission paths retain their explicit safeguards.",
        "contact": {
            "name": "Credicorp Limited",
            "url": "https://credicorp.co.uk/contact/"
        }
    },
    "servers": [
        {
            "url": "https://credicorp.co.uk"
        }
    ],
    "paths": {
        "/api/credi/public": {
            "post": {
                "operationId": "askCredi",
                "summary": "Ask the public Credi assistant a general question about Credicorp business lending.",
                "description": "KB-bounded assistant. Answers general questions about products, eligibility and costs. It cannot see or act on any account; account-specific questions return a sign-in handoff. CSRF-protected (double-submit cc_csrf cookie + matching token) and rate-limited.",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "message"
                                ],
                                "properties": {
                                    "message": {
                                        "type": "string",
                                        "maxLength": 500,
                                        "description": "The visitor question (max 500 characters)."
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "An answer (or a sign-in handoff for account-specific questions).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/CrediAnswer"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Invalid or missing CSRF token."
                    },
                    "422": {
                        "description": "Empty message or message longer than 500 characters."
                    },
                    "429": {
                        "description": "Rate limit exceeded \u2014 try again shortly."
                    }
                }
            }
        },
        "/api/rates": {
            "get": {
                "operationId": "getRates",
                "summary": "Machine-readable representative pricing for the three products.",
                "description": "Read-only JSON: the Business Loan, Credicorp Flex and Credicorp Slice with representative example figures sourced from the published pricing atoms, a disclaimer and a schema.org FinancialProduct mirror. For AI agents and the agent plane. No authentication; safe to cache.",
                "responses": {
                    "200": {
                        "description": "Product pricing payload.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/glossary": {
            "get": {
                "operationId": "getGlossary",
                "summary": "Machine-readable business-finance glossary.",
                "description": "Read-only JSON list of glossary terms and definitions, for agent consumption. No authentication; safe to cache.",
                "responses": {
                    "200": {
                        "description": "Glossary payload (terms + definitions).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/healthz": {
            "get": {
                "operationId": "health",
                "summary": "Liveness/readiness probe for the marketing app.",
                "responses": {
                    "200": {
                        "description": "The app is up.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "ok"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/pay": {
            "get": {
                "operationId": "startRepaymentSession",
                "summary": "Open a secure hosted card-payment session to repay an existing Credicorp agreement.",
                "description": "Loan-servicing repayment, not retail checkout. Quote the agreement reference (shown on the agreement and every letter/email from Credicorp) to continue to the secure card-payment page on the client portal. The amount is determined by the agreement \u2014 see https://credicorp.co.uk/make-a-payment/ for the human flow and bank-transfer alternative. Signed-in account holders can also pay in the portal.",
                "servers": [
                    {
                        "url": "https://clients.credicorp.co.uk"
                    }
                ],
                "parameters": [
                    {
                        "name": "ref",
                        "in": "query",
                        "required": true,
                        "description": "The Credicorp agreement reference the payment is for.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "x-payment-info": {
                    "intent": "session",
                    "method": "card",
                    "amount": null,
                    "currency": "GBP",
                    "description": "Repayment of an existing Credicorp business finance agreement; the amount due is determined by the agreement reference. Card is processed by Stripe on the hosted payment page."
                },
                "responses": {
                    "200": {
                        "description": "The hosted secure card-payment session page."
                    }
                }
            }
        },
        "/mcp": {
            "post": {
                "operationId": "mcpRpc",
                "summary": "Public MCP (Model Context Protocol) transport \u2014 JSON-RPC 2.0 over HTTP.",
                "description": "Unauthenticated, read-only MCP server (initialize, tools/list, tools/call). Reverse-proxied to the Credicorp hub public MCP ring. See https://credicorp.co.uk/.well-known/mcp/server-card.json for the capability surface.",
                "responses": {
                    "200": {
                        "description": "JSON-RPC 2.0 response from the MCP server."
                    }
                }
            },
            "get": {
                "operationId": "mcpServerCardProbe",
                "summary": "MCP server-card probe.",
                "responses": {
                    "200": {
                        "description": "MCP server identity / capability probe."
                    }
                }
            }
        },
        "/partner/mcp": {
            "post": {
                "operationId": "partnerMcpRpc",
                "summary": "Authenticated, read-only MCP transport (OAuth 2.0 bearer token required).",
                "description": "Staff/owner read-only MCP tier. Requires a client_credentials bearer token from https://credicorp.co.uk/oauth/token. Reverse-proxied to the hub partner MCP. See https://credicorp.co.uk/.well-known/oauth-protected-resource.",
                "security": [
                    {
                        "oauth2ClientCredentials": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "JSON-RPC 2.0 response from the authenticated MCP server."
                    },
                    "401": {
                        "description": "Missing or invalid bearer token."
                    }
                }
            },
            "get": {
                "operationId": "partnerMcpProbe",
                "summary": "Authenticated MCP server-card probe.",
                "security": [
                    {
                        "oauth2ClientCredentials": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Authenticated MCP capability probe."
                    }
                }
            }
        },
        "/oauth/token": {
            "post": {
                "operationId": "oauthToken",
                "summary": "OAuth 2.0 token endpoint (client_credentials grant).",
                "description": "Exchange client_credentials (client_secret_basic or client_secret_post) for a short-lived read-only bearer access token. Reverse-proxied to the hub OAuth plane.",
                "responses": {
                    "200": {
                        "description": "Access token response (RFC 6749)."
                    },
                    "400": {
                        "description": "Invalid request / grant."
                    },
                    "401": {
                        "description": "Invalid client authentication."
                    }
                }
            }
        },
        "/oauth/jwks": {
            "get": {
                "operationId": "oauthJwks",
                "summary": "JSON Web Key Set for verifying access tokens (RFC 7517).",
                "responses": {
                    "200": {
                        "description": "The public JWKS document."
                    }
                }
            }
        },
        "/oauth/introspect": {
            "post": {
                "operationId": "oauthIntrospect",
                "summary": "OAuth 2.0 token introspection (RFC 7662).",
                "description": "Client-authenticated introspection of an access token. Reverse-proxied to the hub.",
                "responses": {
                    "200": {
                        "description": "Introspection response (RFC 7662)."
                    },
                    "401": {
                        "description": "Invalid client authentication."
                    }
                }
            }
        },
        "/api/agent/get-loan-products": {
            "get": {
                "operationId": "agentGetLoanProducts",
                "summary": "Return the current published Credicorp product catalogue and indicative pricing from the same pricing source used by the public calculators.",
                "x-agent-contract": {
                    "name": "get-loan-products",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": [],
                        "required": [],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "lender": {
                                "type": "string"
                            },
                            "currency": {
                                "type": "string"
                            },
                            "products": {
                                "type": "array"
                            }
                        },
                        "required": [
                            "ok",
                            "lender",
                            "currency",
                            "products"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "lender": {
                                            "type": "string"
                                        },
                                        "currency": {
                                            "type": "string"
                                        },
                                        "products": {
                                            "type": "array"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "lender",
                                        "currency",
                                        "products"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                }
            }
        },
        "/api/agent/check-eligibility": {
            "post": {
                "operationId": "agentCheckEligibility",
                "summary": "Run a deterministic, non-decisioning pre-screen against the supplied business facts. A positive result is not an approval or offer.",
                "x-agent-contract": {
                    "name": "check-eligibility",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "business_type": {
                                "type": "string"
                            },
                            "trading_years": {
                                "type": "number"
                            },
                            "amount_gbp": {
                                "type": "number"
                            },
                            "term_days": {
                                "type": "integer"
                            },
                            "question": {
                                "type": "string"
                            }
                        },
                        "required": [],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "verdict": {
                                "type": "string"
                            },
                            "reasons": {
                                "type": "array"
                            },
                            "next_steps": {
                                "type": "array"
                            },
                            "disclaimer": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "ok",
                            "verdict",
                            "reasons",
                            "next_steps",
                            "disclaimer"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "verdict": {
                                            "type": "string"
                                        },
                                        "reasons": {
                                            "type": "array"
                                        },
                                        "next_steps": {
                                            "type": "array"
                                        },
                                        "disclaimer": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "verdict",
                                        "reasons",
                                        "next_steps",
                                        "disclaimer"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "business_type": {
                                        "type": "string"
                                    },
                                    "trading_years": {
                                        "type": "number"
                                    },
                                    "amount_gbp": {
                                        "type": "number"
                                    },
                                    "term_days": {
                                        "type": "integer"
                                    },
                                    "question": {
                                        "type": "string"
                                    }
                                },
                                "required": [],
                                "additionalProperties": false
                            }
                        }
                    }
                }
            }
        },
        "/api/agent/calculate-repayment": {
            "post": {
                "operationId": "agentCalculateRepayment",
                "summary": "Calculate an indicative illustration for a published Business Loan, Flex drawing, or Slice purchase. It is not an offer or lending decision.",
                "x-agent-contract": {
                    "name": "calculate-repayment",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "product": {
                                "type": "string"
                            },
                            "amount_gbp": {
                                "type": "number"
                            },
                            "term_days": {
                                "type": "integer"
                            },
                            "credit_limit_gbp": {
                                "type": "number"
                            },
                            "drawn_gbp": {
                                "type": "number"
                            },
                            "instalments": {
                                "type": "integer"
                            }
                        },
                        "required": [],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "product": {
                                "type": "string"
                            },
                            "disclaimer": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "ok",
                            "product",
                            "disclaimer"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "product": {
                                            "type": "string"
                                        },
                                        "disclaimer": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "product",
                                        "disclaimer"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "product": {
                                        "type": "string"
                                    },
                                    "amount_gbp": {
                                        "type": "number"
                                    },
                                    "term_days": {
                                        "type": "integer"
                                    },
                                    "credit_limit_gbp": {
                                        "type": "number"
                                    },
                                    "drawn_gbp": {
                                        "type": "number"
                                    },
                                    "instalments": {
                                        "type": "integer"
                                    }
                                },
                                "required": [],
                                "additionalProperties": false
                            }
                        }
                    }
                }
            }
        },
        "/api/agent/get-application-status": {
            "get": {
                "operationId": "agentGetApplicationStatus",
                "summary": "Return a coarse application status only after both the application reference and its application email are supplied. It is deliberately anti-enumeration guarded.",
                "x-agent-contract": {
                    "name": "get-application-status",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "reference": {
                                "type": "string"
                            },
                            "email": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "reference",
                            "email"
                        ],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "status": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "ok",
                            "status"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "status": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "status"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                }
            }
        },
        "/api/agent/check-application-status": {
            "get": {
                "operationId": "agentCheckApplicationStatus",
                "summary": "Alias of the protected coarse application-status lookup; both reference and application email are required.",
                "x-agent-contract": {
                    "name": "check-application-status",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "reference": {
                                "type": "string"
                            },
                            "email": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "reference",
                            "email"
                        ],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "status": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "ok",
                            "status"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "status": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "status"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                }
            }
        },
        "/api/agent/start-application": {
            "post": {
                "operationId": "agentStartApplication",
                "summary": "Create a validated deep link into the guarded application form. It neither creates a draft nor submits personal or financial data.",
                "x-agent-contract": {
                    "name": "start-application",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "product": {
                                "type": "string"
                            },
                            "amount_gbp": {
                                "type": "integer"
                            },
                            "credit_limit_gbp": {
                                "type": "integer"
                            },
                            "term_days": {
                                "type": "integer"
                            }
                        },
                        "required": [
                            "product"
                        ],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "redirect_url": {
                                "type": "string"
                            },
                            "prefilled_fields": {
                                "type": "array"
                            },
                            "submission_required": {
                                "type": "boolean"
                            }
                        },
                        "required": [
                            "ok",
                            "redirect_url",
                            "prefilled_fields",
                            "submission_required"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "redirect_url": {
                                            "type": "string"
                                        },
                                        "prefilled_fields": {
                                            "type": "array"
                                        },
                                        "submission_required": {
                                            "type": "boolean"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "redirect_url",
                                        "prefilled_fields",
                                        "submission_required"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "product": {
                                        "type": "string"
                                    },
                                    "amount_gbp": {
                                        "type": "integer"
                                    },
                                    "credit_limit_gbp": {
                                        "type": "integer"
                                    },
                                    "term_days": {
                                        "type": "integer"
                                    }
                                },
                                "required": [
                                    "product"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                }
            }
        },
        "/api/agent/get-contact-info": {
            "get": {
                "operationId": "agentGetContactInfo",
                "summary": "Return current public contact channels from the same contact resolver used by the human-facing pages.",
                "x-agent-contract": {
                    "name": "get-contact-info",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "topic": {
                                "type": "string"
                            }
                        },
                        "required": [],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "email": {
                                "type": "string"
                            },
                            "callback_url": {
                                "type": "string"
                            },
                            "contact_page_url": {
                                "type": "string"
                            },
                            "hours": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "ok",
                            "email",
                            "callback_url",
                            "contact_page_url",
                            "hours"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "email": {
                                            "type": "string"
                                        },
                                        "callback_url": {
                                            "type": "string"
                                        },
                                        "contact_page_url": {
                                            "type": "string"
                                        },
                                        "hours": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "email",
                                        "callback_url",
                                        "contact_page_url",
                                        "hours"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                }
            }
        },
        "/api/agent/find-case-study": {
            "get": {
                "operationId": "agentFindCaseStudy",
                "summary": "Search the currently published case-study corpus using optional sector and use-case filters.",
                "x-agent-contract": {
                    "name": "find-case-study",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "sector": {
                                "type": "string"
                            },
                            "use_case": {
                                "type": "string"
                            }
                        },
                        "required": [],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "results": {
                                "type": "array"
                            }
                        },
                        "required": [
                            "ok",
                            "results"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "results": {
                                            "type": "array"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "results"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                }
            }
        },
        "/api/agent/get-faq-topics": {
            "get": {
                "operationId": "agentGetFaqTopics",
                "summary": "List categories and article counts from the published FAQ corpus, or return one requested category.",
                "x-agent-contract": {
                    "name": "get-faq-topics",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "topic": {
                                "type": "string"
                            }
                        },
                        "required": [],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "count": {
                                "type": "integer"
                            },
                            "topics": {
                                "type": "array"
                            }
                        },
                        "required": [
                            "ok",
                            "count",
                            "topics"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "count": {
                                            "type": "integer"
                                        },
                                        "topics": {
                                            "type": "array"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "count",
                                        "topics"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                }
            }
        },
        "/api/agent/search-faqs": {
            "get": {
                "operationId": "agentSearchFaqs",
                "summary": "Search the published FAQ corpus and return ranked, canonical FAQ links.",
                "x-agent-contract": {
                    "name": "search-faqs",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "q": {
                                "type": "string"
                            },
                            "query": {
                                "type": "string"
                            },
                            "category": {
                                "type": "string"
                            },
                            "limit": {
                                "type": "integer"
                            }
                        },
                        "required": [],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "query": {
                                "type": "string"
                            },
                            "count": {
                                "type": "integer"
                            },
                            "matches": {
                                "type": "array"
                            }
                        },
                        "required": [
                            "ok",
                            "query",
                            "count",
                            "matches"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "query": {
                                            "type": "string"
                                        },
                                        "count": {
                                            "type": "integer"
                                        },
                                        "matches": {
                                            "type": "array"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "query",
                                        "count",
                                        "matches"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                }
            }
        },
        "/api/agent/get-glossary-term": {
            "get": {
                "operationId": "agentGetGlossaryTerm",
                "summary": "Look up or search the published Credicorp glossary. An empty query returns the full current index.",
                "x-agent-contract": {
                    "name": "get-glossary-term",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "term": {
                                "type": "string"
                            },
                            "q": {
                                "type": "string"
                            }
                        },
                        "required": [],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "term": {
                                "type": "object"
                            },
                            "alternatives": {
                                "type": "array"
                            }
                        },
                        "required": [
                            "ok",
                            "term",
                            "alternatives"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "term": {
                                            "type": "object"
                                        },
                                        "alternatives": {
                                            "type": "array"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "term",
                                        "alternatives"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                }
            }
        },
        "/api/agent/find-local-office": {
            "get": {
                "operationId": "agentFindLocalOffice",
                "summary": "Describe Credicorp\u2019s online-only model and search actual published regional information pages; it does not invent branches or addresses.",
                "x-agent-contract": {
                    "name": "find-local-office",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "city": {
                                "type": "string"
                            },
                            "location": {
                                "type": "string"
                            },
                            "region": {
                                "type": "string"
                            }
                        },
                        "required": [],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "service_model": {
                                "type": "string"
                            },
                            "has_physical_branches": {
                                "type": "boolean"
                            },
                            "regional_pages": {
                                "type": "array"
                            }
                        },
                        "required": [
                            "ok",
                            "service_model",
                            "has_physical_branches",
                            "regional_pages"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "service_model": {
                                            "type": "string"
                                        },
                                        "has_physical_branches": {
                                            "type": "boolean"
                                        },
                                        "regional_pages": {
                                            "type": "array"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "service_model",
                                        "has_physical_branches",
                                        "regional_pages"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                }
            }
        },
        "/api/agent/get-product-eligibility": {
            "get": {
                "operationId": "agentGetProductEligibility",
                "summary": "Return published universal criteria and current product ranges from the live-or-fixture pricing resolver. It is not a decision.",
                "x-agent-contract": {
                    "name": "get-product-eligibility",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "product": {
                                "type": "string"
                            }
                        },
                        "required": [],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "universal": {
                                "type": "object"
                            },
                            "products": {
                                "type": "array"
                            },
                            "disclaimer": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "ok",
                            "universal",
                            "products",
                            "disclaimer"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "universal": {
                                            "type": "object"
                                        },
                                        "products": {
                                            "type": "array"
                                        },
                                        "disclaimer": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "universal",
                                        "products",
                                        "disclaimer"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                }
            }
        },
        "/api/agent/search-guides": {
            "get": {
                "operationId": "agentSearchGuides",
                "summary": "Search the published editorial-guide corpus and return ranked canonical guide links.",
                "x-agent-contract": {
                    "name": "search-guides",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "q": {
                                "type": "string"
                            },
                            "limit": {
                                "type": "integer"
                            }
                        },
                        "required": [
                            "q"
                        ],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "query": {
                                "type": "string"
                            },
                            "count": {
                                "type": "integer"
                            },
                            "results": {
                                "type": "array"
                            }
                        },
                        "required": [
                            "ok",
                            "query",
                            "count",
                            "results"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "query": {
                                            "type": "string"
                                        },
                                        "count": {
                                            "type": "integer"
                                        },
                                        "results": {
                                            "type": "array"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "query",
                                        "count",
                                        "results"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                }
            }
        },
        "/api/agent/estimate-credit-score": {
            "post": {
                "operationId": "agentEstimateCreditScore",
                "summary": "Run the public educational six-signal self-assessment. It is not a credit-reference-agency score, does not access a credit file, and is not used for lending decisions.",
                "x-agent-contract": {
                    "name": "estimate-credit-score",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "years_trading": {
                                "type": "string"
                            },
                            "payment_history": {
                                "type": "string"
                            },
                            "turnover": {
                                "type": "string"
                            },
                            "facilities": {
                                "type": "string"
                            },
                            "director_credit": {
                                "type": "string"
                            },
                            "business_ccjs": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "years_trading",
                            "payment_history",
                            "turnover",
                            "facilities",
                            "director_credit",
                            "business_ccjs"
                        ],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "score": {
                                "type": "integer"
                            },
                            "maximum": {
                                "type": "integer"
                            },
                            "band": {
                                "type": "string"
                            },
                            "disclaimer": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "ok",
                            "score",
                            "maximum",
                            "band",
                            "disclaimer"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "score": {
                                            "type": "integer"
                                        },
                                        "maximum": {
                                            "type": "integer"
                                        },
                                        "band": {
                                            "type": "string"
                                        },
                                        "disclaimer": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "score",
                                        "maximum",
                                        "band",
                                        "disclaimer"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "years_trading": {
                                        "type": "string"
                                    },
                                    "payment_history": {
                                        "type": "string"
                                    },
                                    "turnover": {
                                        "type": "string"
                                    },
                                    "facilities": {
                                        "type": "string"
                                    },
                                    "director_credit": {
                                        "type": "string"
                                    },
                                    "business_ccjs": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "years_trading",
                                    "payment_history",
                                    "turnover",
                                    "facilities",
                                    "director_credit",
                                    "business_ccjs"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                }
            }
        },
        "/api/agent/calculate-working-capital": {
            "post": {
                "operationId": "agentCalculateWorkingCapital",
                "summary": "Calculate a deterministic operating cash-cycle illustration from supplied turnover and days. It does not recommend, quote, or decide a lending product.",
                "x-agent-contract": {
                    "name": "calculate-working-capital",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "annual_turnover_gbp": {
                                "type": "number"
                            },
                            "debtor_days": {
                                "type": "number"
                            },
                            "creditor_days": {
                                "type": "number"
                            },
                            "stock_days": {
                                "type": "number"
                            }
                        },
                        "required": [
                            "annual_turnover_gbp",
                            "debtor_days",
                            "creditor_days"
                        ],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "working_capital_cycle_days": {
                                "type": "number"
                            },
                            "daily_turnover_gbp": {
                                "type": "number"
                            },
                            "indicative_funding_gap_gbp": {
                                "type": "number"
                            },
                            "caveat": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "ok",
                            "working_capital_cycle_days",
                            "daily_turnover_gbp",
                            "indicative_funding_gap_gbp",
                            "caveat"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "working_capital_cycle_days": {
                                            "type": "number"
                                        },
                                        "daily_turnover_gbp": {
                                            "type": "number"
                                        },
                                        "indicative_funding_gap_gbp": {
                                            "type": "number"
                                        },
                                        "caveat": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "working_capital_cycle_days",
                                        "daily_turnover_gbp",
                                        "indicative_funding_gap_gbp",
                                        "caveat"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "annual_turnover_gbp": {
                                        "type": "number"
                                    },
                                    "debtor_days": {
                                        "type": "number"
                                    },
                                    "creditor_days": {
                                        "type": "number"
                                    },
                                    "stock_days": {
                                        "type": "number"
                                    }
                                },
                                "required": [
                                    "annual_turnover_gbp",
                                    "debtor_days",
                                    "creditor_days"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                }
            }
        },
        "/api/agent/loyalty-tiers": {
            "get": {
                "operationId": "agentGetLoyaltyTiers",
                "summary": "Return the currently published loyalty tiers from Hub. The endpoint reports an honest retryable upstream-unavailable response when Hub cannot provide them.",
                "x-agent-contract": {
                    "name": "get-loyalty-tiers",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": [],
                        "required": [],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "source": {
                                "type": "string"
                            },
                            "tiers": {
                                "type": "array"
                            }
                        },
                        "required": [
                            "ok",
                            "source",
                            "tiers"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "source": {
                                            "type": "string"
                                        },
                                        "tiers": {
                                            "type": "array"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "source",
                                        "tiers"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                }
            }
        },
        "/api/rate/": {
            "post": {
                "operationId": "agentRateCalculator",
                "summary": "Trailing-slash compatible alias of the published repayment-illustration API. It preserves the calculation boundary and is not an offer.",
                "x-agent-contract": {
                    "name": "rate-calculator",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "product": {
                                "type": "string"
                            },
                            "amount_gbp": {
                                "type": "number"
                            },
                            "term_days": {
                                "type": "integer"
                            },
                            "term_months": {
                                "type": "integer"
                            },
                            "credit_limit_gbp": {
                                "type": "number"
                            },
                            "drawn_gbp": {
                                "type": "number"
                            },
                            "instalments": {
                                "type": "integer"
                            }
                        },
                        "required": [],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "product": {
                                "type": "string"
                            },
                            "disclaimer": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "ok",
                            "product",
                            "disclaimer"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "product": {
                                            "type": "string"
                                        },
                                        "disclaimer": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "product",
                                        "disclaimer"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "product": {
                                        "type": "string"
                                    },
                                    "amount_gbp": {
                                        "type": "number"
                                    },
                                    "term_days": {
                                        "type": "integer"
                                    },
                                    "term_months": {
                                        "type": "integer"
                                    },
                                    "credit_limit_gbp": {
                                        "type": "number"
                                    },
                                    "drawn_gbp": {
                                        "type": "number"
                                    },
                                    "instalments": {
                                        "type": "integer"
                                    }
                                },
                                "required": [],
                                "additionalProperties": false
                            }
                        }
                    }
                }
            }
        },
        "/api/lookup/": {
            "get": {
                "operationId": "agentApplicationLookup",
                "summary": "Trailing-slash compatible alias of the protected application-status lookup. Both reference and application email are required.",
                "x-agent-contract": {
                    "name": "application-lookup",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "reference": {
                                "type": "string"
                            },
                            "email": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "reference",
                            "email"
                        ],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "status": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "ok",
                            "status"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "status": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "status"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                }
            }
        },
        "/api/faqs/": {
            "get": {
                "operationId": "agentFaqSearch",
                "summary": "Trailing-slash compatible alias of the published FAQ search.",
                "x-agent-contract": {
                    "name": "faq-search",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "q": {
                                "type": "string"
                            },
                            "query": {
                                "type": "string"
                            },
                            "category": {
                                "type": "string"
                            },
                            "limit": {
                                "type": "integer"
                            }
                        },
                        "required": [],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "query": {
                                "type": "string"
                            },
                            "count": {
                                "type": "integer"
                            },
                            "matches": {
                                "type": "array"
                            }
                        },
                        "required": [
                            "ok",
                            "query",
                            "count",
                            "matches"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "query": {
                                            "type": "string"
                                        },
                                        "count": {
                                            "type": "integer"
                                        },
                                        "matches": {
                                            "type": "array"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "query",
                                        "count",
                                        "matches"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                }
            }
        },
        "/api/callback/": {
            "post": {
                "operationId": "agentCallbackRequest",
                "summary": "Submit a callback request through the guarded public flow. Name, valid phone number, and explicit consent are required; success is returned only after Hub accepts the request.",
                "x-agent-contract": {
                    "name": "callback-request",
                    "status": "live",
                    "input_schema": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "type": "string"
                            },
                            "phone": {
                                "type": "string"
                            },
                            "best_time": {
                                "type": "string"
                            },
                            "consent": {
                                "type": "boolean"
                            },
                            "notes": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "name",
                            "phone",
                            "consent"
                        ],
                        "additionalProperties": false
                    },
                    "output_schema": {
                        "type": "object",
                        "properties": {
                            "ok": {
                                "type": "boolean"
                            },
                            "accepted": {
                                "type": "boolean"
                            },
                            "next_step": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "ok",
                            "accepted",
                            "next_step"
                        ],
                        "additionalProperties": false
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful guarded public-agent response.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "accepted": {
                                            "type": "boolean"
                                        },
                                        "next_step": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "ok",
                                        "accepted",
                                        "next_step"
                                    ],
                                    "additionalProperties": false
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Input does not satisfy the published endpoint contract."
                    },
                    "429": {
                        "description": "Rate limit exceeded."
                    },
                    "503": {
                        "description": "A required current upstream source is unavailable."
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "phone": {
                                        "type": "string"
                                    },
                                    "best_time": {
                                        "type": "string"
                                    },
                                    "consent": {
                                        "type": "boolean"
                                    },
                                    "notes": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "name",
                                    "phone",
                                    "consent"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "oauth2ClientCredentials": {
                "type": "oauth2",
                "flows": {
                    "clientCredentials": {
                        "tokenUrl": "https://credicorp.co.uk/oauth/token",
                        "scopes": {
                            "mcp:read": "Read-only access to the authenticated MCP tools.",
                            "applications:read": "Read application records.",
                            "customers:read": "Read customer/loan summaries.",
                            "loans:read": "Read loan records.",
                            "ops:read": "Read ops-queue status.",
                            "decisioning:read": "Read the decisioning explainer.",
                            "metrics:read": "Read platform metrics.",
                            "config:read": "Read platform config."
                        }
                    }
                }
            }
        },
        "schemas": {
            "CrediAnswer": {
                "type": "object",
                "required": [
                    "ok"
                ],
                "properties": {
                    "ok": {
                        "type": "boolean"
                    },
                    "answer": {
                        "type": "string",
                        "description": "Sanitised HTML answer."
                    },
                    "handoff": {
                        "type": "boolean",
                        "description": "Present and true when the user should sign in for account-specific help."
                    },
                    "error": {
                        "type": "string",
                        "description": "Present on a non-ok response."
                    }
                }
            }
        }
    },
    "x-service-info": {
        "categories": [
            "financial-services",
            "business-lending",
            "loan-servicing"
        ],
        "docs": {
            "apiReference": "https://dev.credicorp.co.uk/",
            "homepage": "https://credicorp.co.uk/",
            "llms": "https://credicorp.co.uk/llms.txt"
        },
        "mirror": {
            "url": "https://creditcorp.co.uk/",
            "description": "Same content with Creditcorp branding."
        }
    }
}
