Turn PDFs and photos into typed JSON with your own schema. Missing values come back null.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer token. Get a bk_live_ key from API Keys in the doc2json console.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Save a named extraction schema in this workspace. A schema is {"type":"object","properties":{...}}. Each property is {"type":T} where T is one of any, null, boolean, string, number, date, array, object. An optional description, at most 400 characters, tells the model how to read that field. An optional required array lists the keys that must be present. A date is a string yyyy-mm-dd. An array adds "items" (one node). An object adds "properties" and may add "required". At most 4 levels below the root, 100 keys, and 16384 bytes.
Lowercase letters, digits, underscores, and hyphens. No spaces.
A schema is {"type":"object","properties":{...}}. Each property is {"type":T} where T is one of any, null, boolean, string, number, date, array, object. An optional description, at most 400 characters, tells the model how to read that field. An optional required array lists the keys that must be present. A date is a string yyyy-mm-dd. An array adds "items" (one node). An object adds "properties" and may add "required". At most 4 levels below the root, 100 keys, and 16384 bytes.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http doc2json https://doc2json.manoonlabs.com/mcp \ --header 'Authorization: Bearer YOUR_TOKEN'
Headers
Authorization (required): Bearer token. Get a bk_live_ key from API Keys in the doc2json console.Save a named extraction schema in this workspace. A schema is {"type":"object","properties":{...}}. Each property is {"type":T} where T is one of any, null, boolean, string, number, date, array, object. An optional description, at most 400 characters, tells the model how to read that field. An optional required array lists the keys that must be present. A date is a string yyyy-mm-dd. An array adds "items" (one node). An object adds "properties" and may add "required". At most 4 levels below the root, 100 keys, and 16384 bytes.
| Argument | Type | Description |
|---|---|---|
| name* | string | Lowercase letters, digits, underscores, and hyphens. No spaces. |
| schema* | object | A schema is {"type":"object","properties":{...}}. Each property is {"type":T} where T is one of any, null, boolean, string, number, date, array, object. An optional description, at most 400 characters, tells the model how to read that field. An optional required array lists the keys that must be present. A date is a string yyyy-mm-dd. An array adds "items" (one node). An object adds "properties" and may add "required". At most 4 levels below the root, 100 keys, and 16384 bytes. |
{
"type": "object",
"required": [
"name",
"schema"
],
"properties": {
"name": {
"type": "string",
"pattern": "^[a-z0-9_-]+$",
"maxLength": 80,
"minLength": 1,
"description": "Lowercase letters, digits, underscores, and hyphens. No spaces."
},
"schema": {
"type": "object",
"description": "A schema is {\"type\":\"object\",\"properties\":{...}}. Each property is {\"type\":T} where T is one of any, null, boolean, string, number, date, array, object. An optional description, at most 400 characters, tells the model how to read that field. An optional required array lists the keys that must be present. A date is a string yyyy-mm-dd. An array adds \"items\" (one node). An object adds \"properties\" and may add \"required\". At most 4 levels below the root, 100 keys, and 16384 bytes."
}
},
"additionalProperties": false
}Read one saved extraction schema by name.
| Argument | Type | Description |
|---|---|---|
| name* | string | Lowercase letters, digits, underscores, and hyphens. No spaces. |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"pattern": "^[a-z0-9_-]+$",
"maxLength": 80,
"minLength": 1,
"description": "Lowercase letters, digits, underscores, and hyphens. No spaces."
}
},
"additionalProperties": false
}List the extraction schemas saved in this workspace.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Extract invoice fields from a base64 PDF, PNG, or JPEG (10 MB and 10 pages on Free, 25 MB and 50 pages on paid). 1 credit per page; an image is 1 page. The document is not stored. The document is required. The result has status and values.
| Argument | Type | Description |
|---|---|---|
| schema | any | The name of a schema saved in this workspace, or a literal schema object. A schema is {"type":"object","properties":{...}}. Each property is {"type":T} where T is one of any, null, boolean, string, number, date, array, object. An optional description, at most 400 characters, tells the model how to read that field. An optional required array lists the keys that must be present. A date is a string yyyy-mm-dd. An array adds "items" (one node). An object adds "properties" and may add "required". At most 4 levels below the root, 100 keys, and 16384 bytes. |
| document | string | Base64-encoded PDF, PNG, or JPEG. At most 10 MB and 10 pages on Free, 25 MB and 50 pages on paid plans. Each page costs 1 credit; an image is 1 page. The bytes are not stored. |
{
"type": "object",
"properties": {
"schema": {
"oneOf": [
{
"type": "string",
"pattern": "^[a-z0-9_-]+$",
"maxLength": 80,
"minLength": 1,
"description": "Lowercase letters, digits, underscores, and hyphens. No spaces."
},
{
"type": "object",
"description": "A schema is {\"type\":\"object\",\"properties\":{...}}. Each property is {\"type\":T} where T is one of any, null, boolean, string, number, date, array, object. An optional description, at most 400 characters, tells the model how to read that field. An optional required array lists the keys that must be present. A date is a string yyyy-mm-dd. An array adds \"items\" (one node). An object adds \"properties\" and may add \"required\". At most 4 levels below the root, 100 keys, and 16384 bytes."
}
],
"description": "The name of a schema saved in this workspace, or a literal schema object. A schema is {\"type\":\"object\",\"properties\":{...}}. Each property is {\"type\":T} where T is one of any, null, boolean, string, number, date, array, object. An optional description, at most 400 characters, tells the model how to read that field. An optional required array lists the keys that must be present. A date is a string yyyy-mm-dd. An array adds \"items\" (one node). An object adds \"properties\" and may add \"required\". At most 4 levels below the root, 100 keys, and 16384 bytes."
},
"document": {
"type": "string",
"description": "Base64-encoded PDF, PNG, or JPEG. At most 10 MB and 10 pages on Free, 25 MB and 50 pages on paid plans. Each page costs 1 credit; an image is 1 page. The bytes are not stored."
}
},
"additionalProperties": false
}Rename a saved schema, replace its definition, or both. A schema is {"type":"object","properties":{...}}. Each property is {"type":T} where T is one of any, null, boolean, string, number, date, array, object. An optional description, at most 400 characters, tells the model how to read that field. An optional required array lists the keys that must be present. A date is a string yyyy-mm-dd. An array adds "items" (one node). An object adds "properties" and may add "required". At most 4 levels below the root, 100 keys, and 16384 bytes.
| Argument | Type | Description |
|---|---|---|
| name* | string | The current name. |
| schema | object | A schema is {"type":"object","properties":{...}}. Each property is {"type":T} where T is one of any, null, boolean, string, number, date, array, object. An optional description, at most 400 characters, tells the model how to read that field. An optional required array lists the keys that must be present. A date is a string yyyy-mm-dd. An array adds "items" (one node). An object adds "properties" and may add "required". At most 4 levels below the root, 100 keys, and 16384 bytes. |
| newName | string | Lowercase letters, digits, underscores, and hyphens. No spaces. |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"pattern": "^[a-z0-9_-]+$",
"maxLength": 80,
"minLength": 1,
"description": "The current name."
},
"schema": {
"type": "object",
"description": "A schema is {\"type\":\"object\",\"properties\":{...}}. Each property is {\"type\":T} where T is one of any, null, boolean, string, number, date, array, object. An optional description, at most 400 characters, tells the model how to read that field. An optional required array lists the keys that must be present. A date is a string yyyy-mm-dd. An array adds \"items\" (one node). An object adds \"properties\" and may add \"required\". At most 4 levels below the root, 100 keys, and 16384 bytes."
},
"newName": {
"type": "string",
"pattern": "^[a-z0-9_-]+$",
"maxLength": 80,
"minLength": 1,
"description": "Lowercase letters, digits, underscores, and hyphens. No spaces."
}
},
"additionalProperties": false
}Return the workspace and token for the bearer credential, and the credits left this month.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Oct 30, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.