Show a compliance document.
/rest/v1.0/projects/{project_id}/work_order_contracts/{contract_id}/compliance_documents/{id}Inspect fields and contractA Procore MCP connector in development for projects, RFIs, submittals and commercial records. Explore planned coverage and join the waitlist.
Construction
MCP XYZ is building an independent Procore MCP connector for teams that want an AI assistant to work with authorised construction project records through the Model Context Protocol. Planned coverage includes projects, RFIs, submittals, daily logs and commercial records. Access is waitlist-based while provider approval and live acceptance are pending.
Use the catalogue to check the operations and fields your work needs. If an existing connector is missing a useful action, tell us about it when joining the waitlist. Your software’s permissions and API limits still apply.
Planned access to projects, company information, people and project directories, within the connected account’s authorised permissions.
Inspect documented operationsInspect documented requests for information, submittals, drawing records and daily logs before choosing a project workflow.
Inspect documented operationsExplore documented commercial records, including change events, commitments and prime contracts. Live acceptance is still pending.
Inspect documented operations“Find the open RFIs for this project.”
New access starts with the Procore waitlist. Tell us which assistant you use and the work you want to do. We’ll contact you about relevant access updates; joining does not create an account or guarantee an invitation date.
Procore is in development. Live use requires an authorised developer app, installation in the relevant company, applicable provider approval and live acceptance.
The implemented connection paths support a developer-managed service account or user OAuth. Acceptance must confirm the account, region, permissions and intended agent use. The detailed catalogue tracks documented coverage; these workflows have not passed live business testing.
Production use needs the applicable Procore app and use-case approval. Procore’s Agentic APIs programme is a separate approved pilot. Ordinary REST credentials do not establish access to that pilot or approval for every agent or bulk-data use.
External presigned transfers, large uploads, some environments and provider-side token revocation have outstanding limits. A documented file operation does not mean a complete file workflow has been verified.
Procore API usage guidelines
Procore Agentic APIs guidance
Documented coverage
3,294 documented business operations across retained API versions. Open a contract to inspect its parameters, fields, sources and unresolved behaviour. No provider request is made here.
3,294 operations match. Showing 1901–1920.
/rest/v1.0/projects/{project_id}/work_order_contracts/{contract_id}/compliance_documents/{id}Inspect fields and contract/rest/v1.0/projects/{project_id}/workflow_permanent_logsInspect fields and contract/rest/v1.0/projectsInspect fields and contract/rest/v1.1/projectsInspect fields and contract/rest/v1.0/punch_item_types/{id}Inspect fields and contract/rest/v1.0/punch_item_typesInspect fields and contract/rest/v1.0/punch_items/{id}/activitiesInspect fields and contract/rest/v1.0/punch_items/{id}Inspect fields and contract/rest/v1.1/punch_items/{id}Inspect fields and contract/rest/v1.0/punch_items/recycle_binInspect fields and contract/rest/v1.1/punch_items/recycle_binInspect fields and contract/rest/v1.0/punch_itemsInspect fields and contract/rest/v1.1/punch_itemsInspect fields and contract/rest/v1.0/punch_list/default_distributionInspect fields and contract/rest/v1.0/purchase_order_contracts/{id}Inspect fields and contract/rest/v1.0/purchase_order_contracts/{purchase_order_contract_id}/line_item_contract_details/{id}Inspect fields and contract/rest/v1.0/purchase_order_contracts/{purchase_order_contract_id}/line_items/{id}Inspect fields and contract/rest/v1.0/purchase_order_contracts/{purchase_order_contract_id}/line_itemsInspect fields and contract/rest/v1.0/purchase_order_contracts/{purchase_order_contract_id}/line_item_contract_detailsInspect fields and contract/rest/v1.0/purchase_order_contractsInspect fields and contractDocumented contract, live behaviour unverified
procore_get_projects_v1_0Read the provider documentation
| Parameter | Required | Provider description |
|---|---|---|
company_id | Yes | Unique identifier for the company. |
page | No | Page |
per_page | No | Elements per page |
filters[by_status] | No | Filters on project status. Must be one of Active, Inactive, or All. |
filters[name] | No | Filters projects to those matching the given string. |
filters[created_at] | No | Return item(s) created within the specified ISO 8601 datetime range. Formats: `YYYY-MM-DD`...`YYYY-MM-DD` - Date `YYYY-MM-DDTHH:MM:SSZ`...`YYYY-MM-DDTHH:MM:SSZ` - DateTime with UTC Offset `YYYY-MM-DDTHH:MM:SS+XX:00...`YYYY-MM-DDTHH:MM:SS+XX:00` - Datetime with Custom Offset |
filters[updated_at] | No | Return item(s) last updated within the specified ISO 8601 datetime range. Formats: `YYYY-MM-DD`...`YYYY-MM-DD` - Date `YYYY-MM-DDTHH:MM:SSZ`...`YYYY-MM-DDTHH:MM:SSZ` - DateTime with UTC Offset `YYYY-MM-DDTHH:MM:SS+XX:00`...`YYYY-MM-DDTHH:MM:SS+XX:00` - Datetime with Custom Offset |
filters[origin_id] | No | Origin ID. Returns item(s) with the specified Origin ID. |
filters[from_project_template_id] | No | Filter projects by the project template ID they were created from. Returns projects that were created from the specified project template. |
filters[id] | No | Return item(s) with the specified IDs. |
filters[synced] | No | If true, returns only item(s) with a `synced` status. |
filters[vendor_id] | No | Return item(s) with the specified Vendor ID. |
filters[custom_fields] | No | JSON object returns project with matching custom_field_values |
serializer_view | No | The 'compact' view only returns id, name and display_name. Passing any other value (or passing no value at all) will result in the more complete list of attributes shown below. |
sort | No | Return items with the specified sort. |
The exact retained JSON includes schemas, nested fields, notes, source evidence and unresolved questions. It is a documented contract, not a live response.
{
"id": "get_projects_v1_0",
"name": "procore_get_projects_v1_0",
"resourceId": "projects",
"description": "List projects",
"method": "GET",
"path": "/rest/v1.0/projects",
"version": "1.0",
"documentationUrl": "https://developers.procore.com/reference/rest/projects?version=1.0",
"readOnly": true,
"destructive": false,
"idempotent": true,
"deprecated": false,
"beta": false,
"canonical": false,
"pathParameters": [],
"queryParameters": [
{
"name": "company_id",
"in": "query",
"description": "Unique identifier for the company.",
"required": true,
"schema": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"x-mcp-original-type": "integer"
}
},
{
"name": "page",
"in": "query",
"description": "Page",
"schema": {
"type": "integer"
}
},
{
"name": "per_page",
"in": "query",
"description": "Elements per page",
"schema": {
"type": "integer"
}
},
{
"name": "filters[by_status]",
"in": "query",
"description": "Filters on project status. Must be one of Active, Inactive, or All.",
"required": false,
"schema": {
"type": "string",
"enum": [
"All",
"Active",
"Inactive"
]
}
},
{
"name": "filters[name]",
"in": "query",
"description": "Filters projects to those matching the given string.",
"schema": {
"type": "string"
}
},
{
"name": "filters[created_at]",
"in": "query",
"description": "Return item(s) created within the specified ISO 8601 datetime range.\nFormats:\n`YYYY-MM-DD`...`YYYY-MM-DD` - Date\n`YYYY-MM-DDTHH:MM:SSZ`...`YYYY-MM-DDTHH:MM:SSZ` - DateTime with UTC Offset\n`YYYY-MM-DDTHH:MM:SS+XX:00...`YYYY-MM-DDTHH:MM:SS+XX:00` - Datetime with Custom Offset",
"required": false,
"schema": {
"type": "string",
"format": "date"
}
},
{
"name": "filters[updated_at]",
"in": "query",
"description": "Return item(s) last updated within the specified ISO 8601 datetime range.\nFormats:\n`YYYY-MM-DD`...`YYYY-MM-DD` - Date\n`YYYY-MM-DDTHH:MM:SSZ`...`YYYY-MM-DDTHH:MM:SSZ` - DateTime with UTC Offset\n`YYYY-MM-DDTHH:MM:SS+XX:00`...`YYYY-MM-DDTHH:MM:SS+XX:00` - Datetime with Custom Offset",
"required": false,
"schema": {
"type": "string",
"format": "date"
}
},
{
"name": "filters[origin_id]",
"in": "query",
"description": "Origin ID. Returns item(s) with the specified Origin ID.",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "filters[from_project_template_id]",
"in": "query",
"description": "Filter projects by the project template ID they were created from. Returns projects that were created from the specified project template.",
"required": false,
"schema": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"x-mcp-original-type": "integer"
}
},
{
"name": "filters[id]",
"in": "query",
"description": "Return item(s) with the specified IDs.",
"required": false,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"x-mcp-original-type": "integer"
}
}
},
{
"name": "filters[synced]",
"in": "query",
"required": false,
"description": "If true, returns only item(s) with a `synced` status.",
"schema": {
"type": "boolean"
}
},
{
"name": "filters[vendor_id]",
"in": "query",
"description": "Return item(s) with the specified Vendor ID.",
"schema": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"x-mcp-original-type": "integer"
}
},
{
"name": "filters[custom_fields]",
"in": "query",
"description": "JSON object returns project with matching custom_field_values",
"required": false,
"schema": {
"type": "object",
"description": "json object where key = custom_field_id"
}
},
{
"name": "serializer_view",
"in": "query",
"description": "The 'compact' view only returns id, name and display_name. Passing any other value (or passing no value at all)\nwill result in the more complete list of attributes shown below.",
"required": false,
"schema": {
"type": "string",
"enum": [
"compact"
]
}
},
{
"name": "sort",
"in": "query",
"description": "Return items with the specified sort.",
"required": false,
"schema": {
"type": "string",
"enum": [
"name",
"display_name"
]
}
}
],
"requestBodySchema": null,
"requestBodyRequired": false,
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "object",
"properties": {
"company_id": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "Unique identifier for the company.",
"x-mcp-original-type": "integer"
},
"page": {
"type": "integer",
"description": "Page"
},
"per_page": {
"type": "integer",
"description": "Elements per page"
},
"filters[by_status]": {
"type": "string",
"enum": [
"All",
"Active",
"Inactive"
],
"description": "Filters on project status. Must be one of Active, Inactive, or All."
},
"filters[name]": {
"type": "string",
"description": "Filters projects to those matching the given string."
},
"filters[created_at]": {
"type": "string",
"format": "date",
"description": "Return item(s) created within the specified ISO 8601 datetime range.\nFormats:\n`YYYY-MM-DD`...`YYYY-MM-DD` - Date\n`YYYY-MM-DDTHH:MM:SSZ`...`YYYY-MM-DDTHH:MM:SSZ` - DateTime with UTC Offset\n`YYYY-MM-DDTHH:MM:SS+XX:00...`YYYY-MM-DDTHH:MM:SS+XX:00` - Datetime with Custom Offset"
},
"filters[updated_at]": {
"type": "string",
"format": "date",
"description": "Return item(s) last updated within the specified ISO 8601 datetime range.\nFormats:\n`YYYY-MM-DD`...`YYYY-MM-DD` - Date\n`YYYY-MM-DDTHH:MM:SSZ`...`YYYY-MM-DDTHH:MM:SSZ` - DateTime with UTC Offset\n`YYYY-MM-DDTHH:MM:SS+XX:00`...`YYYY-MM-DDTHH:MM:SS+XX:00` - Datetime with Custom Offset"
},
"filters[origin_id]": {
"type": "string",
"description": "Origin ID. Returns item(s) with the specified Origin ID."
},
"filters[from_project_template_id]": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "Filter projects by the project template ID they were created from. Returns projects that were created from the specified project template.",
"x-mcp-original-type": "integer"
},
"filters[id]": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"x-mcp-original-type": "integer"
},
"description": "Return item(s) with the specified IDs."
},
"filters[synced]": {
"type": "boolean",
"description": "If true, returns only item(s) with a `synced` status."
},
"filters[vendor_id]": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "Return item(s) with the specified Vendor ID.",
"x-mcp-original-type": "integer"
},
"filters[custom_fields]": {
"type": "object",
"description": "JSON object returns project with matching custom_field_values"
},
"serializer_view": {
"type": "string",
"enum": [
"compact"
],
"description": "The 'compact' view only returns id, name and display_name. Passing any other value (or passing no value at all)\nwill result in the more complete list of attributes shown below."
},
"sort": {
"type": "string",
"enum": [
"name",
"display_name"
],
"description": "Return items with the specified sort."
}
},
"additionalProperties": {
"type": [
"string",
"number",
"boolean",
"null"
]
},
"required": [
"company_id"
]
}
},
"required": [
"query"
],
"additionalProperties": false
},
"pagination": null,
"notes": [
"Return a list of active Projects.\n\nIf the authenticated user has full company admin permissions the request will return all of the projects in the company. If the user does not have full company admin permissions, the request will only return the projects that the user has been added to.\n\nSee [Filtering on List Actions](https://developers.procore.com/documentation/filtering-on-list-actions) for information on using the filtering capabilities provided by this endpoint."
],
"unresolved": [
"No authorised Procore provider request has verified this operation."
],
"request": {
"parameters": [
{
"name": "Procore-Company-Id",
"in": "header",
"description": "Unique company identifier associated with the Procore User Account.",
"required": true,
"schema": {
"type": "integer"
}
},
{
"name": "company_id",
"in": "query",
"description": "Unique identifier for the company.",
"required": true,
"schema": {
"type": "integer"
}
},
{
"name": "page",
"in": "query",
"description": "Page",
"schema": {
"type": "integer"
}
},
{
"name": "per_page",
"in": "query",
"description": "Elements per page",
"schema": {
"type": "integer"
}
},
{
"name": "filters[by_status]",
"in": "query",
"description": "Filters on project status. Must be one of Active, Inactive, or All.",
"required": false,
"schema": {
"type": "string",
"enum": [
"All",
"Active",
"Inactive"
]
}
},
{
"name": "filters[name]",
"in": "query",
"description": "Filters projects to those matching the given string.",
"schema": {
"type": "string"
}
},
{
"name": "filters[created_at]",
"in": "query",
"description": "Return item(s) created within the specified ISO 8601 datetime range.\nFormats:\n`YYYY-MM-DD`...`YYYY-MM-DD` - Date\n`YYYY-MM-DDTHH:MM:SSZ`...`YYYY-MM-DDTHH:MM:SSZ` - DateTime with UTC Offset\n`YYYY-MM-DDTHH:MM:SS+XX:00...`YYYY-MM-DDTHH:MM:SS+XX:00` - Datetime with Custom Offset",
"required": false,
"schema": {
"type": "string",
"format": "date"
}
},
{
"name": "filters[updated_at]",
"in": "query",
"description": "Return item(s) last updated within the specified ISO 8601 datetime range.\nFormats:\n`YYYY-MM-DD`...`YYYY-MM-DD` - Date\n`YYYY-MM-DDTHH:MM:SSZ`...`YYYY-MM-DDTHH:MM:SSZ` - DateTime with UTC Offset\n`YYYY-MM-DDTHH:MM:SS+XX:00`...`YYYY-MM-DDTHH:MM:SS+XX:00` - Datetime with Custom Offset",
"required": false,
"schema": {
"type": "string",
"format": "date"
}
},
{
"name": "filters[origin_id]",
"in": "query",
"description": "Origin ID. Returns item(s) with the specified Origin ID.",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "filters[from_project_template_id]",
"in": "query",
"description": "Filter projects by the project template ID they were created from. Returns projects that were created from the specified project template.",
"required": false,
"schema": {
"type": "integer"
}
},
{
"name": "filters[id]",
"in": "query",
"description": "Return item(s) with the specified IDs.",
"required": false,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"type": "integer"
}
}
},
{
"name": "filters[synced]",
"in": "query",
"required": false,
"description": "If true, returns only item(s) with a `synced` status.",
"schema": {
"type": "boolean"
}
},
{
"name": "filters[vendor_id]",
"in": "query",
"description": "Return item(s) with the specified Vendor ID.",
"schema": {
"type": "integer"
}
},
{
"name": "filters[custom_fields]",
"in": "query",
"description": "JSON object returns project with matching custom_field_values",
"required": false,
"schema": {
"type": "object",
"description": "json object where key = custom_field_id",
"example": "{\"1\": true, \"5\": [4,3] }"
}
},
{
"name": "serializer_view",
"in": "query",
"description": "The 'compact' view only returns id, name and display_name. Passing any other value (or passing no value at all)\nwill result in the more complete list of attributes shown below.",
"required": false,
"schema": {
"type": "string",
"enum": [
"compact"
]
}
},
{
"name": "sort",
"in": "query",
"description": "Return items with the specified sort.",
"required": false,
"schema": {
"type": "string",
"enum": [
"name",
"display_name"
]
}
}
],
"content": {}
},
"responseContentTypes": [
"application/json"
],
"provenance": {
"sourceUrl": "https://developers.procore.com/api/v1/resource_groups/resource/projects?version=rest_v1.0",
"sourceSha256": "7639991a55da1822b87e4c215f679c95745b18e87460bfb10ee035104914e4c6",
"snapshot": "snapshots/oas/projects--rest_v1.0.json.gz"
},
"sourceCorrections": []
}The Unleashed waitlist is open. Inspect its documented coverage and account requirements.
Explore Unleashed