Vision — canonical payload contracts
Image analysis with Ternary Bonsai 27B via Together AI (English JSON). Async: POST /vision/upload or /staging/upload → vision_job_start({ image_url }) → status → result.
Service id: vision
Docs: https://mcp.glc-rag.hu/guide/vision
Markdown docs: https://mcp.glc-rag.hu/guide/vision.md
MCP resource: docs://vision/payload
POST https://mcp.glc-rag.hu/mcp. Values below are type slots from the live input schema (e.g. <string, required>), not example data. Fill them from the user task.
RPC result wrapper: result.structuredContent is the object in Output schema. result.isError mirrors structuredContent.is_error.
vision_job_start
Start async image analysis (Together AI Ternary Bonsai 27B). Returns {job_id} only. Upload via POST /vision/upload or /staging/upload first, then pass image_url. No base64. Poll vision_job_status → vision_job_result. English JSON output.
Required arguments: image_url
Request contract
{
"jsonrpc": "2.0",
"id": "<integer|string>",
"method": "tools/call",
"params": {
"name": "vision_job_start",
"arguments": {
"image_url": "<string, required>",
"focus": "<string, optional>",
"filename": "<string, optional>"
}
}
}
Input schema
{
"type": "object",
"properties": {
"image_url": {
"type": "string",
"description": "Public or staging HTTPS image URL (from /vision/upload or /staging/upload)."
},
"focus": {
"type": "string",
"description": "Optional English focus hint (e.g. product label)."
},
"filename": {
"type": "string",
"description": "Optional filename hint."
}
},
"required": [
"image_url"
],
"additionalProperties": false
}
Output schema (structuredContent on success)
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "Hex job id from vision_job_start"
},
"status": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"job_id"
]
}
Error object
{
"type": "object",
"required": [
"error",
"is_error"
],
"properties": {
"error": {
"type": "string"
},
"is_error": {
"type": "boolean",
"const": true
}
},
"additionalProperties": true
}
vision_job_status
Poll vision job. status: queued|running|completed|failed. phase may be starting_model|running|parsing. Backoff 15–60s.
Required arguments: job_id
Request contract
{
"jsonrpc": "2.0",
"id": "<integer|string>",
"method": "tools/call",
"params": {
"name": "vision_job_status",
"arguments": {
"job_id": "<string, required>"
}
}
}
Input schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "From vision_job_start"
}
},
"required": [
"job_id"
],
"additionalProperties": false
}
Output schema (structuredContent on success)
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "Hex job id from vision_job_start"
},
"status": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"job_id",
"status"
]
}
Error object
{
"type": "object",
"required": [
"error",
"is_error"
],
"properties": {
"error": {
"type": "string"
},
"is_error": {
"type": "boolean",
"const": true
}
},
"additionalProperties": true
}
vision_job_result
Fixed English analysis JSON when status=completed. If queued/running, keep polling status.
Required arguments: job_id
Request contract
{
"jsonrpc": "2.0",
"id": "<integer|string>",
"method": "tools/call",
"params": {
"name": "vision_job_result",
"arguments": {
"job_id": "<string, required>"
}
}
}
Input schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "From vision_job_start"
}
},
"required": [
"job_id"
],
"additionalProperties": false
}
Output schema (structuredContent on success)
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "Hex job id from vision_job_start"
},
"status": {
"type": "string"
},
"result": {
"type": "object"
}
},
"additionalProperties": true,
"required": [
"job_id",
"status"
]
}
Error object
{
"type": "object",
"required": [
"error",
"is_error"
],
"properties": {
"error": {
"type": "string"
},
"is_error": {
"type": "boolean",
"const": true
}
},
"additionalProperties": true
}
vision_status
Vision worker/model health, limits, queue counts (free).
Required arguments: (none)
Request contract
{
"jsonrpc": "2.0",
"id": "<integer|string>",
"method": "tools/call",
"params": {
"name": "vision_status",
"arguments": {}
}
}
Input schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}
Output schema (structuredContent on success)
{
"type": "object",
"properties": {
"ok": {
"type": "boolean"
}
},
"additionalProperties": true,
"required": [
"ok"
]
}
Error object
{
"type": "object",
"required": [
"error",
"is_error"
],
"properties": {
"error": {
"type": "string"
},
"is_error": {
"type": "boolean",
"const": true
}
},
"additionalProperties": true
}