Mutating tool "create_record" declares neither readOnlyHint nor destructiveHint — clients cannot gate it for confirmation.
Mutating tool "update_record" declares neither readOnlyHint nor destructiveHint — clients cannot gate it for confirmation.
Mutating tool "delete_record" declares neither readOnlyHint nor destructiveHint — clients cannot gate it for confirmation.
Mutating tool "create_entry" declares neither readOnlyHint nor destructiveHint — clients cannot gate it for confirmation.
Mutating tool "update_entry" declares neither readOnlyHint nor destructiveHint — clients cannot gate it for confirmation.
Mutating tool "delete_entry" declares neither readOnlyHint nor destructiveHint — clients cannot gate it for confirmation.
Description is 1601 chars (maximum 1500) — move detail into parameter descriptions.
Description is 7 chars (minimum 20) — too short to disambiguate.
Update.
Description is 12 chars (minimum 20) — too short to disambiguate.
Fetch items.
Description contains 3 client-directive sentence(s) (~34 tokens) about rendering or other tools, duplicated across multiple tools — move shared guidance to one server-level place.
IMPORTANT: RENDER RESULTS IMMEDIATELY. Always display the map widget and format every widget link as markdown. Do not call get_widget after this tool returns.
Description contains 3 client-directive sentence(s) (~34 tokens) about rendering or other tools, duplicated across multiple tools — move shared guidance to one server-level place.
IMPORTANT: RENDER RESULTS IMMEDIATELY. Always display the map widget and format every widget link as markdown. Do not call get_widget after this tool returns.
Description contains 3 client-directive sentence(s) (~34 tokens) about rendering or other tools, duplicated across multiple tools — move shared guidance to one server-level place.
IMPORTANT: RENDER RESULTS IMMEDIATELY. Always display the map widget and format every widget link as markdown. Do not call get_widget after this tool returns.
Same parameter spelled 2 ways across tools — pick one spelling.
"widget_id" (get_widget, get_widget_images, get_widget_reviews, create_record) vs "widgetId" (get_record)
CRUD mirror over "record": 5 tools spanning 4 verb classes — one-tool-per-endpoint shape. Consider a workflow-shaped consolidation.
create_record, get_record, list_records, update_record, delete_record
CRUD mirror over "entry": 4 tools spanning 4 verb classes — one-tool-per-endpoint shape. Consider a workflow-shaped consolidation.
create_entry, get_entry, update_entry, delete_entry
3 tools open with the same 15 words (~45 tokens duplicated across the surface) — move the shared block to one place and lead with what each tool does.
search_widgets, search_widgets_by_text, search_widgets_nearby — "important render results immediately always display the map widget and format every widget link as…"
Parameter "sort" enumerates its values in prose but declares no enum.
Sort order. One of: relevance, price, rating.
"search_widgets_by_text" implies list/search output but has no limit or pagination parameter — result size is unbounded.
"search_widgets_nearby" implies list/search output but has no limit or pagination parameter — result size is unbounded.
"list_records" implies list/search output but has no limit or pagination parameter — result size is unbounded.
"list_entries" implies list/search output but has no limit or pagination parameter — result size is unbounded.
3 tools share the name prefix "search_widgets" — likely one tool with include-flags or a mode parameter.
search_widgets, search_widgets_by_text, search_widgets_nearby
3 tools share the name prefix "get_widget" — likely one tool with include-flags or a mode parameter.
get_widget, get_widget_images, get_widget_reviews
3 tools have overlapping descriptions (trigram Jaccard up to 0.81) — consolidation candidates.
search_widgets, search_widgets_by_text, search_widgets_nearby
Tool "exportData" is camelCase while the dominant convention is snake_case (19 tools).
Tool "fetchAllItems" is camelCase while the dominant convention is snake_case (19 tools).
Input schema nests 4 levels deep (budget 3).
Bare "type: object" with no properties at /inputSchema — the model has nothing to go on.
Untyped array at /inputSchema/properties/ids — declare "items".
"additionalProperties: true" at /inputSchema — accepts arbitrary keys silently.
Parameter "name" has no description.
Parameter "widgetId" has no description.
Parameter "ids" has no description.
Server exposes 21 tools (warn threshold 20 exceeded). Consider consolidating into fewer intent-shaped tools.