Skip to content

MCP Tool Consolidation — Removed Shim Tools

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 shimCanonical replacementNotes
run_projectrun(scope='project', mode='sync')Project-level synchronous execution
run_modelrun(scope='model', mode='sync')Model-level synchronous execution
queue_runrun(scope='project', mode='async') or run(scope='model', mode='async')Background async execution
list_project_templatestemplates:// (MCP resource)Read the resource to list available templates
list_skillsskills:// (MCP resource)Read the resource to list available skills
get_skill (old shim)skill://{name} (MCP resource) or the new get_skill compatibility bridgeOld shim read from a different code path; new get_skill (bt-i8gvy.1) is a first-class tool backed by the canonical registry
list_gsheet_presetsformat_gsheet(spec={"kind":"list_presets"})Returns the same presets list via the unified format tool

// Before (removed)
{"name": "run_project", "arguments": {"project_name": "forecasts"}}
// After (canonical)
{"name": "run", "arguments": {"scope": "project", "mode": "sync", "project_name": "forecasts"}}
// 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"}}
// 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.

// Before (removed)
{"name": "list_skills"}
// After (canonical MCP resource)
Read resource: skills://
// Before (removed old shim)
{"name": "get_skill", "arguments": {"name": "create-saas-forecast"}}
// After — canonical MCP resource (preferred for full MCP clients)
Read resource: skill://create-saas-forecast
// After — new get_skill compatibility bridge (for Claude.ai and API connector hosts)
{"name": "get_skill", "arguments": {"name": "create-saas-forecast", "include_template": true}}

Note: A new get_skill tool (bt-i8gvy.1) was added back to the MCP surface as a compatibility bridge for hosts that cannot autonomously read MCP resources (Claude.ai’s OAuth connector, Anthropic Messages API connector). It reads from the same canonical registry as skill://{name}. Full MCP clients should still prefer reading the resource directly. See the get_skill reference for details.

// Before (removed)
{"name": "list_project_templates"}
// After (canonical MCP resource)
Read resource: templates://
// Before (removed)
{"name": "list_gsheet_presets"}
// After (canonical)
{"name": "format_gsheet", "arguments": {"project_name": "any", "spec": {"kind": "list_presets"}}}
{
"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.

{
"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"
}
}
}
{
"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.

{
"name": "modify_gsheet_structure",
"arguments": {
"project_name": "forecasts",
"spec": {
"action": "ensure_tab",
"spreadsheet_id": "1aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789ABCDEFG",
"tab_title": "Board Pack"
}
}
}

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.