Skip to content

v2.0.0 — 7-tool default surface and verb_noun naming

Latest

Choose a tag to compare

@TylerIlunga TylerIlunga released this 21 Aug 10:59
e3c9da2

Breaking changes

  • The default tool surface is now the 7 discovery tools. Set PROCORE_TOOL_MODE=all to restore the previous per-endpoint surface.
  • 836 generated tool names changed. data/tool-renames.json maps every old name to its current one.

Coverage is identical in both modes — procore_api_call reaches every Procore endpoint either way. Only the size of the advertised tool list differs.

Why the default changed

Registering one tool per endpoint emits roughly 4.7 MB (~1.2M tokens) of tool definitions, which exceeds every current model's context window. The old default wasn't merely inefficient — it couldn't work in a real client.

Filtering can't rescue it: the most aggressive structural filter (non-deprecated + non-peripheral + non-bulk + shallowest paths) still leaves 897 tools, because the Procore API genuinely has ~3,000 operations. So the fix is the lean mode that already existed, promoted to the default.

Consistent verb_noun naming

Procore's operation titles reach for whatever verb the doc author preferred — "List RFIs", "Show RFI", "Get All Equipment", "Retrieve Note" — so the same action wore six different verbs. Read synonyms now resolve to list_ or get_, chosen from the endpoint's actual response shape rather than from its prose, so the name is correct by construction and agrees with the description.

This also repaired 617 tools whose verb actively contradicted what they return (show_rfiget_rfi, get_all_equipment_categories_companylist_equipment_categories_company).

Verbs naming a distinct action — reorder, recycle, restore, sync, send, close, assign, and add/remove in their association sense — are deliberately preserved, since flattening them onto a CRUD prefix would reintroduce the name-vs-semantics bugs fixed in v1.3.0–v1.6.0.

Distinct leading verbs dropped 97 → 79; the five canonical CRUD verbs now cover 86% of the surface.

Also in this release

  • The 7 discovery tools were rewritten against all six tool-quality dimensions — including that the four discovery tools and procore_get_config read only the bundled catalog, so they make no Procore request, need no credentials, and cost no rate limit.
  • procore_api_call now carries destructiveHint: true, since a DELETE through it is genuinely reachable.
  • procore_set_config's key is a strict enum matching the handler's own allowlist.
  • Endpoints differing only by a narrowing parent id now get a for_<parent> suffix instead of an opaque _2. No numeric-suffix names remain.