Execute Any Procore API Call
procore_api_callExecute any Procore REST API call directly. Resolve the endpoint details, provide the method, path, and parameters, then run GET, POST, PUT, PATCH, or DELETE operations, with real data changes—verify IDs before writing.
Instructions
Executes any Procore REST API call. This is the only tool here that reaches Procore and the only one that can change data — resolve the exact method, path, and parameters with procore_get_endpoint_details first. WRITES ARE REAL: DELETE permanently removes the record, POST creates one, and PATCH/PUT overwrite fields, so confirm the target id before calling and prefer a GET to verify it exists. Handles OAuth from the saved tokens, substitutes {placeholders} from path_params, and rewrites double underscores in query keys into brackets (filters__status becomes filters[status]). company_id and project_id fall back to whatever procore_set_config holds when the path needs them and you omit them. Returns the parsed JSON response together with pagination and rate-limit metadata. Failures come back as an error payload carrying the HTTP status — commonly 401 when the token has expired, 403 without tool permission, 404 when an id does not resolve, 422 when the body fails validation, and 429 when the rate limit is exhausted. Step 4 of the workflow; this reaches every Procore endpoint, including any not exposed as a dedicated tool.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON request body for POST/PUT/PATCH. Use the exact field names and nesting from procore_get_endpoint_details; ignored on GET and DELETE. | |
| page | No | 1-indexed page number for paginated endpoints (default 1) | |
| path | Yes | API path with placeholders left intact, e.g. '/rest/v1.0/projects/{project_id}/rfis'. Supply the values via path_params rather than interpolating them here. | |
| method | Yes | HTTP method for the endpoint, exactly as reported by the discovery tools | |
| per_page | No | Items per page, 1-100 (default 100) | |
| company_id | No | Overrides the Procore-Company-Id header for this call only; defaults to the configured company | |
| path_params | No | Values substituted into the path's {placeholders}, e.g. { project_id: '12345' }. Required whenever the path contains a placeholder that procore_set_config does not already supply. | |
| query_params | No | Query-string parameters. Use double underscores for Procore's bracket syntax: filters__status becomes filters[status]. |