glm-ocr-mcp
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation4/5
Each tool has a clear function: image OCR, long-image OCR, PDF OCR, async task management, and health check. The only potential overlap is ocr_pdf vs start_pdf_ocr, but their descriptions differentiate by synchronous vs asynchronous execution.
Naming Consistency4/5Most tools follow a recognizable verb_noun pattern: ocr_image, ocr_pdf, get_ocr_status, cancel_ocr_task, start_pdf_ocr. The outlier is 'doctor', which breaks the pattern but is still an understandable command-style name.
Tool Count5/5Seven tools is well-scoped for an OCR server: it covers the main input types (image, long image, PDF), both sync and async PDF paths, task status, cancellation, and environment self-check. No tool feels redundant or missing.
Completeness5/5The tool surface covers the core OCR domain well: images, long images, PDFs with page ranges, async task lifecycle, and configuration readiness. There are no obvious dead ends for common OCR workflows.
Average 4.3/5 across 7 of 7 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 5 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the disclosure burden. It is transparent about the non-obvious delay ('在当前分片结束后生效') and the data-loss consequence ('已识别内容不返回'). It does not cover idempotency or invalid-task behavior, but for a simple cancellation tool this is still strong disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence front-loads the core action and packs the crucial timing and content-return caveats into a parenthetical. Every element earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single required parameter, no output schema, and no annotations, the description covers the essential behavior: what is canceled, when cancellation takes effect, and what is not returned. It could additionally suggest confirming via get_ocr_status or describing already-completed task behavior, but those are minor gaps for this tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the task_id parameter format, provenance, or validation. The property name is self-descriptive, and the tool name ties it to the OCR task, but the description itself adds no parameter-level meaning to compensate for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('取消' / cancel) and resource ('异步 OCR 任务'), and adds precise behavioral detail about when it takes effect and what happens to recognized content. This differentiates it from siblings like start_pdf_ocr and get_ocr_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for stopping an in-progress asynchronous OCR task, and the parenthetical distinguishes it from immediate-cancel semantics. However, it does not explicitly name alternatives or state when not to use this tool, leaving routing to inference from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
没有任何 annotations,描述承担了全部行为披露义务。它清楚说明了异步后台执行、立即返回、可查询的进度字段、完成后的 result 字段内容,以及可取消。这些信息远超基本操作定义,能帮助 agent 正确预期副作用和后续流程。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
描述紧凑但信息密度高,第一句就给出核心行为和返回值,第二段补充了进度查询、结果形态和取消方式。没有冗余内容,结构也便于 agent 快速解析。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
异步任务的生命周期(启动、查询、取消、结果获取)描述得比较完整,且与兄弟工具衔接明确。但 pages 参数格式完全未说明,且没有输出 schema,导致 agent 在参数构造和返回值细节上仍存在明显缺口。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage 为 0%,描述完全没有补偿参数语义。path 和 pages 两个参数均未说明格式、取值范围或示例,尤其是 pages 的可选值(如页码范围写法)完全缺失,agent 无法仅凭描述正确构造参数。
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
描述明确指出“异步启动 PDF OCR 并立即返回 task_id”,动词和资源清晰,且与同步 OCR 或图片 OCR 等兄弟工具在用途上有了明确区分。开头的“异步”和“超大 PDF”进一步强化了工具定位。
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
描述说明了适用场景(超大 PDF,避免长时间阻塞),并明确指引使用 get_ocr_status 查询进度、用 cancel_ocr_task 取消任务。虽然没有显式说明何时不应使用本工具,但已提供了清晰的上下文和操作路径。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It thoroughly documents the return payload, enumerates possible statuses, clarifies that result appears only when status is done, and defines the error response for nonexistent tasks. It does not explicitly state that the call has no side effects, but a status query is inherently read-only and the description covers key edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized: a one-line purpose, a concise return contract, and a usage recommendation. It is front-loaded and every sentence adds value without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a status-polling tool with no output schema and no annotations, the description is quite complete: it covers return shape, statuses, error behavior, and polling cadence. Minor omissions include not explicitly linking task_id to start_pdf_ocr and not stating what to do after completion, but these are inferable from sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter, task_id, with 0% description coverage. The description mentions task_id in the return object but does not explain its origin (e.g., from start_pdf_ocr) or any format constraints. Since the parameter is self-explanatory by name, the gap is modest, but the description does not compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: '查询异步 OCR 任务进度' (query async OCR task progress). This distinguishes it from sibling tools like start_pdf_ocr and cancel_ocr_task, which are action-oriented, while this one is a status polling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: it recommends polling every 1-5 minutes while a task is running and reporting progress to the user. It does not explicitly mention alternatives or when not to use it, but the polling guidance makes the intended usage clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It clearly reveals that the tool performs environment checking and does not call the OCR API, which signals read-only, non-destructive behavior. It does not describe response semantics or failure behavior, but for a no-parameter self-check this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that conveys the core purpose, the specific check targets, and a key exclusion. No wasted words, every element adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter self-check tool, the description is essentially complete: the agent knows what it does and what it does not do. The main gap is that no output or return behavior is described, but given the tool's simplicity and the absence of an output schema, this is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters with 100% description coverage, so there is nothing to explain. Per the baseline for zero-parameter tools, a score of 4 is appropriate; the description correctly focuses on behavior rather than parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: performing an environment self-check on dependencies and API key configuration. It explicitly says '不调用 OCR API' (does not call OCR API), which distinguishes it from the sibling OCR tools with no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is a preflight check for OCR-related tasks by stating it verifies dependencies and API keys without invoking the OCR API. However, it does not explicitly say when to use this tool versus starting an OCR job or checking status, so the usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and it does so substantially: it lists supported source formats (local path, file://, http(s), data URI) and specifies the success/error response shape. It doesn't mention side effects or permissions, but the operation is naturally read-only and the return/error contract is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences front-load the core purpose, then cover input formats and response contract without repetition or filler. Every sentence adds necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter OCR tool with no output schema, the description provides the essential invocation and response information, including error behavior. It does not mention limits such as file size or sync/async behavior, but these are not critical for basic correct use and are reasonable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description is the only source of parameter meaning. It fully explains what 'source' can be with concrete examples for all four accepted formats, going far beyond the bare string type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'OCR single image' and return Markdown. '单张' (single) distinguishes it from siblings like ocr_pdf and ocr_long_image, so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use case (single image OCR) is clear from the purpose statement, but there is no explicit guidance on when to prefer this tool over siblings such as ocr_pdf or ocr_long_image, or when not to use it. This is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility and does so thoroughly. It discloses the slicing algorithm, overlap and deduplication behavior, config fallback defaults, supported URI schemes and file formats, and the JSON response structure. These are meaningful behavioral details beyond what the tool name alone conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a one-sentence summary, then logically moves through use cases, algorithm, parameters, accepted inputs, and return format. Every sentence adds necessary information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is remarkably complete. It covers input types, slicing threshold and defaults, merging behavior, supported formats, and the full return contract sketch. Nothing essential for selecting or invoking this tool is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: source is explained with URI schemes and image formats, slice_height is explained as the pixel threshold with a default, and overlap is explained through the overlap/deduplication context with a config default. An agent can correctly understand all three parameters from the description alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-plus-resource statement: slice a long image, recognize text, and return Markdown. It further distinguishes itself from sibling OCR tools by explicitly targeting ultra-long screenshots and chunked OCR processing, so an agent can tell it apart from ocr_image or ocr_pdf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states when to use the tool: for very long images such as chat screenshots, web page long images, and exam paper images, and explains the automatic slicing trigger when any dimension exceeds slice_height. It does not explicitly name alternatives or say when not to use sibling tools, so it lacks the final exclusions step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior itself, and it does thoroughly: automatic 8-page chunking, merge behavior, temp-file cleanup, progress notifications, and the progressToken requirement are all stated. It even previews the response shape, going well beyond what the schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The text is compact and front-loaded: purpose first, then routing advice, then parameter syntax, then runtime behavior and return format. Every clause contributes useful information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since there is no output schema, the description provides the full JSON return structure. For a two-parameter tool with chunking, progress, and cleanup behaviors, all the context needed to invoke it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to carry parameter meaning, and it did. It defines path as a local PDF file path and pages with concrete 1-indexed closed-interval examples: all, 5, and 3-10. This fully compensates for the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete action and resource: OCR a PDF file and return Markdown. It also explicitly addresses the main sibling by directing very large PDFs to start_pdf_ocr, so the tool's scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: small files should call this tool directly, while very large PDFs should use the async sibling start_pdf_ocr. It also defines valid page-range syntax, giving an agent concrete invocation conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/stellarum-J/glm-ocr-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server