MCP Tool Consolidation — Removed Shim Tools
Summary
Section titled “Summary”Seven compatibility shim tools have been removed from the MCP catalog. These tools were deprecated wrappers around canonical replacements that have been stable since the unified run tool and MCP resource system launched. Removing them reduces search result noise when Claude selects tools.
Before: 76 registered tools (including 7 shims) After: 69 registered tools (shims removed; all capabilities preserved)
No operational capability was removed. Every workflow supported by a shim is fully supported by its canonical replacement.
Removed tools and their replacements
Section titled “Removed tools and their replacements”| Removed shim | Canonical replacement | Notes |
|---|---|---|
run_project | run(scope='project', mode='sync') | Project-level synchronous execution |
run_model | run(scope='model', mode='sync') | Model-level synchronous execution |
queue_run | run(scope='project', mode='async') or run(scope='model', mode='async') | Background async execution |
list_project_templates | templates:// (MCP resource) | Read the resource to list available templates |
list_skills | skills:// (MCP resource) | Read the resource to list available skills |
get_skill | skill://{name} (MCP resource) | Read the resource URI to retrieve a skill |
list_gsheet_presets | format_gsheet(spec={"kind":"list_presets"}) | Returns the same presets list via the unified format tool |
Migration examples
Section titled “Migration examples”Synchronous project run
Section titled “Synchronous project run”// Before (removed){"name": "run_project", "arguments": {"project_name": "forecasts"}}
// After (canonical){"name": "run", "arguments": {"scope": "project", "mode": "sync", "project_name": "forecasts"}}Synchronous model run
Section titled “Synchronous model run”// Before (removed){"name": "run_model", "arguments": {"project_name": "forecasts", "model_name": "revenue"}}
// After (canonical){"name": "run", "arguments": {"scope": "model", "mode": "sync", "project_name": "forecasts", "model_name": "revenue"}}Async (background) run
Section titled “Async (background) run”// Before (removed){"name": "queue_run", "arguments": {"project_name": "forecasts", "branch": "main"}}
// After (canonical){"name": "run", "arguments": {"scope": "project", "mode": "async", "project_name": "forecasts", "branch": "main"}}Then poll get_run with the returned run_id until status reaches a terminal state.
List available skills
Section titled “List available skills”// Before (removed){"name": "list_skills"}
// After (canonical MCP resource)Read resource: skills://Get a specific skill
Section titled “Get a specific skill”// Before (removed){"name": "get_skill", "arguments": {"name": "create-saas-forecast"}}
// After (canonical MCP resource)Read resource: skill://create-saas-forecastList available templates
Section titled “List available templates”// Before (removed){"name": "list_project_templates"}
// After (canonical MCP resource)Read resource: templates://List GSheet formatting presets
Section titled “List GSheet formatting presets”// Before (removed){"name": "list_gsheet_presets"}
// After (canonical){"name": "format_gsheet", "arguments": {"project_name": "any", "spec": {"kind": "list_presets"}}}Replace a Google Sheet range
Section titled “Replace a Google Sheet range”{ "name": "write_gsheet", "arguments": { "project_name": "forecasts", "spec": { "mode": "replace", "run_id": "66666666-6666-6666-6666-666666666666", "output_name": "forecast.json", "source_name": "board_pack", "spreadsheet_id": "1aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789ABCDEFG", "cell_range": "Forecast!A1" } }}Use source_name from list_data_sources when writing back to a connected data source. Use spreadsheet_id when the target connected sheet must be addressed explicitly.
Append rows to a Google Sheet
Section titled “Append rows to a Google Sheet”{ "name": "write_gsheet", "arguments": { "project_name": "forecasts", "spec": { "mode": "append", "run_id": "66666666-6666-6666-6666-666666666666", "output_name": "actuals.csv", "source_name": "board_pack", "spreadsheet_id": "1aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789ABCDEFG", "sheet_name": "Actuals" } }}Format a Google Sheet range
Section titled “Format a Google Sheet range”{ "name": "format_gsheet", "arguments": { "project_name": "forecasts", "spec": { "kind": "range_format", "spreadsheet_id": "1aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789ABCDEFG", "sheet_id": 0, "start_row": 0, "end_row": 20, "start_col": 0, "end_col": 6, "number_format": "$#,##0", "number_format_type": "CURRENCY" } }}Call get_spreadsheet_metadata first when you need the numeric sheet_id; each tab reports both display title and numeric sheetId.
Ensure a worksheet exists
Section titled “Ensure a worksheet exists”{ "name": "modify_gsheet_structure", "arguments": { "project_name": "forecasts", "spec": { "action": "ensure_tab", "spreadsheet_id": "1aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789ABCDEFG", "tab_title": "Board Pack" } }}Rate limiting
Section titled “Rate limiting”The async execution rate limit bucket (queue_run, 100 requests/hour) is preserved under its original name for backward-compatible throttling. No existing quota configuration needs to change.