Create Requisition (Subcontractor Invoices) for Commitment
/rest/v1.0/requisitionsInspect 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 3201–3220.
/rest/v1.0/requisitionsInspect fields and contract/rest/v1.1/requisitionsInspect fields and contract/rest/v1.0/resourcesInspect fields and contract/rest/v1.0/rfqs/{rfq_id}/quotesInspect fields and contract/rest/v1.0/rfqs/{rfq_id}/responsesInspect fields and contract/rest/v1.0/rfqsInspect fields and contract/rest/v1.0/specification_section_divisionsInspect fields and contract/rest/v1.0/specification_sectionsInspect fields and contract/rest/v1.0/standard_cost_code_listsInspect fields and contract/rest/v1.0/standard_cost_codesInspect fields and contract/rest/v1.0/sub_jobsInspect fields and contract/rest/v1.0/task_items/send_unsentInspect fields and contract/rest/v1.0/task_itemsInspect fields and contract/rest/v1.0/tasksInspect fields and contract/rest/v1.0/tax_codesInspect fields and contract/rest/v1.0/tax_typesInspect fields and contract/rest/v1.0/timecard_entriesInspect fields and contract/rest/v1.0/todosInspect fields and contract/rest/v1.0/usersInspect fields and contract/rest/v1.0/vendors/{id}/business_registerInspect fields and contractDocumented contract, live behaviour unverified
procore_post_rfqs_v1_0Read the provider documentation
The exact retained JSON includes schemas, nested fields, notes, source evidence and unresolved questions. It is a documented contract, not a live response.
{
"id": "post_rfqs_v1_0",
"name": "procore_post_rfqs_v1_0",
"resourceId": "request-for-quotes",
"description": "Create RFQ",
"method": "POST",
"path": "/rest/v1.0/rfqs",
"version": "1.0",
"documentationUrl": "https://developers.procore.com/reference/rest/request-for-quotes?version=1.0",
"readOnly": false,
"destructive": true,
"idempotent": false,
"deprecated": false,
"beta": false,
"canonical": true,
"pathParameters": [],
"queryParameters": [],
"requestBodySchema": {
"type": "object",
"required": [
"project_id",
"contract_id",
"rfq"
],
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"description": "Unique identifier for the project.",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "Unique identifier for the project.",
"x-mcp-original-type": "integer"
},
"contract_id": {
"anyOf": [
{
"type": "integer",
"description": "Contract ID",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "Contract ID",
"x-mcp-original-type": "integer"
},
"rfq": {
"title": "RFQ",
"type": "object",
"required": [
"title"
],
"properties": {
"assigned_id": {
"anyOf": [
{
"type": "integer",
"description": "ID of the user assigned to price this RFQ (the ball-in-court assignee while it is out for pricing).",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "ID of the user assigned to price this RFQ (the ball-in-court assignee while it is out for pricing).",
"x-mcp-original-type": "integer"
},
"change_event_event_id": {
"anyOf": [
{
"type": "integer",
"description": "ID of the Change Event this RFQ is associated with.",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "ID of the Change Event this RFQ is associated with.",
"x-mcp-original-type": "integer"
},
"cost_code_id": {
"anyOf": [
{
"type": "integer",
"description": "ID of the cost code associated with this RFQ.",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "ID of the cost code associated with this RFQ.",
"x-mcp-original-type": "integer"
},
"description": {
"type": "string",
"description": "Description"
},
"due_date": {
"type": "string",
"format": "date",
"description": "Due date"
},
"estimated_amount": {
"type": "number",
"format": "float",
"description": "Estimated cost impact of the RFQ."
},
"estimated_schedule_impact": {
"type": "integer",
"description": "Estimated schedule impact in days"
},
"estimated_status": {
"type": "string",
"description": "Confidence level of the estimated amount.",
"enum": [
"rom",
"final"
]
},
"location_id": {
"anyOf": [
{
"type": "integer",
"description": "ID of the project location associated with this RFQ.",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "ID of the project location associated with this RFQ.",
"x-mcp-original-type": "integer"
},
"number": {
"type": "string",
"description": "Human-readable identifier for the RFQ, unique within its parent contract. Auto-assigned if omitted."
},
"original_quote": {
"type": "number",
"format": "float",
"description": "Original quoted amount for the RFQ."
},
"private": {
"type": "boolean",
"description": "If true, visible to admins only; otherwise visible to those with access to the parent contract.",
"default": false
},
"spec_section_description": {
"type": "string",
"description": "Specification Section description"
},
"spec_section_number": {
"type": "string",
"description": "Specification Section number"
},
"specification_section_id": {
"anyOf": [
{
"type": "integer",
"description": "Specification Section ID",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "Specification Section ID",
"x-mcp-original-type": "integer"
},
"status": {
"type": "string",
"description": "Current lifecycle status of the RFQ.",
"enum": [
"out_for_pricing",
"revise_and_resubmit",
"under_review",
"pending_final_approval",
"closed",
"withdrawn"
]
},
"title": {
"type": "string",
"description": "Short title describing the RFQ. Required when creating an RFQ."
},
"prostore_file_ids": {
"type": "array",
"description": "IDs of Procore-stored files to attach to the RFQ. Replaces the current set of attachments.",
"items": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"x-mcp-original-type": "integer"
}
}
}
}
}
},
"requestBodyRequired": true,
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "object",
"properties": {},
"additionalProperties": {
"type": [
"string",
"number",
"boolean",
"null"
]
},
"required": []
},
"contentType": {
"type": "string",
"enum": [
"application/json"
],
"default": "application/json",
"description": "Request media type. Defaults to the documented JSON type when available."
},
"body": {
"type": "object",
"required": [
"project_id",
"contract_id",
"rfq"
],
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"description": "Unique identifier for the project.",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "Unique identifier for the project.",
"x-mcp-original-type": "integer"
},
"contract_id": {
"anyOf": [
{
"type": "integer",
"description": "Contract ID",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "Contract ID",
"x-mcp-original-type": "integer"
},
"rfq": {
"title": "RFQ",
"type": "object",
"required": [
"title"
],
"properties": {
"assigned_id": {
"anyOf": [
{
"type": "integer",
"description": "ID of the user assigned to price this RFQ (the ball-in-court assignee while it is out for pricing).",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "ID of the user assigned to price this RFQ (the ball-in-court assignee while it is out for pricing).",
"x-mcp-original-type": "integer"
},
"change_event_event_id": {
"anyOf": [
{
"type": "integer",
"description": "ID of the Change Event this RFQ is associated with.",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "ID of the Change Event this RFQ is associated with.",
"x-mcp-original-type": "integer"
},
"cost_code_id": {
"anyOf": [
{
"type": "integer",
"description": "ID of the cost code associated with this RFQ.",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "ID of the cost code associated with this RFQ.",
"x-mcp-original-type": "integer"
},
"description": {
"type": "string",
"description": "Description"
},
"due_date": {
"type": "string",
"format": "date",
"description": "Due date"
},
"estimated_amount": {
"type": "number",
"format": "float",
"description": "Estimated cost impact of the RFQ."
},
"estimated_schedule_impact": {
"type": "integer",
"description": "Estimated schedule impact in days"
},
"estimated_status": {
"type": "string",
"description": "Confidence level of the estimated amount.",
"enum": [
"rom",
"final"
]
},
"location_id": {
"anyOf": [
{
"type": "integer",
"description": "ID of the project location associated with this RFQ.",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "ID of the project location associated with this RFQ.",
"x-mcp-original-type": "integer"
},
"number": {
"type": "string",
"description": "Human-readable identifier for the RFQ, unique within its parent contract. Auto-assigned if omitted."
},
"original_quote": {
"type": "number",
"format": "float",
"description": "Original quoted amount for the RFQ."
},
"private": {
"type": "boolean",
"description": "If true, visible to admins only; otherwise visible to those with access to the parent contract.",
"default": false
},
"spec_section_description": {
"type": "string",
"description": "Specification Section description"
},
"spec_section_number": {
"type": "string",
"description": "Specification Section number"
},
"specification_section_id": {
"anyOf": [
{
"type": "integer",
"description": "Specification Section ID",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "Specification Section ID",
"x-mcp-original-type": "integer"
},
"status": {
"type": "string",
"description": "Current lifecycle status of the RFQ.",
"enum": [
"out_for_pricing",
"revise_and_resubmit",
"under_review",
"pending_final_approval",
"closed",
"withdrawn"
]
},
"title": {
"type": "string",
"description": "Short title describing the RFQ. Required when creating an RFQ."
},
"prostore_file_ids": {
"type": "array",
"description": "IDs of Procore-stored files to attach to the RFQ. Replaces the current set of attachments.",
"items": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"x-mcp-original-type": "integer"
}
}
}
}
}
}
},
"required": [
"body"
],
"additionalProperties": false
},
"pagination": null,
"notes": [
"Create a new RFQ in a specified Project and Contract."
],
"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"
}
}
],
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"project_id",
"contract_id",
"rfq"
],
"properties": {
"project_id": {
"anyOf": [
{
"type": "integer",
"description": "Unique identifier for the project.",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "Unique identifier for the project.",
"x-mcp-original-type": "integer"
},
"contract_id": {
"anyOf": [
{
"type": "integer",
"description": "Contract ID",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "Contract ID",
"x-mcp-original-type": "integer"
},
"rfq": {
"title": "RFQ",
"type": "object",
"required": [
"title"
],
"properties": {
"assigned_id": {
"anyOf": [
{
"type": "integer",
"description": "ID of the user assigned to price this RFQ (the ball-in-court assignee while it is out for pricing).",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "ID of the user assigned to price this RFQ (the ball-in-court assignee while it is out for pricing).",
"x-mcp-original-type": "integer"
},
"change_event_event_id": {
"anyOf": [
{
"type": "integer",
"description": "ID of the Change Event this RFQ is associated with.",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "ID of the Change Event this RFQ is associated with.",
"x-mcp-original-type": "integer"
},
"cost_code_id": {
"anyOf": [
{
"type": "integer",
"description": "ID of the cost code associated with this RFQ.",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "ID of the cost code associated with this RFQ.",
"x-mcp-original-type": "integer"
},
"description": {
"type": "string",
"description": "Description"
},
"due_date": {
"type": "string",
"format": "date",
"description": "Due date"
},
"estimated_amount": {
"type": "number",
"format": "float",
"description": "Estimated cost impact of the RFQ."
},
"estimated_schedule_impact": {
"type": "integer",
"description": "Estimated schedule impact in days"
},
"estimated_status": {
"type": "string",
"description": "Confidence level of the estimated amount.",
"enum": [
"rom",
"final"
]
},
"location_id": {
"anyOf": [
{
"type": "integer",
"description": "ID of the project location associated with this RFQ.",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "ID of the project location associated with this RFQ.",
"x-mcp-original-type": "integer"
},
"number": {
"type": "string",
"description": "Human-readable identifier for the RFQ, unique within its parent contract. Auto-assigned if omitted."
},
"original_quote": {
"type": "number",
"format": "float",
"description": "Original quoted amount for the RFQ."
},
"private": {
"type": "boolean",
"description": "If true, visible to admins only; otherwise visible to those with access to the parent contract.",
"default": false
},
"spec_section_description": {
"type": "string",
"description": "Specification Section description"
},
"spec_section_number": {
"type": "string",
"description": "Specification Section number"
},
"specification_section_id": {
"anyOf": [
{
"type": "integer",
"description": "Specification Section ID",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"description": "Specification Section ID",
"x-mcp-original-type": "integer"
},
"status": {
"type": "string",
"description": "Current lifecycle status of the RFQ.",
"enum": [
"out_for_pricing",
"revise_and_resubmit",
"under_review",
"pending_final_approval",
"closed",
"withdrawn"
]
},
"title": {
"type": "string",
"description": "Short title describing the RFQ. Required when creating an RFQ."
},
"prostore_file_ids": {
"type": "array",
"description": "IDs of Procore-stored files to attach to the RFQ. Replaces the current set of attachments.",
"items": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^[0-9]+$"
}
],
"x-mcp-original-type": "integer"
}
}
}
}
}
}
}
},
"defaultContentType": "application/json"
},
"responseContentTypes": [
"application/json"
],
"provenance": {
"sourceUrl": "https://developers.procore.com/api/v1/resource_groups/resource/request-for-quotes?version=rest_v1.0",
"sourceSha256": "11276d35dd3d21612f2035428618df39f33bf054214a449cb6563e22f8b8a9b2",
"snapshot": "snapshots/oas/request-for-quotes--rest_v1.0.json.gz"
},
"sourceCorrections": []
}The Unleashed waitlist is open. Inspect its documented coverage and account requirements.
Explore Unleashed