v1.2.0 — 2026-08-04 API spec + tool description rewrite
Highlights
Refreshed to the 2026-08-04 Procore API spec
The bundled spec was four months stale (2026-03-26). Rebuilding against the current one adds 519 net operations and repairs a surface that had drifted out of sync with live Procore.
| v1.1.0 | v1.2.0 | |
|---|---|---|
| Operations in catalog | 2,636 | 3,155 |
| Registered tools | 2,489 | 2,936 (2,929 generated + 7 meta) |
| Deprecated, flagged in-description | 0 | 166 (92 with sunset dates) |
| Dead tools that would 404 | 26 | 0 |
- Removed 26 tools whose endpoints no longer exist and returned 404 against live Procore — the entire Payments sub-surface (disbursements, beneficiaries, early pay programs, payment project configs),
app_installationswrites, andequipment_registerproject writes. - New modules registered: Assets, Materials Management, Estimating, Document Management, Document Markup.
- Taxonomy corrections: Equipment and Telematics moved
Core→Resource Management; Direct Costs →Project Level Direct Costs. These feed both discovery and description text, so stale tags meant wrong routing. - Deprecated endpoints stay registered but now carry their sunset date in the description and a
(Deprecated)title — nothing breaks before Procore's own removal dates. - The interactive
/oauth/*endpoints are no longer registered as tools (npm run authowns that flow) but remain reachable viaprocore_api_call.
Tool Definition Quality rewrite
Glama scored the server C on Tool Definition Quality. The score is 60% mean + 40% minimum, so the single worst-described tool carried 40% of the weight. Defect counts across all 2,929 generated tools:
| Defect | Before | After |
|---|---|---|
Ungrammatical <Module> records |
~1,144 | 0 |
| False "paginated JSON array" claims | 165 | 0 |
| DELETE repeating "cannot be undone" | 325 | 0 |
| Duplicate parameter keys | 33 | 0 |
POST update_* claiming "Creates a new" |
12 | 0 |
version: "unknown" |
4 | 0 |
- Descriptions name the real resource. They previously used the OAS category, so
show_rounding_configurationread "a specific Field Productivity records" anddelete_incident_alert_recipientclaimed to delete "Incidents". The resource is now derived from the operation summary. - Pagination follows the response schema. The old heuristic matched any path ending in a lowercase segment, so 165 singleton GETs advertised a paginated array.
returnsCollectionis now computed from the OAS 2xx schema and gates both the description and thepage/per_pageinput schema — the two can no longer disagree. - Every sentence has a distinct job — purpose, deprecation, usage and prerequisites, return shape and failure modes, required params, scope — with no restatement. Descriptions now name which parent ids to resolve first and which default from
procore_set_config. - Synthesized behavior text stays neutral when Procore's own prose already documents status codes, so generated text cannot contradict the documented contract.
Bug fixes
- 33 tools declared the same key twice (path + body, e.g.
company_idoncreate_permission_template). The body field silently overwrote the path parameter in the generated Zod shape, so agents saw the wrong description for a required path param. Parameters are now deduped with path precedence plus analsoBodyflag that still sends the value in the payload. - Appending a disambiguating suffix before truncating could discard the suffix and reintroduce the very name collision it was meant to break.
- PATCH is now marked idempotent — a partial update converges on the same state.
Internal
description-builder.ts was split into resource-label.ts, behavior-builder.ts and param-descriptions.ts to stay under the repo's 300-line file limit.
Tool count: 2,482 → 2,929 (plus 7 meta-tools)
Verification
npm run buildandnpm run validatepass; TypeScript compiles clean.- Server boots over real MCP with 2,936 tools: zero duplicate names, zero missing annotations or titles, zero names over 64 chars, zero descriptions under 150 chars.
Commits
f7420defeat: refresh to 2026-08-04 OAS and rebuild tool descriptions (#2)be847c6Updated Glama card badge
Full changelog: v1.1.0...v1.2.0