# Dotsy (ai.dotsy/mcp): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/ai.dotsy%2Fmcp/versions/latest)
- Connected to: https://mcp.dotsy.ai/mcp
- Homepage: https://dotsy.ai/
- Scoring rules: v2
- Tools: 119
- Average: 53.6 / 100 (Cloudy)
- Near-identical pairs: 0

This page shows how Dotsy (ai.dotsy/mcp)'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: 119 tools. Above 40, models choose less accurately.
- Minor: The server's instructions are 2816 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

- `submit_feedback`: 28 / 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: impactPercent, title, description, suggestedImprovement, findings, findings[].category, findings[].impactPercent, findings[].title, findings[].description, findings[].suggestedImprovement, findings[].operationId.
  - Minor: String arguments with no constraint or example: title, description, suggestedImprovement, findings[].title, findings[].description, findings[].suggestedImprovement, findings[].operationId.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `decline_suggestion`: 35 / 100
  - Major: The description only restates the name (8 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: id, reason.
  - Minor: String arguments with no constraint or example: reason.
  - 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: id. Name the tool or the place that returns it, or models look it up first.
- `delete_menu_item`: 36 / 100
  - Major: The description only restates the name (9 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: menu, id.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `delete_route`: 36 / 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.
  - Minor: Arguments without a description: path.
  - Minor: String arguments with no constraint or example: path.
  - Minor: Says nothing about what it returns.
- `get_route`: 36 / 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.
  - Minor: Arguments without a description: path.
  - Minor: String arguments with no constraint or example: path.
  - Minor: Says nothing about what it returns.
- `reply_to_report`: 36 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: id, text, requestIds, attachments[].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: id. Name the tool or the place that returns it, or models look it up first.
- `batch_patch_content`: 37 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: items, items[].key, items[].ops, items[].ops[].op, items[].ops[].selector, items[].ops[].selectors, items[].ops[].tag, items[].ops[].attrs, items[].ops[].target, items[].ops[].position, items[].ops[].name, items[].ops[].value, items[].ops[].find, items[].ops[].replace, items[].ops[].expect, items[].ops[].anchored.
  - Minor: String arguments with no constraint or example: items[].ops[].value, items[].ops[].replace.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: The meaning of the boolean argument items[].ops[].anchored is unclear.
  - Minor: Says nothing about what it returns.
- `patch_content`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: key, ops, ops[].op, ops[].selector, ops[].selectors, ops[].tag, ops[].attrs, ops[].target, ops[].position, ops[].name, ops[].value, ops[].find, ops[].replace, ops[].expect, ops[].anchored.
  - Minor: String arguments with no constraint or example: key, ops[].value, ops[].replace.
  - Minor: The meaning of the boolean argument ops[].anchored is unclear.
  - Minor: Says nothing about what it returns.
- `get_report`: 40 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: cursor.
  - Minor: String arguments with no constraint or example: cursor.
  - Minor: Says nothing about what it returns.
- `get_site_manifest`: 40 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: mode, routes, limit, cursor.
  - Minor: String arguments with no constraint or example: cursor.
  - Minor: The meaning of the boolean argument routes is unclear.
  - Minor: Says nothing about what it returns.
- `delete_site`: 41 / 100
  - Major: The description only restates the name (7 words).
  - Major: The description is too short (7 words).
  - Minor: Arguments without a description: confirmSlug.
  - Minor: String arguments with no constraint or example: confirmSlug.
  - Minor: Says nothing about what it returns.
- `add_idea`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: title, description, board, status, area, source, externalRef, externalRef.system, externalRef.id, externalRef.url, requester, requester.email, requester.name, asSuggestion.
  - Minor: String arguments with no constraint or example: board, status, area, externalRef.system, externalRef.id, requester.name.
  - Minor: The meaning of the boolean argument asSuggestion is unclear.
  - Minor: Says nothing about what it returns.
- `approve_suggestion`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: id, title, slug, body, status.
  - Minor: String arguments with no constraint or example: title, slug, body, status.
  - 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: id. Name the tool or the place that returns it, or models look it up first.
- `bulk_put_content`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: title, content, content[].key, content[].body, content[].contentType.
  - Minor: String arguments with no constraint or example: title, content[].body, content[].contentType.
  - Minor: Says nothing about what it returns.
- `remove_custom_domain`: 42 / 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.
  - Minor: Says nothing about what it returns.
- `publish_site`: 43 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: feedback.impactPercent, feedback.title, feedback.description, feedback.suggestedImprovement, feedback.findings, feedback.findings[].category, feedback.findings[].impactPercent, feedback.findings[].title, feedback.findings[].description, feedback.findings[].suggestedImprovement, feedback.findings[].operationId.
  - Minor: String arguments with no constraint or example: feedback.title, feedback.description, feedback.suggestedImprovement, feedback.findings[].title, feedback.findings[].description, feedback.findings[].suggestedImprovement, feedback.findings[].operationId.
  - Minor: Says nothing about what it returns.
- `put_content`: 43 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: body, contentType.
  - Minor: String arguments with no constraint or example: body.
  - Minor: Says nothing about what it returns.
- `get_custom_domain_connect`: 44 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `list_form_submissions`: 44 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: limit, cursor, fromMs, toMs.
  - Minor: String arguments with no constraint or example: cursor.
  - Minor: Says nothing about what it returns.
- `list_assets`: 45 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: limit, cursor.
  - Minor: String arguments with no constraint or example: cursor.
  - Minor: Says nothing about what it returns.
- `reapply_custom_domain_oauth`: 45 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `reorder_menu`: 45 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: menu, orderedIds, ifMatch.
  - Minor: String arguments with no constraint or example: ifMatch.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: orderedIds. Name the tool or the place that returns it, or models look it up first.
- `decompose_analyze`: 46 / 100
  - Major: The description is too short (3 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: sampleLimit, profileId.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: The description says the tool is deprecated. Name the replacement, and consider taking the tool out of tools/list: models avoid it when asked for what it does.
- `list_ideas`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: q, board.
  - Minor: String arguments with no constraint or example: board.
  - Minor: Says nothing about what it returns.
- `refresh_custom_domain`: 46 / 100
  - Major: The description is too short (7 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `remove_votes`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: collection, item, voterId.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: voterId. Name the tool or the place that returns it, or models look it up first.
- `stage_content_chunk`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: stagingId, seq, body, contentType, finalize.
  - Minor: String arguments with no constraint or example: contentType.
  - Minor: The meaning of the boolean argument finalize is unclear.
  - Minor: Says nothing about what it returns.
- `start_site`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: title, purpose.
  - Minor: The description mentions none of its 3 or more arguments.
- `apply_changeset`: 47 / 100
  - Major: Arguments without a description: writes, writes[].key, writes[].body, writes[].bodyStaging, writes[].contentType, writes[].ifMatch, writes[].route, writes[].route.path, writes[].route.input, writes[].route.input.title, writes[].route.input.vars, writes[].route.input.purpose, writes[].route.input.experiment, writes[].menuItems, writes[].menuItems[].sort, writes[].menuItems[].parent, writes[].menuItems[].label, writes[].menuItems[].kind, writes[].menuItems[].ref, writes[].menuItems[].newTab, writes[].menuItems[].attrs, writes[].menuItems[].data, writes[].menuItems[].html, writes[].menuItems[].childShell, writes[].menuItems[].childTemplate, writes[].menuItems[].menu, writes[].menuItems[].id, deletes[].key, deletes[].ifMatch, message.
  - Minor: String arguments with no constraint or example: writes[].body, writes[].contentType, writes[].ifMatch, writes[].menuItems[].ref, writes[].menuItems[].html, writes[].menuItems[].childTemplate.
  - Minor: The meaning of the boolean argument writes[].menuItems[].newTab is unclear.
  - Minor: Says nothing about what it returns.
- `discard_drafts`: 47 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: key, keys, routes, menus.
  - Minor: The meaning of the boolean argument menus is unclear.
  - Minor: Says nothing about what it returns.
- `get_account_context`: 47 / 100
  - Minor: Says nothing about what it returns.
- `list_suggestions`: 47 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `merge_suggestion`: 47 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: id, itemKey.
  - 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: id. Name the tool or the place that returns it, or models look it up first.
- `structure_site_analyze`: 47 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: sampleLimit, profileId.
  - Minor: Says nothing about what it returns.
- `find_replace`: 48 / 100
  - Major: Arguments without a description: find, replace, keys, expectPerKey.
  - Minor: String arguments with no constraint or example: replace.
  - Minor: Says nothing about what it returns.
- `get_structure_result`: 48 / 100
  - Major: The description only restates the name (8 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
- `list_custom_domains`: 48 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `list_notifications`: 48 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `put_goals`: 48 / 100
  - Major: Arguments without a description: goals, goals[].id, goals[].label, goals[].type, goals[].id, goals[].label, goals[].type, goals[].formId, goals[].id, goals[].label, goals[].type.
  - Minor: String arguments with no constraint or example: goals[].type, goals[].type, goals[].type.
  - Minor: Says nothing about what it returns.
- `put_menu_doc`: 48 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: doc.
  - Minor: Says nothing about what it returns.
- `report_bug`: 48 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: title, expected, steps, severity, tool, operationId, requestIds, attachments[].id.
  - Minor: String arguments with no constraint or example: tool, operationId.
  - Minor: The description mentions none of its 3 or more arguments.
- `support_inbox`: 48 / 100
  - Major: Arguments without a description: action, status, kind, source, priority, cursor, id, text, ids, title, summary, duplicateOf, links, links.roadmap, links.changelog.
  - Minor: String arguments with no constraint or example: status, kind, source, priority, cursor, links.roadmap, links.changelog.
  - Minor: Says nothing about what it returns.
- `delete_draft_test`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: experimentId.
  - 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: experimentId. Name the tool or the place that returns it, or models look it up first.
- `get_draft_status`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `preview_page`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: path.
  - Minor: String arguments with no constraint or example: path.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `put_route`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: path, title, vars, purpose, experiment.
  - Minor: String arguments with no constraint or example: path.
  - Minor: Says nothing about what it returns.
- `delete_content`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: key.
  - Minor: String arguments with no constraint or example: key.
  - Minor: Says nothing about what it returns.
- `get_plan`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `search_content`: 50 / 100
  - Minor: Arguments without a description: q, limit.
  - Minor: String arguments with no constraint or example: q.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `set_experiment_note`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: experimentId.
  - 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: experimentId. Name the tool or the place that returns it, or models look it up first.
- `start_test`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: path, goalId, source, weights, name, hypothesis.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: goalId. Name the tool or the place that returns it, or models look it up first.
- `add_custom_domain`: 51 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `list_skills`: 51 / 100
  - Minor: Says nothing about what it returns.
- `patch_route`: 51 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: path, title, vars, purpose, experiment.
  - Minor: String arguments with no constraint or example: path.
  - Minor: Says nothing about what it returns.
- `list_goals`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `mark_notifications_read`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `revert_change`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `delete_asset`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `get_board`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `import_site_from_url`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: sourceUrl, pages[].url, pages[].key, pages[].mode, segments[].mode, segments[].maxPages, onSlugTaken.
  - Minor: String arguments with no constraint or example: pages[].url, pages[].key.
  - Minor: The description mentions none of its 3 or more arguments.
- `list_votes`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `promote_experiment`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: experimentId, loserDisposition.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `wait_for_custom_domain`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `adapt_site_revert`: 54 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `claim_site`: 54 / 100
  - Minor: Says nothing about what it returns.
- `estimate_test`: 54 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `get_content`: 54 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: key, selector, published.
  - Minor: String arguments with no constraint or example: key, selector.
  - Minor: The meaning of the boolean argument published is unclear.
- `get_menu`: 54 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: menu.
  - Minor: Says nothing about what it returns.
- `get_structure_status`: 54 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `new_post_template`: 54 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `set_item_status`: 54 / 100
  - Minor: Says nothing about what it returns.
- `set_primary_custom_domain`: 54 / 100
  - Minor: Says nothing about what it returns.
- `adapt_site_apply`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `get_analytics`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `get_site`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `put_menu_item`: 55 / 100
  - Major: Arguments without a description: menu, id, sort, parent, label, kind, ref, newTab, attrs, data, html, childShell, childTemplate.
  - Minor: String arguments with no constraint or example: ref, html, childTemplate.
  - Minor: The meaning of the boolean argument newTab is unclear.
  - Minor: Says nothing about what it returns.
- `review_changes`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `get_menu_doc`: 56 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `list_versions`: 56 / 100
  - Minor: Says nothing about what it returns.
- `get_adapt_status`: 57 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `restore_version`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `get_activity`: 58 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `get_skill`: 58 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `structure_site_apply`: 58 / 100
  - Minor: Arguments without a description: scope, overrides, overrides.forceSkipKeys.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `update_brief`: 58 / 100
  - Minor: Arguments without a description: rules[].id, rules[].card, rules[].text, rules[].level, rules[].locked, rules[].check.
  - Minor: The meaning of the boolean argument rules[].locked is unclear.
  - Minor: Says nothing about what it returns.
- `verify_page`: 58 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `update_collection`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `get_custom_code`: 60 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `infer_collection_schema`: 60 / 100
  - Major: Says nothing about when to use it, or when not to.
- `preflight_site`: 60 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `reindex_collection`: 60 / 100
  - Minor: The description mentions none of its 3 or more arguments.
- `undo_publish`: 60 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `detach_section`: 61 / 100
  - Minor: Says nothing about what it returns.
- `get_asset`: 61 / 100
  - Minor: Says nothing about what it returns.
- `share_section`: 61 / 100
  - Minor: Says nothing about what it returns.
- `get_form_submission`: 63 / 100
  - 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: id. Name the tool or the place that returns it, or models look it up first.
- `create_site`: 64 / 100
  - Major: Arguments without a description: slug, title, keyConvention, purpose, onSlugTaken.
  - Minor: Says nothing about what it returns.
- `list_collections`: 64 / 100
  - Major: Says nothing about when to use it, or when not to.
- `list_my_sites`: 64 / 100
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `get_collection_schema`: 65 / 100
  - Minor: Says nothing about what it returns.
- `get_site_outline`: 65 / 100
  - Minor: Says nothing about what it returns.
- `put_post`: 66 / 100
  - Major: Arguments without a description: key, meta, meta.date, meta.dateDisplay, meta.excerpt, meta.tags, meta.author, meta.image, meta.url, meta.visibleAt, meta.collections, meta.custom, body, head.
  - Minor: String arguments with no constraint or example: key, meta.date, meta.dateDisplay, meta.excerpt, meta.author, meta.image, meta.url, body.
- `adapt_site_analyze`: 67 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: options.
  - Minor: The description mentions none of its 3 or more arguments.
- `list_content`: 67 / 100
  - Minor: Says nothing about what it returns.
- `rename_content`: 67 / 100
  - Minor: Says nothing about what it returns.
- `set_analytics_provider`: 67 / 100
  - Minor: Arguments without a description: provider.
  - Minor: Says nothing about what it returns.
- `start_edit_session`: 67 / 100
  - Minor: Arguments without a description: path.
  - Minor: String arguments with no constraint or example: path.
- `edit_page`: 69 / 100
  - Minor: String arguments with no constraint or example: site, path.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `inspect_collection`: 69 / 100
  - Minor: Says nothing about what it returns.
- `update_site`: 69 / 100
  - Minor: Arguments without a description: title, keyConvention.
  - Minor: Says nothing about what it returns.
- `bulk_put_assets`: 70 / 100
  - Minor: Arguments without a description: items, items[].bodyBase64, items[].bodyText, items[].contentType, items[].importFromUrl, items[].intent.
  - Minor: String arguments with no constraint or example: items[].bodyBase64, items[].bodyText.
- `get_site_build_progress`: 70 / 100
  - Minor: String arguments with no constraint or example: site.
  - Minor: Says nothing about what it returns.
- `optimize_assets`: 70 / 100
  - Minor: Says nothing about what it returns.
- `rename_site`: 71 / 100
  - Minor: Says nothing about what it returns.
- `graduate_site`: 72 / 100
- `put_collection_schema`: 75 / 100
- `rename_page`: 80 / 100
- `list_pages`: 81 / 100
  - Minor: String arguments with no constraint or example: site.
  - Minor: Says nothing about what it returns.
- `set_custom_code`: 81 / 100
  - Minor: Says nothing about what it returns.

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)
