Vellum
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation5/5
Each check targets a clearly distinct concern: DOCX structure, DOCX typography, PDF layout, language, filename consistency, and the aggregated report. The only potentially overlapping tool, full_report, is explicitly an aggregator rather than a separate analysis, so an agent can reliably select the right tool.
Naming Consistency4/5Five of the six tools follow a consistent check_<target>_<aspect> pattern, making the set highly predictable. The one deviation is full_report, which breaks the check_ prefix but is still descriptive and unlikely to confuse.
Tool Count5/5Six tools is a well-scoped size for a document-inspection server. Each tool covers a distinct aspect of analysis with no redundant or extraneous additions.
Completeness5/5The tool set covers the major inspection needs for DOCX and PDF documents: structure, typography/layout, language, filename consistency, and a full aggregated report. Since the server is explicitly analysis-only and returns facts rather than edits, there are no obvious missing operations within its stated purpose.
Average 4.6/5 across 6 of 6 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 3 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
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 full behavioral burden. It discloses that the tool performs style-chain resolution with provenance, returns only facts/anomaly flags, never gives formatting verdicts, and validates exactly one input form. It does not discuss error behavior or file-access limitations, but it covers the core behavior well.
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 two dense paragraphs with no filler. The first sentence immediately communicates the tool's output and resolution behavior, and the second paragraph covers input modes and constraints efficiently.
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 output schema exists, the description does not need to enumerate return fields. It covers parameter semantics, input exclusivity, scope, and behavioral boundaries. The only meaningful gap is the lack of explicit sibling-based usage routing, which is partly addressed by the clear 'never a verdict' scope.
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 0% property descriptions, so the description must compensate. It effectively explains all three parameters: path as filesystem input, content_base64 as conversation-only inline input, and filename as required alongside base64. It also enforces the exclusive-OR constraint that the schema alone does not express.
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 uses a specific verb and resource: it checks per-paragraph resolved font/size/weight in a .docx and emits anomaly flags. It is clearly distinguished from siblings like check_docx_structure and full_report by stating it returns facts and anomaly flags, never a verdict.
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 gives clear invocation constraints: path OR content_base64, exactly one required, filename required with base64. However, it never explicitly says when an agent should choose this tool over its siblings, and the only comparison to alternatives is implicit through the scope declaration.
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 the full transparency burden and succeeds. It discloses the local LanguageTool dependency, the elicitation behavior when lang is uncertain, the strict input exclusivity, and the boundary that it only returns facts and suggestions, never a rewritten corrected version. This gives the agent accurate expectations beyond a bare read/write label.
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 core purpose is front-loaded, and every subsequent sentence adds operational value: language auto-detection behavior, output constraints, and input-format requirements. There is no tautology or filler, and the length is appropriate for a 5-parameter tool.
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 5 parameters, no annotations, and an existing output schema, the description appropriately covers input exclusivity, filename coupling, language elicitation, and output scope while leaving return details to the output schema. Minor omissions such as supported file types for path/text and the meaning of the MRTR acronym keep it from being perfect.
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?
Schema description coverage is 0%, so the description is the only source of parameter meaning. It explains all five parameters: lang has fallback/elicitation behavior, path is a filesystem path, text is raw text, content_base64 is inline file content, and filename is required alongside content_base64. Minor gaps remain, such as accepted file types for path/text and lang format conventions, but the compensation is strong overall.
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 scope — grammar/spelling/punctuation/style findings — and identifies the mechanism (local LanguageTool) and the anchor-based precision benefit. Sibling tools focus on structure, typography, PDF layout, and filename consistency, so this tool is clearly differentiated.
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?
It gives strong invocation constraints: exactly one of path, text, or content_base64 must be supplied, and filename is required with content_base64. However, it does not explicitly state when to choose this tool over siblings or name alternatives; selection is left to inference from the sibling names.
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?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It explicitly states that the tool returns 'facts and anomaly flags only — never a verdict on correctness', which is a key behavioral trait. It also discloses the input-modality constraint (exactly one form). While it doesn't state side effects (e.g., file modification), the tool is clearly read-only by nature, and the description covers the main behavioral nuance an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but not wasteful. It front-loads the tool's analysis features, then clarifies the output nature, then details input requirements. Every sentence contributes value. It's slightly longer than necessary but the information is tightly packed. A score of 4 reflects that it is efficient without being minimal.
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?
Given the tool's complexity and the existence of an output schema (which covers return values), the description provides all necessary context: what the tool analyzes, its non-verdict nature, and the exact input forms. It even includes domain-specific details like 'tab-stop-overflow signature'. Nothing an agent needs to invoke it correctly is missing.
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?
With schema description coverage at 0%, the description fully compensates by explaining the relationship between parameters: path vs. content_base64, the requirement that filename accompanies content_base64, and the rationale for inline content. This adds meaning far beyond the bare schema, which only lists names. The agent can correctly choose and combine parameters based on this description.
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 names a specific verb context ('Per-character font/size/coordinates, computed baseline spacing...') and a specific resource (PDF layout analysis), listing concrete features that distinguish it from siblings like check_docx_structure or check_language. It unambiguously states what the tool does and clearly separates it from the other document-analysis tools.
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 clear input conditions: exactly one of 'path' or 'content_base64' must be provided, and 'filename' is required with inline content. This is explicit usage guidance for the parameters. It does not name alternatives or state when not to use this tool, but the purpose is specific enough that an agent can infer it's for PDF layout checks. Context on when to use inline content (file only in conversation) is provided, which is useful.
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 provided, the description carries the full burden, and it delivers: it discloses heuristic owner-token stripping, stopword removal, facts-only output with no verdict, and the exact meaning of the filename parameter. This is far more transparent than typical tool definitions.
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 dense but well-structured: first the algorithm and behavioral contract, then the input contract. Every sentence adds necessary information, and the references to §3 and §4.4 are compact without being 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?
Given the tool's moderate complexity, three parameters, and an output schema, the description is complete enough for correct invocation. It explains what is analyzed, how inputs are provided, and what the tool will and will not conclude.
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% and no parameters are required in the schema, so the description must compensate. It clearly explains that path and content_base64 are mutually exclusive, that filename is mandatory alongside content_base64, and that filename is the actual tokenized name, not a placeholder.
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 is highly specific: tokenize the filename, strip extension/separators/stopwords/owner-name tokens, then flag proper-noun-like tokens absent from the document text. This clearly differentiates it from sibling tools like check_docx_structure, check_language, or check_pdf_layout.
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 input-mode rules are explicit: pass either a filesystem path or inline content_base64 with a real filename, and exactly one form must be given. However, it gives no guidance on when to choose this tool versus its siblings, and it names no alternatives or exclusions.
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 provided, the description carries the full behavioral burden and does so well. It states that the tool returns only facts and anomaly flags, never a verdict, and it discloses the input-mode constraint that exactly one of path or content_base64 must be provided.
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 dense but every sentence earns its place: purpose and scope, output limitation, and input alternatives with the exclusivity constraint. The main purpose is front-loaded, and the structure makes the tool's contract easy to understand.
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?
Given the output schema exists and no annotations are present, the description supplies all essential invocation context: what is analyzed, what is returned, how the document can be supplied, and which input combinations are valid. It is complete enough for an agent to select and call the tool correctly.
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. It explains the meaning and relationship of all three parameters: path as a filesystem location, content_base64 as inline document content, and filename as required when inline content is used. It also communicates the critical exclusivity rule.
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 and resource: 'Extract structural facts from a .docx file', then enumerates the exact structural dimensions checked. This clearly distinguishes the tool from siblings like check_docx_typography and check_pdf_layout, which target different concerns.
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 establishes clear context for when the tool is appropriate: structural analysis of .docx files, and explicitly notes that it never renders a correctness verdict. It does not name alternative tools or give explicit when-not-to-use conditions, but the scoping to structural facts and .docx inputs makes the selection context clear.
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 the full disclosure burden and does so thoroughly. It reveals that results are 'facts and anomaly flags only, aggregated from each check's own output — never a merged verdict,' that the report is persisted and re-readable via the returned URI, and that format detection is based on file extension (.docx or .pdf). This goes well beyond a simple command summary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average, but it is dense and front-loaded: the primary purpose and output are stated first, followed by profile selection, then input forms. Every sentence contributes meaningful operational detail. The references to brief §5.1/§5.2 and the server's global instructions add useful pointers, though they make the description slightly less self-contained than it could be.
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 four parameters, no annotations, and an output schema already present, the description covers everything an agent needs to call it correctly: input alternatives and constraints, profile semantics, format detection, aggregation behavior, and post-call re-reading via the URI. No critical operational aspect 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 explain every parameter, and it does. It defines `path` as a filesystem path, explains `content_base64` as inline content requiring `filename` alongside it, states the exact cardinality constraint ('Exactly one of the two input forms must be given'), and enumerates both `profile` values with their meanings and defaults. 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 uses a specific verb ('Runs every applicable check') and names the resource ('the document') and the exact output shape ('aggregated report as a report://{file_id} resource URI, plus an inline summary'). It clearly distinguishes itself from the sibling check tools by being the aggregate that runs all applicable checks, not a single check.
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?
It gives explicit when-to-use guidance: 'full' profile runs every applicable check, while 'typography_only' selects the format-specific typography/layout check, naming the sibling tools check_docx_typography and check_pdf_layout. It also precisely states the two accepted input forms (path OR content_base64+filename) and the 'exactly one' requirement, leaving no ambiguity about how to invoke it.
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/Nasser9892/vellum-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server