Velrim
Document extraction against a JSON Schema with a calibrated confidence per field; async job status.
사용해야 할까요
품질 및 안전성
발견 사항 (3)
- HIGH
- MEDIUMvelrim_extract에서
- MEDIUMvelrim_job_status에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"extract": {
"url": "https://mcp.velrim.com/mcp"
}
}
}원격 엔드포인트
https://mcp.velrim.com/mcpstreamable-http할 수 있는 일
도구 목록
도구 (2)
🟡velrim_extract(schema, document_base64, upload_key, doc_class, hints)
Extract structured data from a document (PDF or image, passed as document_base64 or as the upload_key of a staged upload) against a JSON Schema you supply. Returns a typed object and, for every field, a state (present, null, or missing), a calibrated confidence score, and an anchor (the source page and bounding box). The confidence is calibrated against published reliability curves (https://velrim.com/reliability), so a 0.9 means the field is right about 90% of the time on that document class — branch on it directly: act on a field at or above your accept threshold, escalate the fields below it and any that are missing. Use each field's anchor to check it against the source page.
입력 스키마
{
"type": "object",
"properties": {
"schema": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {},
"description": "The JSON Schema (draft 2020-12) the extracted object must conform to (required)."
},
"document_base64": {
"description": "The document bytes, base64-encoded. Provide exactly one of document_base64 or upload_key.",
"type": "string"
},
"upload_key": {
"description": "The upload_key of a staged Velrim upload. Mutually exclusive with document_base64.",
"type": "string"
},
"doc_class": {
"description": "Opaque tag (<=128 chars) echoed back in meta.doc_class.",
"type": "string",
"maxLength": 128
},
"hints": {
"description": "Discriminator hints for union schemas.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"schema"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"data": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"fields": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"value": {},
"state": {
"type": "string",
"enum": [
"present",
"null",
"missing"
]
},
"confidence": {
"type": "number"
},
"anchor": {
"type": "object",
"properties": {
"page": {
"type": "number"
},
"bbox": {
"type": "array",
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"description": "Corner rectangle [x0,y0,x1,y1] — NOT [x,y,w,h]."
},
"snippet": {
"type": "string"
},
"page_dims": {
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"width",
"height"
],
"additionalProperties": {}
}
},
"required": [
"page",
"bbox",
"snippet",
"page_dims"
],
"additionalProperties": {}
},
"conflict": {
"type": "boolean"
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"state",
"reason"
],
"additionalProperties": {}
}
},
"meta": {
"type": "object",
"properties": {
"model": {
"type": "string"
},
"tier": {
"type": "string",
"description": "Routing tier, e.g. \"default\" | \"resampled\" | \"verify\"."
},
"batched": {
"type": "boolean"
},
"calibrator_version": {
"type": "string"
},
"routing_policy_version": {
"type": "string"
},
"pages": {
"type": "number"
},
"billed_pages": {
"type": "number"
},
"request_id": {
"type": "string"
},
"warnings": {
"type": "array",
"items": {}
},
"doc_class": {
"type": "string"
}
},
"required": [
"model",
"tier",
"batched",
"calibrator_version",
"routing_policy_version",
"pages",
"billed_pages",
"request_id",
"warnings"
],
"additionalProperties": {}
},
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"top_up_url": {
"type": "string"
},
"retry_after": {
"type": "number"
},
"request_id": {
"type": "string"
}
},
"required": [
"code"
],
"additionalProperties": {}
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢velrim_job_status(job_id)
Poll an asynchronous extraction job by its job_id (from POST /v1/jobs on the Velrim API; velrim_extract itself is synchronous and never creates jobs). Returns the job status and, once complete, the same typed result as velrim_extract: per field a state (present, null, or missing), a calibrated confidence score, and an anchor (source page and bounding box). Confidence is calibrated against published reliability curves (https://velrim.com/reliability) — branch the same way: act on a field at or above your accept threshold, escalate the rest, and use each anchor to check a field against its source page.
입력 스키마
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"minLength": 1,
"description": "The job_id returned by an asynchronous Velrim extraction job (created via the Velrim API or an SDK)."
}
},
"required": [
"job_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"job_id": {
"type": "string"
},
"status": {
"description": "\"running\" | \"succeeded\" | \"failed\" (additive-tolerant).",
"type": "string"
},
"result": {
"type": "object",
"properties": {
"data": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"fields": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"value": {},
"state": {
"type": "string",
"enum": [
"present",
"null",
"missing"
]
},
"confidence": {
"type": "number"
},
"anchor": {
"type": "object",
"properties": {
"page": {
"type": "number"
},
"bbox": {
"type": "array",
"items": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"description": "Corner rectangle [x0,y0,x1,y1] — NOT [x,y,w,h]."
},
"snippet": {
"type": "string"
},
"page_dims": {
"type": "object",
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"width",
"height"
],
"additionalProperties": {}
}
},
"required": [
"page",
"bbox",
"snippet",
"page_dims"
],
"additionalProperties": {}
},
"conflict": {
"type": "boolean"
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"state",
"reason"
],
"additionalProperties": {}
}
},
"meta": {
"type": "object",
"properties": {
"model": {
"type": "string"
},
"tier": {
"type": "string",
"description": "Routing tier, e.g. \"default\" | \"resampled\" | \"verify\"."
},
"batched": {
"type": "boolean"
},
"calibrator_version": {
"type": "string"
},
"routing_policy_version": {
"type": "string"
},
"pages": {
"type": "number"
},
"billed_pages": {
"type": "number"
},
"request_id": {
"type": "string"
},
"warnings": {
"type": "array",
"items": {}
},
"doc_class": {
"type": "string"
}
},
"required": [
"model",
"tier",
"batched",
"calibrator_version",
"routing_policy_version",
"pages",
"billed_pages",
"request_id",
"warnings"
],
"additionalProperties": {}
}
},
"required": [
"data",
"fields",
"meta"
],
"additionalProperties": {}
},
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"top_up_url": {
"type": "string"
},
"retry_after": {
"type": "number"
},
"request_id": {
"type": "string"
}
},
"required": [
"code"
],
"additionalProperties": {}
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}커뮤니티
증거