# MethodIQ Tools (io.github.cnucho/methodiq-tools): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/io.github.cnucho%2Fmethodiq-tools/versions/latest)
- Connected to: https://methodiq-tools-production.up.railway.app/mcp
- Repository: https://github.com/cnucho/mcp-pptx-tools
- Scoring rules: v2
- Tools: 101
- Average: 36.4 / 100 (Rain)
- Near-identical pairs: 120

This page shows how MethodIQ Tools (io.github.cnucho/methodiq-tools)'s tool descriptions scored, the issues found and the names of its tools and parameters. The descriptions are the server's own: read them where the copy came from.

Forecall asked the URL this server lists in the official MCP Registry for its tools/list once, on the date above, without calling any tool. The server may have changed since.

## Across the server

- Major: 101 tools. Above 40, models choose less accurately.
- Minor: 120 pairs with nearly the same description in all; the top 12 are shown.
- Minor: The server's instructions are 2422 characters. Claude Code reads only the first 2,048 by default (Codex 0.154.0 reads them whole). Put what the server is for first.

## Tools

- `create_pptx_from_outline`: 13 / 100
  - Major: The description only restates the name (9 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: plan, plan.title, plan.slides.
  - Minor: String arguments with no constraint or example: plan.title.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `surveyviz_export_chart_book_html`: 13 / 100
  - Major: The description only restates the name (9 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: specs, packets, title, locale.
  - Minor: String arguments with no constraint or example: title, locale.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `validate_slide_plan`: 13 / 100
  - Major: The description only restates the name (5 words).
  - Major: The description is too short (5 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: plan, plan.title, plan.slides.
  - Minor: String arguments with no constraint or example: plan.title.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `surveyviz_render_chart_html`: 18 / 100
  - Major: The description only restates the name (6 words).
  - Major: The description is too short (6 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: spec, chart_spec, width.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `export_graphviz_dot`: 19 / 100
  - Major: The description only restates the name (8 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graph, graph.direction, graph.nodes, graph.nodes[].id, graph.nodes[].label, graph.nodes[].group, graph.nodes[].shape, graph.edges, graph.edges[].from, graph.edges[].to, graph.edges[].label, graph.edges[].style, graph.edges[].direction, graph.edges[].curve.
  - Minor: String arguments with no constraint or example: graph.nodes[].label, graph.nodes[].group, graph.edges[].label.
  - Minor: The meaning of the boolean argument graph.edges[].curve is unclear.
  - Minor: Says nothing about what it returns.
- `export_mermaid_flowchart`: 19 / 100
  - Major: The description only restates the name (8 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graph, graph.direction, graph.nodes, graph.nodes[].id, graph.nodes[].label, graph.nodes[].group, graph.nodes[].shape, graph.edges, graph.edges[].from, graph.edges[].to, graph.edges[].label, graph.edges[].style, graph.edges[].direction, graph.edges[].curve.
  - Minor: String arguments with no constraint or example: graph.nodes[].label, graph.nodes[].group, graph.edges[].label.
  - Minor: The meaning of the boolean argument graph.edges[].curve is unclear.
  - Minor: Says nothing about what it returns.
- `normalize_graph`: 19 / 100
  - Major: The description only restates the name (9 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graph, graph.direction, graph.nodes, graph.nodes[].id, graph.nodes[].label, graph.nodes[].group, graph.nodes[].shape, graph.edges, graph.edges[].from, graph.edges[].to, graph.edges[].label, graph.edges[].style, graph.edges[].direction, graph.edges[].curve.
  - Minor: String arguments with no constraint or example: graph.nodes[].label, graph.nodes[].group, graph.edges[].label.
  - Minor: The meaning of the boolean argument graph.edges[].curve is unclear.
  - Minor: Says nothing about what it returns.
- `summarize_slide_plan`: 20 / 100
  - Major: The description is too short (6 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: plan, plan.title, plan.slides.
  - Minor: String arguments with no constraint or example: plan.title.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `get_pptx_document`: 23 / 100
  - Major: The description only restates the name (7 words).
  - Major: The description is too short (7 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: documentId, revision.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: documentId. Name the tool or the place that returns it, or models look it up first.
- `review_layout_plan`: 23 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graph, graph.direction, graph.nodes, graph.nodes[].id, graph.nodes[].label, graph.nodes[].group, graph.nodes[].shape, graph.edges, graph.edges[].from, graph.edges[].to, graph.edges[].label, graph.edges[].style, graph.edges[].direction, graph.edges[].curve.
  - Minor: String arguments with no constraint or example: graph.nodes[].label, graph.nodes[].group, graph.edges[].label.
  - Minor: The meaning of the boolean argument graph.edges[].curve is unclear.
  - Minor: Says nothing about what it returns.
- `render_diagram_editor`: 25 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: diagramId.
  - Minor: String arguments with no constraint or example: diagramId.
  - Minor: Says nothing about what it returns.
- `set_diagram_selection`: 25 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: diagramId, expectedRevision, selection, selection[].kind, selection[].id.
  - Minor: String arguments with no constraint or example: diagramId, selection[].id.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: diagramId. Name the tool or the place that returns it, or models look it up first.
- `undo_diagram`: 25 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: diagramId, expectedRevision, redo.
  - Minor: String arguments with no constraint or example: diagramId.
  - Minor: The meaning of the boolean argument redo is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: diagramId. Name the tool or the place that returns it, or models look it up first.
- `extract_focus_graph`: 26 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graph, graph.direction, graph.nodes, graph.nodes[].id, graph.nodes[].label, graph.nodes[].group, graph.nodes[].shape, graph.edges, graph.edges[].from, graph.edges[].to, graph.edges[].label, graph.edges[].style, graph.edges[].direction, graph.edges[].curve, center, depth, traversal.
  - Minor: String arguments with no constraint or example: graph.nodes[].label, graph.nodes[].group, graph.edges[].label, center.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument graph.edges[].curve is unclear.
  - Minor: Says nothing about what it returns.
- `analysis_test_variance_homogeneity`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: groups.
  - Minor: Says nothing about what it returns.
- `get_diagram`: 28 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: diagramId.
  - Minor: String arguments with no constraint or example: diagramId.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: diagramId. Name the tool or the place that returns it, or models look it up first.
- `surveyviz_render_chart_svg`: 29 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: spec, chart_spec, width.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `analyze_graph`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graph, graph.direction, graph.nodes, graph.nodes[].id, graph.nodes[].label, graph.nodes[].group, graph.nodes[].shape, graph.edges, graph.edges[].from, graph.edges[].to, graph.edges[].label, graph.edges[].style, graph.edges[].direction, graph.edges[].curve, start.
  - Minor: String arguments with no constraint or example: graph.nodes[].label, graph.nodes[].group, graph.edges[].label, start.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument graph.edges[].curve is unclear.
  - Minor: Says nothing about what it returns.
- `create_chart`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: chartId, revision, confirmation, input, packet, packet.version, packet.packetId, packet.source, packet.source.label, packet.source.artifactSha256, packet.table, packet.table.rows, packet.table.category, packet.table.values, packet.semantics, packet.semantics.unit, packet.semantics.denominator, packet.semantics.denominator.description, packet.semantics.baseN, packet.semantics.weighted, packet.semantics.weightDescription, packet.semantics.multipleResponse, packet.semantics.missingRule, packet.evidence, packet.evidence[].id, packet.evidence[].class, packet.evidence[].status, packet.evidence[].producer, packet.evidence[].tableDigest, spec, spec.version, spec.profile, spec.type, spec.title, spec.evidenceIds, spec.output, selection, feedback, format, text, data, sheetName.
  - Minor: String arguments with no constraint or example: chartId, packet.table.category, packet.semantics.unit, packet.semantics.denominator.description, packet.semantics.weightDescription, packet.semantics.missingRule, packet.evidence[].id, packet.evidence[].producer, spec.type, feedback, format, text, data, sheetName.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument confirmation is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.weighted is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.multipleResponse is unclear.
  - Minor: Says nothing about what it returns.
- `create_report_chart`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: chartId, revision, confirmation, input, packet, packet.version, packet.packetId, packet.source, packet.source.label, packet.source.artifactSha256, packet.table, packet.table.rows, packet.table.category, packet.table.values, packet.semantics, packet.semantics.unit, packet.semantics.denominator, packet.semantics.denominator.description, packet.semantics.baseN, packet.semantics.weighted, packet.semantics.weightDescription, packet.semantics.multipleResponse, packet.semantics.missingRule, packet.evidence, packet.evidence[].id, packet.evidence[].class, packet.evidence[].status, packet.evidence[].producer, packet.evidence[].tableDigest, spec, spec.version, spec.profile, spec.type, spec.title, spec.evidenceIds, spec.output, selection, feedback, format, text, data, sheetName.
  - Minor: String arguments with no constraint or example: chartId, packet.table.category, packet.semantics.unit, packet.semantics.denominator.description, packet.semantics.weightDescription, packet.semantics.missingRule, packet.evidence[].id, packet.evidence[].producer, spec.type, feedback, format, text, data, sheetName.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument confirmation is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.weighted is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.multipleResponse is unclear.
  - Minor: Says nothing about what it returns.
- `export_chart`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: chartId, revision, confirmation, input, packet, packet.version, packet.packetId, packet.source, packet.source.label, packet.source.artifactSha256, packet.table, packet.table.rows, packet.table.category, packet.table.values, packet.semantics, packet.semantics.unit, packet.semantics.denominator, packet.semantics.denominator.description, packet.semantics.baseN, packet.semantics.weighted, packet.semantics.weightDescription, packet.semantics.multipleResponse, packet.semantics.missingRule, packet.evidence, packet.evidence[].id, packet.evidence[].class, packet.evidence[].status, packet.evidence[].producer, packet.evidence[].tableDigest, spec, spec.version, spec.profile, spec.type, spec.title, spec.evidenceIds, spec.output, selection, feedback, format, text, data, sheetName.
  - Minor: String arguments with no constraint or example: chartId, packet.table.category, packet.semantics.unit, packet.semantics.denominator.description, packet.semantics.weightDescription, packet.semantics.missingRule, packet.evidence[].id, packet.evidence[].producer, spec.type, feedback, format, text, data, sheetName.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument confirmation is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.weighted is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.multipleResponse is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: chartId. Name the tool or the place that returns it, or models look it up first.
- `get_chart`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: chartId, revision, confirmation, input, packet, packet.version, packet.packetId, packet.source, packet.source.label, packet.source.artifactSha256, packet.table, packet.table.rows, packet.table.category, packet.table.values, packet.semantics, packet.semantics.unit, packet.semantics.denominator, packet.semantics.denominator.description, packet.semantics.baseN, packet.semantics.weighted, packet.semantics.weightDescription, packet.semantics.multipleResponse, packet.semantics.missingRule, packet.evidence, packet.evidence[].id, packet.evidence[].class, packet.evidence[].status, packet.evidence[].producer, packet.evidence[].tableDigest, spec, spec.version, spec.profile, spec.type, spec.title, spec.evidenceIds, spec.output, selection, feedback, format, text, data, sheetName.
  - Minor: String arguments with no constraint or example: chartId, packet.table.category, packet.semantics.unit, packet.semantics.denominator.description, packet.semantics.weightDescription, packet.semantics.missingRule, packet.evidence[].id, packet.evidence[].producer, spec.type, feedback, format, text, data, sheetName.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument confirmation is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.weighted is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.multipleResponse is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: chartId. Name the tool or the place that returns it, or models look it up first.
- `import_chart_workbook`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: chartId, revision, confirmation, input, packet, packet.version, packet.packetId, packet.source, packet.source.label, packet.source.artifactSha256, packet.table, packet.table.rows, packet.table.category, packet.table.values, packet.semantics, packet.semantics.unit, packet.semantics.denominator, packet.semantics.denominator.description, packet.semantics.baseN, packet.semantics.weighted, packet.semantics.weightDescription, packet.semantics.multipleResponse, packet.semantics.missingRule, packet.evidence, packet.evidence[].id, packet.evidence[].class, packet.evidence[].status, packet.evidence[].producer, packet.evidence[].tableDigest, spec, spec.version, spec.profile, spec.type, spec.title, spec.evidenceIds, spec.output, selection, feedback, format, text, data, sheetName.
  - Minor: String arguments with no constraint or example: chartId, packet.table.category, packet.semantics.unit, packet.semantics.denominator.description, packet.semantics.weightDescription, packet.semantics.missingRule, packet.evidence[].id, packet.evidence[].producer, spec.type, feedback, format, text, data, sheetName.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument confirmation is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.weighted is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.multipleResponse is unclear.
  - Minor: Says nothing about what it returns.
- `list_chart_templates`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: chartId, revision, confirmation, input, packet, packet.version, packet.packetId, packet.source, packet.source.label, packet.source.artifactSha256, packet.table, packet.table.rows, packet.table.category, packet.table.values, packet.semantics, packet.semantics.unit, packet.semantics.denominator, packet.semantics.denominator.description, packet.semantics.baseN, packet.semantics.weighted, packet.semantics.weightDescription, packet.semantics.multipleResponse, packet.semantics.missingRule, packet.evidence, packet.evidence[].id, packet.evidence[].class, packet.evidence[].status, packet.evidence[].producer, packet.evidence[].tableDigest, spec, spec.version, spec.profile, spec.type, spec.title, spec.evidenceIds, spec.output, selection, feedback, format, text, data, sheetName.
  - Minor: String arguments with no constraint or example: chartId, packet.table.category, packet.semantics.unit, packet.semantics.denominator.description, packet.semantics.weightDescription, packet.semantics.missingRule, packet.evidence[].id, packet.evidence[].producer, spec.type, feedback, format, text, data, sheetName.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument confirmation is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.weighted is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.multipleResponse is unclear.
  - Minor: Says nothing about what it returns.
- `parse_chart_table`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: chartId, revision, confirmation, input, packet, packet.version, packet.packetId, packet.source, packet.source.label, packet.source.artifactSha256, packet.table, packet.table.rows, packet.table.category, packet.table.values, packet.semantics, packet.semantics.unit, packet.semantics.denominator, packet.semantics.denominator.description, packet.semantics.baseN, packet.semantics.weighted, packet.semantics.weightDescription, packet.semantics.multipleResponse, packet.semantics.missingRule, packet.evidence, packet.evidence[].id, packet.evidence[].class, packet.evidence[].status, packet.evidence[].producer, packet.evidence[].tableDigest, spec, spec.version, spec.profile, spec.type, spec.title, spec.evidenceIds, spec.output, selection, feedback, format, text, data, sheetName.
  - Minor: String arguments with no constraint or example: chartId, packet.table.category, packet.semantics.unit, packet.semantics.denominator.description, packet.semantics.weightDescription, packet.semantics.missingRule, packet.evidence[].id, packet.evidence[].producer, spec.type, feedback, format, text, data, sheetName.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument confirmation is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.weighted is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.multipleResponse is unclear.
  - Minor: Says nothing about what it returns.
- `render_chart_editor`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: chartId, revision, confirmation, input, packet, packet.version, packet.packetId, packet.source, packet.source.label, packet.source.artifactSha256, packet.table, packet.table.rows, packet.table.category, packet.table.values, packet.semantics, packet.semantics.unit, packet.semantics.denominator, packet.semantics.denominator.description, packet.semantics.baseN, packet.semantics.weighted, packet.semantics.weightDescription, packet.semantics.multipleResponse, packet.semantics.missingRule, packet.evidence, packet.evidence[].id, packet.evidence[].class, packet.evidence[].status, packet.evidence[].producer, packet.evidence[].tableDigest, spec, spec.version, spec.profile, spec.type, spec.title, spec.evidenceIds, spec.output, selection, feedback, format, text, data, sheetName.
  - Minor: String arguments with no constraint or example: chartId, packet.table.category, packet.semantics.unit, packet.semantics.denominator.description, packet.semantics.weightDescription, packet.semantics.missingRule, packet.evidence[].id, packet.evidence[].producer, spec.type, feedback, format, text, data, sheetName.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument confirmation is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.weighted is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.multipleResponse is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: chartId. Name the tool or the place that returns it, or models look it up first.
- `select_chart_element`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: chartId, revision, confirmation, input, packet, packet.version, packet.packetId, packet.source, packet.source.label, packet.source.artifactSha256, packet.table, packet.table.rows, packet.table.category, packet.table.values, packet.semantics, packet.semantics.unit, packet.semantics.denominator, packet.semantics.denominator.description, packet.semantics.baseN, packet.semantics.weighted, packet.semantics.weightDescription, packet.semantics.multipleResponse, packet.semantics.missingRule, packet.evidence, packet.evidence[].id, packet.evidence[].class, packet.evidence[].status, packet.evidence[].producer, packet.evidence[].tableDigest, spec, spec.version, spec.profile, spec.type, spec.title, spec.evidenceIds, spec.output, selection, feedback, format, text, data, sheetName.
  - Minor: String arguments with no constraint or example: chartId, packet.table.category, packet.semantics.unit, packet.semantics.denominator.description, packet.semantics.weightDescription, packet.semantics.missingRule, packet.evidence[].id, packet.evidence[].producer, spec.type, feedback, format, text, data, sheetName.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument confirmation is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.weighted is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.multipleResponse is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: chartId. Name the tool or the place that returns it, or models look it up first.
- `submit_chart_feedback`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: chartId, revision, confirmation, input, packet, packet.version, packet.packetId, packet.source, packet.source.label, packet.source.artifactSha256, packet.table, packet.table.rows, packet.table.category, packet.table.values, packet.semantics, packet.semantics.unit, packet.semantics.denominator, packet.semantics.denominator.description, packet.semantics.baseN, packet.semantics.weighted, packet.semantics.weightDescription, packet.semantics.multipleResponse, packet.semantics.missingRule, packet.evidence, packet.evidence[].id, packet.evidence[].class, packet.evidence[].status, packet.evidence[].producer, packet.evidence[].tableDigest, spec, spec.version, spec.profile, spec.type, spec.title, spec.evidenceIds, spec.output, selection, feedback, format, text, data, sheetName.
  - Minor: String arguments with no constraint or example: chartId, packet.table.category, packet.semantics.unit, packet.semantics.denominator.description, packet.semantics.weightDescription, packet.semantics.missingRule, packet.evidence[].id, packet.evidence[].producer, spec.type, feedback, format, text, data, sheetName.
  - Minor: The meaning of the boolean argument confirmation is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.weighted is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.multipleResponse is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: chartId. Name the tool or the place that returns it, or models look it up first.
- `undo_chart`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: chartId, revision, confirmation, input, packet, packet.version, packet.packetId, packet.source, packet.source.label, packet.source.artifactSha256, packet.table, packet.table.rows, packet.table.category, packet.table.values, packet.semantics, packet.semantics.unit, packet.semantics.denominator, packet.semantics.denominator.description, packet.semantics.baseN, packet.semantics.weighted, packet.semantics.weightDescription, packet.semantics.multipleResponse, packet.semantics.missingRule, packet.evidence, packet.evidence[].id, packet.evidence[].class, packet.evidence[].status, packet.evidence[].producer, packet.evidence[].tableDigest, spec, spec.version, spec.profile, spec.type, spec.title, spec.evidenceIds, spec.output, selection, feedback, format, text, data, sheetName.
  - Minor: String arguments with no constraint or example: chartId, packet.table.category, packet.semantics.unit, packet.semantics.denominator.description, packet.semantics.weightDescription, packet.semantics.missingRule, packet.evidence[].id, packet.evidence[].producer, spec.type, feedback, format, text, data, sheetName.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument confirmation is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.weighted is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.multipleResponse is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: chartId. Name the tool or the place that returns it, or models look it up first.
- `update_chart`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: chartId, revision, confirmation, input, packet, packet.version, packet.packetId, packet.source, packet.source.label, packet.source.artifactSha256, packet.table, packet.table.rows, packet.table.category, packet.table.values, packet.semantics, packet.semantics.unit, packet.semantics.denominator, packet.semantics.denominator.description, packet.semantics.baseN, packet.semantics.weighted, packet.semantics.weightDescription, packet.semantics.multipleResponse, packet.semantics.missingRule, packet.evidence, packet.evidence[].id, packet.evidence[].class, packet.evidence[].status, packet.evidence[].producer, packet.evidence[].tableDigest, spec, spec.version, spec.profile, spec.type, spec.title, spec.evidenceIds, spec.output, selection, feedback, format, text, data, sheetName.
  - Minor: String arguments with no constraint or example: chartId, packet.table.category, packet.semantics.unit, packet.semantics.denominator.description, packet.semantics.weightDescription, packet.semantics.missingRule, packet.evidence[].id, packet.evidence[].producer, spec.type, feedback, format, text, data, sheetName.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument confirmation is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.weighted is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.multipleResponse is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: chartId. Name the tool or the place that returns it, or models look it up first.
- `update_report_chart`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: chartId, revision, confirmation, input, packet, packet.version, packet.packetId, packet.source, packet.source.label, packet.source.artifactSha256, packet.table, packet.table.rows, packet.table.category, packet.table.values, packet.semantics, packet.semantics.unit, packet.semantics.denominator, packet.semantics.denominator.description, packet.semantics.baseN, packet.semantics.weighted, packet.semantics.weightDescription, packet.semantics.multipleResponse, packet.semantics.missingRule, packet.evidence, packet.evidence[].id, packet.evidence[].class, packet.evidence[].status, packet.evidence[].producer, packet.evidence[].tableDigest, spec, spec.version, spec.profile, spec.type, spec.title, spec.evidenceIds, spec.output, selection, feedback, format, text, data, sheetName.
  - Minor: String arguments with no constraint or example: chartId, packet.table.category, packet.semantics.unit, packet.semantics.denominator.description, packet.semantics.weightDescription, packet.semantics.missingRule, packet.evidence[].id, packet.evidence[].producer, spec.type, feedback, format, text, data, sheetName.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument confirmation is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.weighted is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.multipleResponse is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: chartId. Name the tool or the place that returns it, or models look it up first.
- `validate_chart`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: chartId, revision, confirmation, input, packet, packet.version, packet.packetId, packet.source, packet.source.label, packet.source.artifactSha256, packet.table, packet.table.rows, packet.table.category, packet.table.values, packet.semantics, packet.semantics.unit, packet.semantics.denominator, packet.semantics.denominator.description, packet.semantics.baseN, packet.semantics.weighted, packet.semantics.weightDescription, packet.semantics.multipleResponse, packet.semantics.missingRule, packet.evidence, packet.evidence[].id, packet.evidence[].class, packet.evidence[].status, packet.evidence[].producer, packet.evidence[].tableDigest, spec, spec.version, spec.profile, spec.type, spec.title, spec.evidenceIds, spec.output, selection, feedback, format, text, data, sheetName.
  - Minor: String arguments with no constraint or example: chartId, packet.table.category, packet.semantics.unit, packet.semantics.denominator.description, packet.semantics.weightDescription, packet.semantics.missingRule, packet.evidence[].id, packet.evidence[].producer, spec.type, feedback, format, text, data, sheetName.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument confirmation is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.weighted is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.multipleResponse is unclear.
  - Minor: Says nothing about what it returns.
- `analysis_analyze_correspondence`: 31 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: table, axes.
  - Minor: Says nothing about what it returns.
- `analysis_audit_reported_statistics`: 31 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: test, statistic, reported_p, df, df2, tolerance.
  - Minor: Says nothing about what it returns.
- `analysis_estimate_propensity_scores`: 31 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: X, treatment, regularization_C.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `analysis_fit_pls_regression`: 31 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: X, Y, components, folds.
  - Minor: Says nothing about what it returns.
- `create_diagram`: 31 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: templateId, title, graph, graph.direction, graph.nodes, graph.nodes[].id, graph.nodes[].label, graph.nodes[].group, graph.nodes[].shape, graph.edges, graph.edges[].from, graph.edges[].to, graph.edges[].label, graph.edges[].style, graph.edges[].direction, graph.edges[].curve.
  - Minor: String arguments with no constraint or example: templateId, title, graph.nodes[].label, graph.nodes[].group, graph.edges[].label.
  - Minor: The meaning of the boolean argument graph.edges[].curve is unclear.
  - Minor: Says nothing about what it returns.
- `delete_pptx_document`: 31 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: documentId, revision.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: documentId. Name the tool or the place that returns it, or models look it up first.
- `analysis_diagnose_covariate_balance`: 34 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: X, treatment.
  - Minor: Says nothing about what it returns.
- `apply_diagram_changes`: 34 / 100
  - Major: Arguments without a description: diagramId, expectedRevision, changes, changes[].op, changes[].id, changes[].node, changes[].edge, changes[].patch, changes[].title, changes[].direction.
  - Minor: String arguments with no constraint or example: diagramId, changes[].id, changes[].title.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: diagramId. Name the tool or the place that returns it, or models look it up first.
- `apply_pptx_patch`: 34 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: documentId, revision, operations, operations[].type, operations[].slideNumber, operations[].boxId, operations[].paragraphIndex, operations[].text, operations[].type, operations[].slideNumber, operations[].boxId, operations[].style, operations[].style.fontSize, operations[].style.fontFace, operations[].style.color, operations[].style.align, operations[].style.lineSpacing, operations[].style.bold.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument operations[].style.bold is unclear.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: documentId. Name the tool or the place that returns it, or models look it up first.
- `create_deck`: 34 / 100
  - Major: Arguments without a description: deckId, revision, plan, slideId, feedback, data, selectedSlides.
  - Minor: String arguments with no constraint or example: deckId, slideId, feedback, data.
  - Minor: Says nothing about what it returns.
- `export_pptx_document`: 34 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: documentId, revision.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: documentId. Name the tool or the place that returns it, or models look it up first.
- `get_deck`: 34 / 100
  - Major: Arguments without a description: deckId, revision, plan, slideId, feedback, data, selectedSlides.
  - Minor: String arguments with no constraint or example: deckId, slideId, feedback, data.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: deckId. Name the tool or the place that returns it, or models look it up first.
- `import_pptx`: 34 / 100
  - Major: Arguments without a description: deckId, revision, plan, slideId, feedback, data, selectedSlides.
  - Minor: String arguments with no constraint or example: deckId, slideId, feedback, data.
  - Minor: Says nothing about what it returns.
- `read_pptx_part`: 34 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: documentId, slideNumbers.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: documentId. Name the tool or the place that returns it, or models look it up first.
- `render_pptx_editor`: 34 / 100
  - Major: Arguments without a description: deckId, revision, plan, slideId, feedback, data, selectedSlides.
  - Minor: String arguments with no constraint or example: deckId, slideId, feedback, data.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: deckId. Name the tool or the place that returns it, or models look it up first.
- `render_pptx_part`: 34 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: revision, slides, dpi, documentId.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: documentId. Name the tool or the place that returns it, or models look it up first.
- `researchpilot_check_method`: 34 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: capabilityId.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: capabilityId. Name the tool or the place that returns it, or models look it up first.
- `researchpilot_search_datasets`: 34 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: query, scope.
  - Minor: Says nothing about what it returns.
- `researchpilot_search_literature`: 34 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: query.
  - Minor: Says nothing about what it returns.
- `select_slide`: 34 / 100
  - Major: Arguments without a description: deckId, revision, plan, slideId, feedback, data, selectedSlides.
  - Minor: String arguments with no constraint or example: deckId, slideId, feedback, data.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: deckId, slideId. Name the tool or the place that returns it, or models look it up first.
- `submit_deck_feedback`: 34 / 100
  - Major: Arguments without a description: deckId, revision, plan, slideId, feedback, data, selectedSlides.
  - Minor: String arguments with no constraint or example: deckId, slideId, feedback, data.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: deckId. Name the tool or the place that returns it, or models look it up first.
- `undo_deck`: 34 / 100
  - Major: Arguments without a description: deckId, revision, plan, slideId, feedback, data, selectedSlides.
  - Minor: String arguments with no constraint or example: deckId, slideId, feedback, data.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: deckId. Name the tool or the place that returns it, or models look it up first.
- `update_deck`: 34 / 100
  - Major: Arguments without a description: deckId, revision, plan, slideId, feedback, data, selectedSlides.
  - Minor: String arguments with no constraint or example: deckId, slideId, feedback, data.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: deckId. Name the tool or the place that returns it, or models look it up first.
- `analysis_match_propensity_scores`: 36 / 100
  - Major: Arguments without a description: X, treatment, scores, caliper_sd, outcome.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `analysis_test_mean_equivalence`: 36 / 100
  - Major: Arguments without a description: sample1, sample2, lower, upper, alpha, design.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `render_deck`: 37 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: deckId, revision, slides, dpi.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: deckId. Name the tool or the place that returns it, or models look it up first.
- `researchpilot_content_analysis_template`: 37 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: researchQuestion, approach, codingMode.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `researchpilot_prepare_specialist_execution`: 37 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: projectId, capabilityId, requestedWork, rigor, requiredOutputs.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: The name is long (42 characters).
  - Minor: Required identifiers whose description does not say where the value comes from: projectId, capabilityId. Name the tool or the place that returns it, or models look it up first.
- `researchpilot_text_analysis_pilot`: 37 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: researchQuestion, sourceType, query, period, targetSize, approach, codingMode, corpusItems, corpusItems[].id, corpusItems[].title, corpusItems[].source, corpusItems[].text, corpusItems[].digest, corpusItems[].provenance, categories.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `trace_path`: 37 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graph, graph.direction, graph.nodes, graph.nodes[].id, graph.nodes[].label, graph.nodes[].group, graph.nodes[].shape, graph.edges, graph.edges[].from, graph.edges[].to, graph.edges[].label, graph.edges[].style, graph.edges[].direction, graph.edges[].curve, from, to.
  - Minor: String arguments with no constraint or example: graph.nodes[].label, graph.nodes[].group, graph.edges[].label, from, to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument graph.edges[].curve is unclear.
- `diagram_list_capabilities`: 38 / 100
  - Major: The description only restates the name (4 words).
  - Major: The description is too short (4 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `list_capabilities`: 38 / 100
  - Major: The description only restates the name (4 words).
  - Major: The description is too short (4 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `submit_diagram_feedback`: 38 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: diagramId, expectedRevision, text.
  - Minor: String arguments with no constraint or example: diagramId.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: diagramId. Name the tool or the place that returns it, or models look it up first.
- `sync_pptx_document`: 38 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: documentId, revision, name.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: documentId. Name the tool or the place that returns it, or models look it up first.
- `export_deck`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: deckId, revision, plan, slideId, feedback, data, selectedSlides.
  - Minor: String arguments with no constraint or example: deckId, slideId, feedback, data.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: deckId. Name the tool or the place that returns it, or models look it up first.
- `get_methodiq_tool_guide`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: toolId.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `list_methodiq_tools`: 39 / 100
  - Major: Arguments without a description: category, functionName.
  - Minor: String arguments with no constraint or example: category, functionName.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `researchpilot_read_handoff_evidence`: 39 / 100
  - Major: Arguments without a description: handoff, sourceId, offset.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: sourceId. Name the tool or the place that returns it, or models look it up first.
- `researchpilot_handoff_context`: 40 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: handoff.
  - Minor: Says nothing about what it returns.
- `researchpilot_validate_specialist_receipt`: 40 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: request, receipt.
  - Minor: Says nothing about what it returns.
  - Minor: The name is long (41 characters).
- `analysis_run_classroom_demo`: 41 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: kind, method.
- `gwriter_get_gwriter_edit_result`: 41 / 100
  - Major: Arguments without a description: editSessionId.
  - Minor: String arguments with no constraint or example: editSessionId.
  - Minor: Required identifiers whose description does not say where the value comes from: editSessionId. Name the tool or the place that returns it, or models look it up first.
- `approve_report_chart`: 42 / 100
  - Major: Arguments without a description: chartId, revision, confirmation, input, packet, packet.version, packet.packetId, packet.source, packet.source.label, packet.source.artifactSha256, packet.table, packet.table.rows, packet.table.category, packet.table.values, packet.semantics, packet.semantics.unit, packet.semantics.denominator, packet.semantics.denominator.description, packet.semantics.baseN, packet.semantics.weighted, packet.semantics.weightDescription, packet.semantics.multipleResponse, packet.semantics.missingRule, packet.evidence, packet.evidence[].id, packet.evidence[].class, packet.evidence[].status, packet.evidence[].producer, packet.evidence[].tableDigest, spec, spec.version, spec.profile, spec.type, spec.title, spec.evidenceIds, spec.output, selection, feedback, format, text, data, sheetName.
  - Minor: String arguments with no constraint or example: chartId, packet.table.category, packet.semantics.unit, packet.semantics.denominator.description, packet.semantics.weightDescription, packet.semantics.missingRule, packet.evidence[].id, packet.evidence[].producer, spec.type, feedback, format, text, data, sheetName.
  - Minor: The meaning of the boolean argument confirmation is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.weighted is unclear.
  - Minor: The meaning of the boolean argument packet.semantics.multipleResponse is unclear.
  - Minor: Required identifiers whose description does not say where the value comes from: chartId. Name the tool or the place that returns it, or models look it up first.
- `researchpilot_read_work_artifact`: 42 / 100
  - Major: Arguments without a description: projectId, artifactId.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: projectId, artifactId. Name the tool or the place that returns it, or models look it up first.
- `researchpilot_research_registry`: 42 / 100
  - Major: Arguments without a description: kind, query, limit.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `researchpilot_handoff_summary`: 44 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: handoff.
- `surveyviz_build_comparison_chart_spec`: 44 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: packet.ok, packet.table_id, packet.source_table_id, packet.canonical_table_id, packet.locale, packet.display, packet.display.title, packet.display.unit_label, packet.display.case_count_label, packet.columns, packet.columns[].column_id, packet.columns[].label, packet.columns[].value_type, packet.row_groups, packet.row_groups[].group_id, packet.row_groups[].label, packet.row_groups[].rows, packet.row_groups[].rows[].row_id, packet.row_groups[].rows[].label, packet.row_groups[].rows[].base_n, packet.row_groups[].rows[].values, rows[].metric, locale, title, subtitle.
  - Minor: String arguments with no constraint or example: packet.table_id, packet.source_table_id, packet.canonical_table_id, packet.locale, packet.display.title, packet.display.unit_label, packet.display.case_count_label, packet.columns[].column_id, packet.columns[].label, packet.columns[].value_type, packet.row_groups[].group_id, packet.row_groups[].label, packet.row_groups[].rows[].row_id, packet.row_groups[].rows[].label, title, subtitle.
  - Minor: No `required` list, so every argument is optional.
- `researchpilot_list_work_artifacts`: 45 / 100
  - Major: Arguments without a description: projectId.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: projectId. Name the tool or the place that returns it, or models look it up first.
- `researchpilot_get_project_context`: 47 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: projectId.
  - Minor: Required identifiers whose description does not say where the value comes from: projectId. Name the tool or the place that returns it, or models look it up first.
- `analysis_get_classroom_demo_catalog`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `get_pptx_workspace_status`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `get_renderer_status`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `list_pptx_documents`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `researchpilot_build_collection_recipe`: 49 / 100
  - Major: Arguments without a description: goal, sourceType, query, period, targetSize.
  - Minor: The description mentions none of its 3 or more arguments.
- `save_pptx_document`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: name.
- `analysis_get_special_analysis_guide`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `list_diagram_templates`: 50 / 100
  - Major: The description only restates the name (7 words).
  - Major: The description is too short (7 words).
  - Major: Says nothing about when to use it, or when not to.
- `surveyviz_list_capabilities`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `render_methodiq_tool_directory`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `researchpilot_capabilities`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `researchpilot_record_routing_feedback`: 52 / 100
  - Major: Arguments without a description: projectId, taskFamily, capabilityId, toolName, outcome, feedback.
  - Minor: Says nothing about what it returns.
- `researchpilot_update_user_preferences`: 52 / 100
  - Major: Arguments without a description: answerStyle, resultFirst, writingVoice, avoidTextbookStyle, preferEvidenceBeforeAdvice, preferredOutput, discipline, targetGenre, citationStyle.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `surveyviz_build_overall_chart_spec`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: packet.ok, packet.table_id, packet.source_table_id, packet.canonical_table_id, packet.locale, packet.display, packet.display.title, packet.display.unit_label, packet.display.case_count_label, packet.columns, packet.columns[].column_id, packet.columns[].label, packet.columns[].value_type, packet.row_groups, packet.row_groups[].group_id, packet.row_groups[].label, packet.row_groups[].rows, packet.row_groups[].rows[].row_id, packet.row_groups[].rows[].label, packet.row_groups[].rows[].base_n, packet.row_groups[].rows[].values, rows[].metric, locale, title, subtitle.
  - Minor: String arguments with no constraint or example: packet.table_id, packet.source_table_id, packet.canonical_table_id, packet.locale, packet.display.title, packet.display.unit_label, packet.display.case_count_label, packet.columns[].column_id, packet.columns[].label, packet.columns[].value_type, packet.row_groups[].group_id, packet.row_groups[].label, packet.row_groups[].rows[].row_id, packet.row_groups[].rows[].label, title, subtitle.
  - Minor: No `required` list, so every argument is optional.
- `gwriter_start_gwriter_edit`: 57 / 100
  - Minor: String arguments with no constraint or example: title.
  - Minor: Says nothing about what it returns.
- `researchpilot_get_user_memory`: 57 / 100
  - Minor: Says nothing about what it returns.
- `researchpilot_open_workspace`: 57 / 100
  - Minor: Says nothing about what it returns.
- `researchpilot_save_work_artifact`: 57 / 100
  - Major: Arguments without a description: projectId, contextDigest, kind, title, text, sourceRefs.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: projectId. Name the tool or the place that returns it, or models look it up first.
- `researchpilot_list_projects`: 65 / 100
  - Minor: Says nothing about what it returns.
- `researchpilot_get_profile`: 67 / 100
  - Major: Says nothing about when to use it, or when not to.

Is your server listed here and you would rather it were not? Email support@forecall.dev, and we will take it off within 7 days.

[All scored servers](https://forecall.dev/en/servers)
