Skip to main content
Glama
markup-carve

carve-mcp

Official
by markup-carve

Render Carve

carve_render
Read-only

Render Carve documents to HTML, Markdown, plain text, or ANSI terminal output, with loss reporting for unsupported raw-format nodes.

Instructions

Render Carve to HTML, Markdown, plain text, or ANSI terminal text, with loss reporting.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
presetNoportable lowercases IDs and transliterates where possible; static-html is HTML-only.default
sourceYesDocument source (maximum 1000000 UTF-8 bytes)
targetYes
extensionsNoOpt-in extensions; semantic-spans is HTML-only.
allowRawHtmlNoPass trusted raw HTML through on HTML output. Disabled by default.
sanitizeUrlsNoBlock dangerous authored URL schemes. Keep enabled for untrusted input.
strictLossesNoFail instead of returning output when a raw-format node would be dropped.
asciiHeadingIdsNoHeading ID policy; explicit values override the preset.
maxRenderLossesNoMaximum detailed losses to return.
smartTypographyNoRender typographic glyphs or the punctuation the author typed.
lowercaseHeadingIdsNoLowercase generated heading IDs; explicit values override the preset.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
valueYes
lossesYes
truncatedYes
totalLossesYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changedv0.1.2
    • addedInput schema / properties / allowRawHtml
      Added value: +{
      +  "default": false,
      +  "description": "Pass trusted raw HTML through on HTML output. Disabled by default.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / asciiHeadingIds
      Added value: +{
      +  "description": "Heading ID policy; explicit values override the preset.",
      +  "enum": [
      +    "off",
      +    "fold",
      +    "strict"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / extensions
      Added value: +{
      +  "default": [],
      +  "description": "Opt-in extensions; semantic-spans is HTML-only.",
      +  "items": {
      +    "enum": [
      +      "autolink",
      +      "semantic-spans",
      +      "wikilinks"
      +    ],
      +    "type": "string"
      +  },
      +  "maxItems": 3,
      +  "type": "array"
      +}
    • addedInput schema / properties / lowercaseHeadingIds
      Added value: +{
      +  "description": "Lowercase generated heading IDs; explicit values override the preset.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / maxRenderLosses
      Added value: +{
      +  "description": "Maximum detailed losses to return.",
      +  "maximum": 10000,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / preset
      Added value: +{
      +  "default": "default",
      +  "description": "portable lowercases IDs and transliterates where possible; static-html is HTML-only.",
      +  "enum": [
      +    "default",
      +    "portable",
      +    "static-html"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / sanitizeUrls
      Added value: +{
      +  "default": true,
      +  "description": "Block dangerous authored URL schemes. Keep enabled for untrusted input.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / smartTypography
      Added value: +{
      +  "description": "Render typographic glyphs or the punctuation the author typed.",
      +  "enum": [
      +    "glyph",
      +    "source"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / strictLosses
      Added value: +{
      +  "default": false,
      +  "description": "Fail instead of returning output when a raw-format node would be dropped.",
      +  "type": "boolean"
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "losses": {
      +      "items": {},
      +      "type": "array"
      +    },
      +    "totalLosses": {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "truncated": {
      +      "type": "boolean"
      +    },
      +    "value": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "value",
      +    "losses",
      +    "totalLosses",
      +    "truncated"
      +  ],
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true and destructiveHint=false, so the non-destructive nature is covered. The description adds 'with loss reporting' as an extra behavioral hint, but it does not clarify what kinds of losses can occur or when they are triggered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence with no filler words. It front-loads the core purpose and adds one useful qualifier ('with loss reporting') without duplicating schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema, output schema, and annotations, the high-level description is mostly sufficient for an agent to understand what the tool does. The only notable gap is that it does not contextualize the loss-reporting behavior or the preset variants, though those are covered in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 91%, so the schema carries most of the parameter documentation. The description does not add meaningful parameter semantics beyond referencing loss reporting, which only loosely relates to maxRenderLosses and strictLosses.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Render'), a clear resource ('Carve'), and enumerates the exact output formats: HTML, Markdown, plain text, and ANSI terminal text. This immediately sets it apart from sibling tools like carve_parse or carve_format.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool is for converting Carve documents into renderable output formats, but it does not explicitly say when to choose it over siblings or when not to use it. No exclusions or alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.