URL parsing & building MCP. Keyless, offline: parse a URL into its components (with query params broken out), build a URL from parts, and parse/stringify query strings. Uses the platform URL/URLSearchParams — no API, no key.
Three well-named, read-only URL utility tools with complete input schemas and clear descriptions. All tools follow verb_noun naming (parse_url, build_url, parse_query). Descriptions are concise (50 - 150 chars) and explain purpose clearly. Input schemas are properly typed with required fields marked. However, output schemas are not documented, LLMs cannot predict return structure. Error handling is minimal (parse_url returns {valid:false} but others throw). No parameter constraints (enums, ranges) despite opportunities (e.g., protocol could be enum). Missing guidance on when to use each tool vs. alternatives.
Build a URL string from components. Provide at least `hostname` (and optionally protocol, port, path, hash) plus a `query` object of key/value pairs.
Parse a query string (with or without a leading "?") into an object; repeated keys become arrays.
Parse a URL into its components (keyless, offline): protocol, host, hostname, port, path, query (as an object), fragment, origin, and any userinfo.
Output schemas not documented. LLMs cannot predict return structure (e.g., parse_url returns {input, valid, protocol, origin, host, hostname, port, path, query, fragment, username, password}). Without documented output, agents cannot plan downstream tool calls or extract fields reliably.
Minimal error handling. parse_url returns {valid:false, reason:...} but build_url and parse_query throw exceptions. Inconsistent error responses prevent LLMs from gracefully handling failures. No recovery guidance (e.g., 'Invalid URL format. Ensure scheme is present: https://...').
No parameter constraints. 'protocol' accepts any string (should be enum: http, https, ftp, etc.). 'port' accepts any number (should be 1 - 65535). 'path' has no format guidance. Free-form strings invite hallucinated invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
No tool composition guidance. Descriptions do not explain when to use parse_url vs. build_url, or how they chain. LLMs may call the wrong tool or miss opportunities to combine them.
Parameter descriptions lack format/constraint details. 'query' in build_url says 'object' but does not specify value types (string, number, array). 'path' does not clarify leading slash requirement (code enforces it, but description is silent).