web2md-mcp
web2md-mcp
Web2MD용 MCP 서버 — Claude Desktop, Cursor 또는 모든 MCP 호환 AI 에이전트에서 웹페이지 URL을 깔끔한 Markdown으로 변환합니다.
설치
npm install -g web2md-mcp또는 npx를 사용하여 직접 실행:
npx web2md-mcpRelated MCP server: octen-mcp
설정
1. API 키 받기
web2md.org에 가입하고 대시보드에서 API 키를 받으세요.
2. Claude Desktop 설정
~/.claude/claude_desktop_config.json에 추가하세요:
{
"mcpServers": {
"web2md": {
"command": "npx",
"args": ["web2md-mcp"],
"env": {
"WEB2MD_API_KEY": "w2m_your_api_key"
}
}
}
}3. Cursor 설정
~/.cursor/mcp.json에 추가하세요:
{
"mcpServers": {
"web2md": {
"command": "npx",
"args": ["web2md-mcp"],
"env": {
"WEB2MD_API_KEY": "w2m_your_api_key"
}
}
}
}MCP 도구
convert_url
단일 웹페이지 URL을 Markdown으로 변환합니다.
Input: { url: "https://example.com/article" }
Output: { markdown: "# Article Title\n...", metadata: { title, wordCount, readingTime } }batch_convert
여러 URL을 한 번에 변환합니다 (최대 50개).
Input: { urls: ["https://...", "https://..."] }
Output: [{ url, markdown, metadata }, ...]agent_convert / agent_batch_convert
Chrome 확장 프로그램의 실제 브라우저 세션을 통해 URL을 변환합니다 (Agent Bridge 설정 필요). Reddit, 로그인 보호 사이트 및 JS 렌더링 페이지에서 작동합니다.
Agent Bridge
전체 브라우저 기반 변환(안티 봇 우회)에 대해서는 Agent Bridge 문서를 참조하세요.
링크
Available Tools
12 toolsagent_batch_convertA
Batch convert multiple URLs using the Chrome extension via native messaging. Ideal for converting many Reddit threads or JS-rendered pages. URLs are processed sequentially. Requires: Chrome running + Web2MD extension + native host installed.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | Array of URLs to convert (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It adds useful context: 'URLs are processed sequentially' (processing order) and 'Requires: Chrome running + Web2MD extension + native host installed' (prerequisites). This goes beyond a bare statement of purpose. However, it does not disclose failure behavior, return values, or potential side effects, which prevents a perfect score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, consisting of three short sentences that deliver essential information without redundancy. It front-loads the main purpose, then adds context (ideal use cases) and prerequisites. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a single parameter with high schema coverage and no output schema, so the description should ideally explain what the tool returns or results in. It does not mention return format or error handling. Given the moderate complexity, some key context is missing, making it adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a clear description for the sole parameter 'urls' ('Array of URLs to convert (max 50)'), giving 100% schema description coverage. The description adds only an example of suitable URLs ('many Reddit threads or JS-rendered pages') and notes sequential processing, but these do not significantly enhance parameter understanding. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Batch convert multiple URLs using the Chrome extension via native messaging.' It specifies the verb 'convert', the resource (multiple URLs), and the method (Chrome extension/native messaging). It distinguishes from sibling tools by emphasizing 'batch' and 'multiple', making it stand out from single-URL converters like convert_url.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Ideal for converting many Reddit threads or JS-rendered pages.' This implies when to use the tool (large numbers of URLs or JS-heavy content). It also lists prerequisites ('Chrome running + Web2MD extension + native host installed'), which guide the user on necessary conditions. However, it does not explicitly mention alternatives or cases where this tool should be avoided, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_convertA
Convert a URL using the Chrome extension via native messaging. Best for Reddit, login-protected pages, and JS-rendered sites. Requires: Chrome running + Web2MD extension + native host installed.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to convert | |
| skill | No | Skill name or id to apply — its body is returned alongside the markdown for you to follow |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It usefully discloses the dependency chain and that this path depends on a browser being live, which an agent needs to know before calling. It says nothing about failure behavior (what happens if the host is missing), latency, or whether the conversion is synchronous, and there is no output schema to cover the return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero padding: purpose first, then site-type guidance, then prerequisites. Every sentence carries information an agent would otherwise have to guess at.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with no annotations and no output schema, the description covers the mechanism and prerequisites adequately. It leaves gaps around outcomes and error conditions — an agent does not know what it receives back or how to react when the native host is unavailable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both `url` and `skill` documented in the schema itself, so the baseline is 3. The description adds no meaning about either parameter — notably it does not explain when to pass `skill` or what a skill body contributes to the call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Convert a URL") plus the mechanism (Chrome extension via native messaging), which is more than a name restatement. It also scopes itself to site types ("Reddit, login-protected pages, and JS-rendered sites"), implicitly distinguishing it from convert_url/bridge_convert_url, but it never names those siblings directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear selection context: use this when the target is Reddit, behind a login, or JS-rendered. It also states hard preconditions (Chrome running, Web2MD extension, native host installed). It stops short of 5 because it never says which sibling to use when those conditions do not hold.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bridge_convert_urlA
Convert a URL using your Chrome extension — required for Reddit, JS-rendered sites, or login-protected pages. The Web2MD extension must be installed and running in Chrome. Auto-discovers your extension ID via your API key.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to convert (Reddit, paywalled, JS-rendered, etc.) | |
| extensionId | No | Override extension ID (auto-discovered if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It mentions the extension prerequisite and auto-discovery of the extension ID, which is useful. However, it does not disclose what the function returns, error behavior, or side effects, leaving some uncertainty for a conversion tool lacking an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the primary action and immediately clarifying the distinctive extension requirement. Every word earns its place with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameters and no output schema, the description covers the key prerequisites and use cases, but it omits the return format and failure modes. For a conversion tool, the lack of output information is a noticeable gap, making it not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the property descriptions already explain the URL format and extensionId override. The tool description adds redundant mention of auto-discovery but does not provide additional semantic value beyond the schema, matching the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Convert a URL' and the resource 'using your Chrome extension', distinguishing it from sibling convert_url by emphasizing the extension requirement and specific use cases (Reddit, JS-rendered, login-protected pages). This avoids ambiguity with similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when this tool is required (Reddit, JS-rendered sites, login-protected pages) and mentions the prerequisite (extension must be installed and running). It does not explicitly exclude alternatives or name them, but the context is clear enough for the agent to select appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_fileA
Convert a local document file to clean Markdown. Supports Word (.docx/.doc), PowerPoint (.pptx/.ppt), Excel (.xlsx/.xls), OpenDocument (.odt/.ods/.odp), RTF, EPUB, CSV, and PDF. Tables, headings, lists and footnotes are preserved. Fast, fully local — the file never leaves the machine.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the document file on the local filesystem |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description takes full responsibility for behavioral traits. It details performance ('Fast'), security ('fully local - the file never leaves the machine'), and functional quality (preserving tables, headings, lists).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The information is highly condensed and logically ordered: function, capabilities, detailed features, and critical constraint (locality). It achieves maximum information density with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description is extremely complete. It defines the input scope, output format (clean Markdown), and critical behavioral guarantees (preservation of structure and local operation).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, meaning the input schema is perfectly described. The description does not add semantic meaning to the 'path' parameter beyond the file type and local constraint, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The purpose is perfectly clear: convert a local document file into 'clean Markdown.' It specifies the exact action and the desired output format, distinguishing it from generic conversion tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly specifies the context of 'local document file' and its 'fully local' nature. This acts as a strong usage guideline, helping the agent choose this tool over remote or API-based conversion siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_urlA
Convert a webpage URL to clean Markdown. Returns the Markdown content and metadata (title, word count, reading time).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL of the webpage to convert | |
| includeLinks | No | Include hyperlinks (default: true) | |
| includeImages | No | Include image references (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the output format (Markdown and metadata) which is helpful, but it does not mention that the tool fetches the webpage over the network, potential delays, or any failure modes. The description is adequate but lacks deeper behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the primary action front-loaded. It avoids repetition and every phrase adds value: the verb, the resource, the output format, and the specific metadata returned. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity and lack of output schema, the description covers the core behavior (conversion to Markdown) and return metadata. It does not explain tool selection among conversion-related siblings, which would improve completeness, but for a simple conversion tool it is mostly adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with descriptions (100% coverage), including the URL format and boolean toggles for links and images. The description adds some context by mentioning metadata like 'title, word count, reading time' but does not clarify how 'includeLinks' or 'includeImages' affect the output. Baseline of 3 is appropriate since schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Convert' with a clear resource ('a webpage URL') and outcome ('to clean Markdown'), and further specifies the return value ('Markdown content and metadata'). It distinguishes itself from sibling tools like 'semantic_search' by clearly stating its conversion purpose, though not explicitly comparing to other conversion tools, it is still specific enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool does but gives no guidance on when to use it versus alternatives. With siblings like 'bridge_convert_url', 'agent_convert', and 'agent_batch_convert', there is no mention of selection criteria, prerequisites, or scenarios where this tool is preferred. This is a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversionA
[deprecated: use search_library/get_library_items] Retrieve the full Markdown content of a previously saved conversion by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The conversion ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden; it does disclose the deprecation status and that the return is full Markdown content. It says nothing about permissions, scope of access, or whether the content is current, so coverage is partial for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with the deprecation warning front-loaded and the purpose second, which is the correct priority order for a deprecated tool. Nothing in it is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers purpose, return type, and deprecation routing, which is enough to call it correctly. The only minor gap is that it doesn't indicate what happens if the ID is not found.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single `id` parameter is already documented as "The conversion ID". The description's phrase "by its ID" restates the schema without adding format, source, or validity details, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Retrieve the full Markdown content of a previously saved conversion") plus the lookup key ("by its ID"), which no sibling tool does. The bracketed deprecation notice up front further disambiguates it from search_library and get_library_items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly marks itself deprecated and names the two replacement tools to use instead, giving an unambiguous when-not-to-use rule. An agent reading this knows to route to search_library or get_library_items rather than calling this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_library_itemsA
Fetch full markdown content for library items by id (max 20 per call). Use search_library first to find ids. Responses can be very large — for long pages, batch 5 or fewer ids per call.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Item ids to fetch (max 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden and does well: it states the 20-id hard cap, warns that responses can be very large, and prescribes smaller batches for long pages — operational behavior that is not inferable from the schema. It stops short of saying what happens with invalid or missing ids, or whether results are returned in the requested order.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action, then the prerequisite, then the size caveat. Every sentence carries distinct operational information with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema fetch tool, the description covers what is returned ('full markdown content'), the input cap, and the practical size pitfall. Minor gaps remain around failure modes for unknown ids and result ordering, but nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'ids' parameter already documents 'max 20', so the description's per-call limit largely restates the schema. The one bit of added meaning is that ids should originate from search_library, which is a sourcing hint rather than array-format guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Fetch full markdown content for library items by id') and implicitly distinguishes itself from the discovery tool by naming search_library as the id source. An agent can tell immediately this is a retrieval-by-id tool, not a search tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit prerequisite and alternative: 'Use search_library first to find ids,' which routes the agent away from guessing ids and toward the sibling search tool. It also gives a concrete usage rule for the batching case ('for long pages, batch 5 or fewer ids per call').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_skillA
Fetch the full content of a single Web2MD skill by id (or name). Returns its name, description, and complete SKILL.md body. Use list_skills first to find ids.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Skill id (or name) to fetch |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden: it makes the read-only nature evident via "Fetch" and, importantly, discloses the return shape (name, description, complete SKILL.md body) in the absence of an output schema. It does not address behavior on a missing or invalid id, which is the main remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: purpose first, return contents second, discovery prerequisite last. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool this covers purpose, return contents, and how to obtain valid ids. Only failure-mode behavior (unknown id) is unaddressed, a minor gap given the tool's low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage that already documents it as "Skill id (or name) to fetch." The description repeats the id-or-name equivalently without adding format, resolution rules (what happens on an ambiguous name), or examples, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Fetch the full content of a single Web2MD skill") plus the exact lookup key (id or name), and explicitly contrasts with list_skills, so an agent can separate it from the discovery sibling without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use list_skills first to find ids" gives a clear workflow precondition and names the alternative tool for discovery. It stops short of stating when not to use this tool (e.g. fetching many skills at once), which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_skillsA
List the skills saved in your Web2MD cloud account. Returns a compact list (id, name, description). Use get_skill to fetch the full SKILL.md body of one.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It does disclose the return shape (a compact list of id, name, description) and that results are account-scoped ('your Web2MD cloud account'), which is useful behavioral context. It says nothing about pagination/limits on a potentially unbounded list, ordering, or whether it is read-only, which leaves real gaps for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what the tool returns before the sibling cross-reference. Every sentence carries a distinct piece of information (purpose, return shape, alternative) with no repetition of the title or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema, the description covers purpose, return fields, and the sibling alternative, which is enough to invoke it correctly. The only missing element is how large/complete the returned list is (pagination or truncation behavior), a minor gap given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate — baseline 4 applies. The mention of id/name/description refers to the response, not inputs, and does not mislead about call signature.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('List the skills saved in your Web2MD cloud account') and immediately scopes the output ('Returns a compact list (id, name, description)'). It explicitly distinguishes itself from the sibling get_skill, so an agent can pick between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes the agent to the alternative clearly: 'Use get_skill to fetch the full SKILL.md body of one,' which implicitly tells the agent not to use this tool for full content. What it lacks is explicit when-not-to-use guidance, such as whether it is scoped to a workspace or paginated, but the core selection condition is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_libraryA
Search your Web2MD library (saved conversions) by keyword (matches title and full page content) and/or tag, newest first. Returns item metadata: id, title, url, date, tags. Use get_library_items to fetch full markdown.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Filter by tag | |
| limit | No | Max results (default 20, max 100) | |
| query | No | Keyword search over title and full page content | |
| since | No | Only items created on/after this ISO date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the result ordering ('newest first'), the exact returned fields ('id, title, url, date, tags'), and that matching spans title plus full page content. It omits safety/permission context and says nothing about truncation or how limit interacts with result counts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the search scope before the redirect to get_library_items. No filler, no repetition of schema defaults.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter read tool with no output schema, the description supplies the return shape and sort order, which is what an agent most needs. It leaves one gap: with zero required parameters, it never says what an unfiltered call returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (tag, limit, query, since) is already documented in the schema. The description adds only the 'and/or' combinability and the content-vs-title match scope, which is marginal value on top of a fully annotated schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search your Web2MD library (saved conversions)') plus the matching scope ('keyword ... and/or tag, newest first'), which is enough to tell it apart from semantic_search and get_library_items without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent onward: 'Use get_library_items to fetch full markdown', making clear this tool returns metadata only. It stops short of contrasting with semantic_search, so the choice between keyword and semantic retrieval is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
semantic_searchA
[deprecated: use search_library/get_library_items] Search your saved conversions using natural language. Works across languages.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 5) | |
| query | Yes | Natural language search query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the whole burden. It usefully discloses two behavioral traits beyond the schema: matching is semantic rather than keyword, and queries work across languages. It says nothing about result ordering/relevance scoring, pagination beyond 'limit', or that this is a read-only operation with no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the deprecation warning front-loaded, so the most decision-relevant information is the first thing an agent reads. No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter search tool with full schema coverage and no output schema, the definition covers purpose, replacement path, and cross-language behavior. The remaining gap is return-value expectations (ordering, relevance, shape), which no output schema documents either.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema, which sets the baseline at 3. The description adds meaning to the 'query' parameter by clarifying that natural-language input and non-English input are both supported, but it adds nothing about 'limit' beyond the schema's default note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search your saved conversions') plus a distinguishing trait ('using natural language', 'works across languages'). The deprecation prefix also points at the two sibling tools that supersede it, so an agent can tell what this does and what it is not for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The leading '[deprecated: use search_library/get_library_items]' explicitly names the preferred alternatives, which is strong routing guidance. It stops short of a full 5 because it never says whether any scenario still justifies calling this tool (e.g., legacy data or backward compatibility).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_libraryA
Sync your Web2MD library to a local directory as markdown files (organized by tag, with frontmatter). Incremental by default; keeps state in /.web2md-sync.json.
| Name | Required | Description | Default |
|---|---|---|---|
| dir | Yes | Absolute path of the target directory | |
| tag | No | Only sync items with this tag | |
| full | No | Ignore incremental cursor and re-scan full history |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden. It does disclose key side effects: writes markdown files into a local directory, organizes by tag with frontmatter, and keeps cursor state in <dir>/.web2md-sync.json. It omits what happens to previously synced files when library items are deleted, permission/auth requirements, and whether any report is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with the core action and format front-loaded, and the incremental/state-file behavior immediately after. No filler, though the parenthetical could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must convey behavior, and it does cover destination format, incremental state, and the override flag. Still missing is what happens to orphaned files and any returned summary, which matters for a tool that mutates a local directory.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is already documented in the schema. The description only adds the notion that syncing is incremental by default, which gives context for the full flag, but it does not explain tag semantics or path constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (sync) and resource (Web2MD library) plus the output form: markdown files organized by tag with frontmatter. It is clearly distinct from read-only siblings like search_library and get_library_items, but never names them, so the differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Incremental by default' implies the normal use case and hints that the full flag is the exception, but there is no explicit when-to-use/when-not guidance and no routing away from siblings such as search_library or get_library_items for read-only needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
- Changed
agent_convert1 field changed- added
Input schema / properties / skillAdded value: +{ + "description": "Skill name or id to apply — its body is returned alongside the markdown for you to follow", + "type": "string" +}
- Added
convert_file - Added
get_library_items - Added
get_skill - Added
list_skills - Added
search_library - Added
sync_library
6 tool updates
v0.8.1- First observed
agent_batch_convert - First observed
agent_convert - First observed
bridge_convert_url - First observed
convert_url - First observed
get_conversion - First observed
semantic_search
TDQS
Scored across 12 tools
Four tools (convert_url, agent_convert, bridge_convert_url, agent_batch_convert) all convert a URL to Markdown and differ mainly in transport (plain fetch, Chrome extension, native messaging, batch). The descriptions do hint at when to use each, but an agent could easily pick the wrong one, especially between bridge_convert_url and agent_convert, which both require the extension. Two deprecated tools (semantic_search, get_conversion) overlap with search_library/get_library_items and add confusion.
All names are snake_case with a recognizable verb_noun or noun_verb shape (convert_file, convert_url, search_library, get_library_items, sync_library). Minor inconsistency: agent_convert / agent_batch_convert / bridge_convert_url use differing transport prefixes instead of a uniform verb pattern, and get_conversion vs get_library_items use different resource nouns for similar concepts.
Twelve tools is well within a healthy range for a conversion-plus-library server. However, two are explicitly deprecated and still exposed, so the effective surface is about 10, which is fine but slightly inflated by legacy entries.
The core lifecycle is covered: file conversion, URL conversion (direct, extension, batch), library search/fetch, local sync, and skills retrieval. Gaps are minor: no way to delete or tag/untag library items, no single-item metadata fetch distinct from bulk retrieval, and deprecated tools linger rather than being removed, but agents can work around all of these.
Maintenance
Related MCP Connectors
MCP Server for Web2MD — convert URLs to Markdown from Claude Desktop, Cursor, etc.
MCP server (stdio): fetch web pages as clean readable markdown via the AgentForge API
Jina AI Reader/Search MCP — turn any URL into clean LLM-ready markdown, plus web search.
Document-to-Markdown MCP server — convert PDF, Office and HTML into LLM-ready Markdown.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for Averra Extract — lets AI agents like Claude, Cursor, and ChatGPT convert any webpage into clean, LLM-ready Markdown.5119 npmMIT

octen-mcpofficial
AlicenseAqualityAmaintenanceMCP server for Octen Extract that turns any URL into clean, LLM-ready markdown, with highlights and classification. Works with Claude, Cursor, VS Code, and other MCP clients.9525 npm23MIT- AlicenseAqualityCmaintenanceMCP server that converts URLs to clean Markdown/Text for LLM agents.535 npm5MIT
- AlicenseNot gradedqualityDmaintenanceConvert any file or URL to clean AI-ready Markdown directly from Claude, Claude Code, Cursor, or any MCP-compatible AI agent.1MIT