# Credicorp auth.md — agent authentication & registration > How an AI agent obtains OAuth 2.0 credentials to call Credicorp's **authenticated, read-only** Model Context Protocol (MCP) server. Every endpoint below is a `https://credicorp.co.uk` front-door route; requests are reverse-proxied to Credicorp's hub OAuth plane upstream. This document is served from [https://credicorp.co.uk/auth.md](https://credicorp.co.uk/auth.md). ## What you are authenticating to - **Protected resource (the MCP):** `https://credicorp.co.uk/partner/mcp` - **Transport:** streamable-http - **Access:** strictly **read-only**, scope-gated. Application lookup, customer/loan summaries, ops-queue status, decisioning explainer, platform metrics and config review. No write, money-out or decisioning-override tool exists on this plane. ## OAuth 2.0 server - **Issuer:** `https://credicorp.co.uk` - **Authorization-server metadata (RFC 8414):** https://credicorp.co.uk/.well-known/oauth-authorization-server - **Protected-resource metadata (RFC 9728):** https://credicorp.co.uk/.well-known/oauth-protected-resource - **Token endpoint:** `https://credicorp.co.uk/oauth/token` - **JWKS:** `https://credicorp.co.uk/oauth/jwks` - **Introspection endpoint (RFC 7662):** `https://credicorp.co.uk/oauth/introspect` - **Grant type:** `client_credentials` (machine-to-machine — there is no user-facing authorize step) - **Client authentication:** `client_secret_basic` or `client_secret_post` ## Read-only scopes Request only the scopes your agent needs. All scopes on this plane are read-only: - `mcp:read` - `applications:read` - `customers:read` - `loans:read` - `ops:read` - `decisioning:read` - `metrics:read` - `config:read` ## How staff / owner get a client 1. **Request a client.** Credicorp staff and the owner request a partner OAuth client (client_id + client_secret) and the read-only scopes the agent needs via https://credicorp.co.uk/contact/. Clients are issued by the platform owner on the hub — they are not self-service and are not granted to third parties. 2. **Obtain a token.** Exchange the client credentials at the token endpoint: ```http POST https://credicorp.co.uk/oauth/token Content-Type: application/x-www-form-urlencoded Authorization: Basic base64(client_id:client_secret) grant_type=client_credentials&scope=mcp:read applications:read ``` The response is a short-lived bearer access token (`token_type: Bearer`). 3. **Call the MCP.** Send the token as a bearer header to the protected resource: ```http POST https://credicorp.co.uk/partner/mcp Authorization: Bearer Content-Type: application/json ``` ## Agent registration metadata (`agent_auth`) Machine-readable agent-registration metadata — also published in `https://credicorp.co.uk/.well-known/oauth-authorization-server`: ```json { "skill": "https://isitagentready.com/.well-known/agent-skills/auth-md/SKILL.md", "register_uri": "https://credicorp.co.uk/contact/", "identity_types_supported": ["anonymous"], "anonymous": { "credential_types_supported": ["client_secret"], "claim_uri": "https://credicorp.co.uk/auth.md" }, "credential_types_supported": ["client_secret"] } ``` ## Related discovery documents - **Authorization-server metadata:** https://credicorp.co.uk/.well-known/oauth-authorization-server - **Protected-resource metadata:** https://credicorp.co.uk/.well-known/oauth-protected-resource - **API catalog (RFC 9727):** https://credicorp.co.uk/.well-known/api-catalog - **Agent skills index:** https://credicorp.co.uk/.well-known/agent-skills/index.json - **Public MCP server card:** https://credicorp.co.uk/.well-known/mcp/server-card.json - **Agent discovery:** https://credicorp.co.uk/.well-known/agents.json