carve-mcp
OfficialServer Quality Checklist
Latest release: v0.1.0
- Disambiguation5/5
Each tool targets a distinct stage of Carve processing: linting for problems, canonical formatting, rendering to output formats, parsing to an AST, and migrating from other formats. No two tools have overlapping purposes.
Naming Consistency5/5All tool names follow a consistent carve_<verb> pattern, with the verbs clearly communicating the operation. This is a strong, predictable naming convention.
Tool Count5/5Five tools is well-scoped for a language-processing server. Each tool earns its place and covers a distinct operation without redundancy or bloat.
Completeness5/5The tool set covers the core Carve workflow: migrate source in, parse to an AST, lint for issues, format canonically, and render to output formats. There are no obvious dead ends or missing essential operations.
Average 3.7/5 across 5 of 5 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- 6 of 7 community issues answered or closed in the last 6 months
- 2 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
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows the operation is safe and non-mutating. The description adds that it reports lossy raw-format nodes, which is useful, but it doesn't clarify what constitutes a lossy node or what the report looks like. This is acceptable given the annotations but not richly detailed.
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?
One sentence, front-loaded with the action, and free of redundant wording. Every component earns its place: the verb, the resource, the mode ('canonically'), and the reporting behavior.
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?
For a single-parameter, read-only tool this is mostly sufficient: it names the action and the report. However, there is no output schema, so the description should more explicitly define the 'report' output format. It also doesn't mention error behavior or what 'canonical' means in practice, leaving some ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with a description for the single 'source' parameter, so the description doesn't need to repeat it. The tool description adds no extra parameter meaning beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Format Carve source canonically.' It also indicates a distinct outcome—reporting lossy raw-format nodes—which separates it from parsing, linting, rendering, or migrating. It doesn't explicitly name sibling tools, but the verb 'Format' and the unique report clause make the purpose unambiguous.
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 the tool is for canonical formatting of Carve source, so an agent could infer when it applies. However, there is no explicit guidance on when to choose this over carve_lint, carve_render, or carve_migrate, nor any 'when not to use' conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to restate safety. The phrase 'with loss reporting' adds a behavioral detail, but it is vague and does not clarify what the loss report contains, how it is returned, or whether it accompanies the rendered output.
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 communicates the core purpose, output variants, and an additional behavioral note. Every word earns its place; there is no repetition of schema properties or annotation information.
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?
The tool is simple with only two parameters, and annotations cover safety, but there is no output schema. The description does not explain the expected return value or the semantics of the loss report, leaving an agent uncertain about what the invocation will actually produce beyond the chosen format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, so the description carries some of the burden. It repeats the target enum values and clarifies that the source is a Carve document, but it does not add meaningful detail beyond the schema for 'source' or explain constraints/pitfalls of each target format. The description is adequate but not compensatory.
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 action ('Render Carve') and enumerates the exact output formats: HTML, Markdown, plain text, and ANSI terminal text. This clearly distinguishes the tool from its siblings (carve_lint, carve_format, carve_parse, carve_migrate) by focusing on conversion/rendering rather than analysis or mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives like carve_parse or carve_format. The usage is only implied by the tool's name and the listed output formats; there is no mention of when rendering is appropriate or inappropriate, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context about what the linter detects ('author-facing problems and silent degradation'), but it does not disclose return format, error behavior, or whether any action is taken. The read-only annotation mitigates the need for mutation details.
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?
One short sentence that is front-loaded with the action ('Check') and the resource ('Carve source'). Every word contributes to the purpose; there is no redundancy.
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?
Given two parameters, no output schema, and read-only annotations, the description is mostly sufficient for a simple linting operation. The main gaps are the unexplained `platforms` parameter and the fact that the return value (e.g., diagnostics list) is not specified. An agent could infer behavior from the verb 'Check', but it is not fully explicit.
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 tool description adds no parameter-level meaning. The `source` parameter is described in the schema, but `platforms` has no schema description and the tool description also does not explain what `platforms` controls. With 50% schema coverage, the description should compensate for the undocumented `platforms` parameter, but it does not.
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 the specific verb 'Check' with the resource 'Carve source' and specifies the goal: detecting 'author-facing problems and silent degradation.' This clearly distinguishes it from siblings carve_format, carve_render, carve_parse, and carve_migrate, each implying a different operation.
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 the linting/validation tool for Carve source, but it does not explicitly state when to use it over siblings or when not to use it. There are no exclusions or alternative routing; the agent must infer from the name and the verb 'Check' that this is the validation tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful output context by specifying that the result is a 'position-aware' AST, but it does not disclose behavior around errors, resolution failures, or performance characteristics.
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 a single well-formed sentence that immediately states the operation, the input, and the output. There is no redundant or filler content.
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?
The tool is simple with one required parameter and annotations covering safety, and the description tells the agent exactly what the tool produces. The lack of an output schema makes the 'position-aware interchange AST' mention valuable, though more detail about resolution behavior or error conditions would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single 'source' parameter is already documented as 'Document source (maximum 1000000 UTF-8 bytes)'. The description does not add meaningful parameter-level details beyond what the schema provides, so the baseline score of 3 is appropriate.
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 ('Parse and resolve') and a specific resource ('Carve'), and names the exact output ('position-aware interchange AST'). This clearly distinguishes it from the sibling tools carve_lint, carve_format, carve_render, and carve_migrate.
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 clearly states that this tool is for parsing and resolving Carve into an AST, which gives the agent a clear context for when it should be used. It does not explicitly name alternatives or exclusions, but the operation is distinct enough from lint, format, render, and migrate.
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?
Annotations already cover the read-only, non-destructive safety profile. The description adds value by disclosing that conversion produces 'fidelity diagnostics', which tells the agent to expect quality/compatibility feedback beyond the converted output. This is meaningful behavioral context beyond the annotations.
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 entire description is one front-loaded, information-dense sentence. Every phrase earns its place: the migration action, the supported formats, the target, and the diagnostics behavior. There is no filler or repetition of schema details.
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?
For a two-parameter tool with read-only annotations, the description is mostly sufficient, but with no output schema it does not clarify what the result looks like beyond 'fidelity diagnostics'. It also does not mention edge cases, formatting details, or whether output is returned as text or a structured object. A bit more return-shape context would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: 'source' has a description with size limits, and 'format' has an enum but no description. The description restates the format options in prose but does not add new parameter meaning, such as format detection, normalization behavior, or how source content is interpreted. This is adequate but not compensatory.
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 action ('Migrate'), a clear resource ('HTML, Markdown, or Djot source'), and a target format ('Carve'). It also adds a distinctive behavioral detail ('with fidelity diagnostics') that separates it from obvious siblings like carve_parse or carve_render.
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 context is clear: use this tool when you have HTML, Markdown, or Djot source and want to convert it to Carve. It does not explicitly name sibling tools or exclusion conditions, but the migration-focused wording sufficiently distinguishes it from lint, format, render, and parse.
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/markup-carve/carve-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server