XML ⇄ JSON transform plugin for mcpg. `xml_to_json` parses an XML string into a JSON tree (attributes as `@name`, text as `#text`, repeated child tags as arrays); `json_to_xml` serialises that shape back to an XML string. Usable as a global pre/post-dispatch transform and as a pipeline step. An optional JSON Pointer targets a sub-field so the rest of the payload is left untouched. Pure compute — no I/O.
Two tools with complete input schemas and reasonable descriptions. Naming follows verb_noun convention (xml_to_json, json_to_xml). Descriptions are adequate (60-90 chars) but lack actionable context for LLM selection. Parameters are typed and constrained (enums for direction/phase), but lack descriptions for several fields. No output schema documented. Error handling returns messages but lacks recovery guidance. Missing tool annotations (readOnlyHint). Overall fair quality, functional but not production-optimized for agent reasoning.
Serialises a JSON tree back to an XML string (reverse of xml_to_json)
Parses an XML string into a JSON tree (attributes as `@name`, text as `#text`, repeated child tags as arrays)
Output schema not documented. LLMs cannot predict return structure (JSON object vs string vs array) or plan downstream operations.
Parameter descriptions missing or incomplete. 'pointer' and 'max_output_bytes' lack descriptions explaining their purpose and constraints. LLMs cannot infer RFC 6901 JSON Pointer semantics from the name alone.
Tool descriptions lack context for LLM selection. 'Parses an XML string into a JSON tree' does not explain WHEN to use this vs alternatives, or what the output structure looks like. Descriptions should be 50-200 chars with actionable context.
No tool annotations (readOnlyHint). Both tools are read-only transforms but lack explicit annotation. Agents cannot determine safety/idempotency without reading descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Error messages lack recovery guidance. 'pointer not found' or 'input value must be a string' tell the agent what failed but not what to do next. Should suggest alternatives or next steps.