> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentcard.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# submit_kyc_document

> Submit the user's ID photo for identity verification.

Connect to `https://mcp.agentcard.sh/mcp` with the **user's connection token** (or a `buy_token` for org-owned accounts).

## What it does

Submit the user's ID photo for identity verification. Ways in: (a) image data you hold programmatically (e.g. the user sent the photo in this chat and your platform exposes its bytes) — pass front\_base64 (and back\_base64 for a license back; its barcode reads most accurately); (b) local (stdio) mode — pass file\_path/back\_file\_path and the file is read from disk; (c) neither — you get a secure upload link to hand the user. Do NOT ask the user what kind of document it is or where it was issued — the type and country are detected automatically from the photo; only relay a question if the result says the type could not be determined. Returns the fields read off the document — SHOW THEM TO THE USER for confirmation before continuing — plus whatever is still missing. If the result says NO identity details could be read, the image did not read as an ID at all: never insist to the user that it was their ID. Supported: JPEG/PNG/WebP up to 12MB (convert iPhone HEIC first).

## Inputs

| Field             | Type                                                | Description                                                                                                                                                                                                         |
| ----------------- | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `front_base64`    | string                                              | Base64 image bytes of the ID front (or passport photo page). ONLY pass base64 you received programmatically from your platform (e.g. an injected chat attachment) — never type or reconstruct image bytes yourself. |
| `back_base64`     | string                                              | Base64 image bytes of the license back (optional, recommended — the barcode reads most accurately). Same rule: programmatically sourced only.                                                                       |
| `front_mime_type` | string                                              | MIME type of front\_base64 (image/jpeg, image/png, image/webp). Defaults to image/jpeg.                                                                                                                             |
| `back_mime_type`  | string                                              | MIME type of back\_base64. Defaults to image/jpeg.                                                                                                                                                                  |
| `file_path`       | string                                              | Local path to the ID photo (front of license, or passport photo page). Local/stdio connections only — remote connections without image data receive an upload link instead.                                         |
| `back_file_path`  | string                                              | Local path to the back of the license (optional, recommended). Local/stdio connections only.                                                                                                                        |
| `document_type`   | string: `drivers_license` · `state_id` · `passport` | ONLY pass this when the user themselves said what the document is ("here's my license") — otherwise omit it; the type is detected from the photo. Never ask up front.                                               |
| `issuing_country` | string                                              | 2-letter ISO country that issued the document (e.g. US, AR). ONLY when the user volunteered it — otherwise omit; it is detected from the photo. Never ask up front.                                                 |

## Returns

| Field                  | Type        | Description                                                                                                                                         |
| ---------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `message` *(required)* | string      |                                                                                                                                                     |
| `status`               | string      | processed \| document\_expired \| upload\_failed \| upload\_link\_provided                                                                          |
| `extracted`            | object      | Fields read from the document (confirm with the user).                                                                                              |
| `unreadable`           | boolean     | True when the image was received but NO identity fields could be read from it — it did not read as an ID; never assert to the user that it was one. |
| `missingFields`        | array       |                                                                                                                                                     |
| `nextStep`             | string/null |                                                                                                                                                     |
| `uploadUrl`            | string      |                                                                                                                                                     |
| `verificationUrl`      | string      |                                                                                                                                                     |

## Example call

```json theme={null}
{
  "tool": "submit_kyc_document",
  "arguments": {}
}
```
