Construct.Chat Agents
AI agents on live project data—MCP tools working against Procore in the open.
Built for: Contractor operations, finance and IT leaders, and the engineers who support them, evaluating AI agents that must read live Procore project data under clear access rules.
Video unavailable? Watch on YouTube or read the written breakdown.
Key takeaways
- 01Agents earn trust when they operate on live project systems under policy; here a financials agent queries Procore through its live API.
- 02The selected tool list is the agent permission boundary: the demo agent gets only list and show tools, so it can read but not write.
- 03Every tool call is logged with request URL, parameters, response and success or failure, so answers are traceable and broken tools are easy to find.
- 04The TypeScript Procore MCP server held about 735 tools, organized by Procore module with a central registry and a telemetry service.
- 05Pair with routing and gateway patterns when the API surface is large.
Technical overview
Live API calls, not canned answers
Agents earn trust when they work on live project data, not toy environments. In this demo, a Construct.Chat agent uses MCP tools to query Procore through its live API, so you can see exactly how a question in plain language turns into API calls, and how every one of those calls is recorded afterwards.
Why it matters
A model on its own knows construction in general but nothing about your projects. To answer "how are this project's financials tracking?" it has to find the project, pull its details and read its budgets and estimates. Each of those is an API call. MCP gives the model a defined list of tools to make those calls, and the list you choose is the agent's permission boundary. If a tool is not selected, the agent cannot call it.
How it works
- A narrow agent. The Procore Project Financials Insights Agent has one job: financial insight on construction projects. You choose its model and can enable code execution, web search, file search over uploaded documents (RAG), and helpers like a calculator.
- A Procore MCP connection. Configured with a Procore client ID, client secret, company ID, environment (sandbox or production) and a Construct.Chat API key. In the demo only the list and show tools are selected, so the agent can read but not create, update or delete.
- A real conversation. "What projects am I working on?" runs the list projects tool. Asking about the Sparkling Skyrise project runs get project details. Asking about financials chains several tools and returns budgets, estimates and recommendations.
- Telemetry on every call. Each tool call is sent to an API dashboard with the request URL, parameters, headers, arguments, response and success or failure. Failed calls can be opened to see why, which is how you catch a vendor API change before users do. Analytics show which tools are used and how often.
- The server behind it. The TypeScript Procore MCP server held about 735 tools at recording, covering Construction Financials and most of Core, organized into client, endpoints, config, server (HTTP and SSE transports), registry, services, tools and types. A verification script confirms the tool count and runs a live list projects test.
What you will learn
- How agent configuration and MCP tool selection fit together
- Why read-only tool sets are the right starting point for project data
- What per-call telemetry looks like and why it matters for debugging and trust
- A folder structure for a large MCP server that stays maintainable as the API changes
For the full breakdown, read Building AI agents for construction with MCP tools. When the tool count grows into the thousands, see routing 2,755 Procore API tools and the Tool Runtime gateway demo.
Delivery note
We help teams move from demo agents to governed production capability: scoped credentials, deliberate tool packs, and an audit trail on every call. Tell us what you want to build.
Imagine what we could build for you
This build is one example of what’s possible. Tell us what you want to achieve, and we’ll design a solution around your people, your systems, and your goals.
Access & governance
Live Procore agents need project-scoped tokens and clear read/write policy before production use.
Full governance posture →Video description
Source listing for the published walkthrough—useful for search and context.
Chapters
- 00:00Introducing Construct.Chat
- 00:45Models and the Procore financials agent
- 01:30Agent capabilities: code, web search, file RAG
- 02:15Connecting the Procore MCP and choosing tools
- 03:00Live chat: listing projects and project details
- 04:30Project financials and 700+ Procore tools
- 05:15API dashboard: tool-call telemetry
- 06:45Debugging failed calls and analytics
- 07:30API verification test: 735 tools
- 08:15Inside the Procore MCP server codebase
Transcript(available)
[00:00] Hi, my name is Charley. I'm the founder of Construct.Chat. Today I'll be walking you through our platform and the agents that we've been creating, along with the MCP tools that we have available. So let's jump right in. If you want to learn more, of course, you can go to constructchat.com. Today I will be showing you our application. The application is hosted at app.construct.chat. On our platform, you'll be able to create new chats, and you can leverage any type of agentic chat interface and application agents to perform insights, do actions, and create [00:45] various data. There are different large language models that you can leverage: from OpenAI, where you plug in your API key, your own agents that you create, any assistants. Of course, we have Google plugins that you can import, and various other types of large language models depending on what your needs are. Specifically, I created an agent here. You'll see it over here on the right. It is called the Procore Project Financials Insights Agent. What this does is provide financial insights to construction projects, allowing you to interact with your Procore data, specifically construction financials. It will leverage the API and MCPs to query information within your solution and [01:30] give detailed responses based upon your requests and the details that you desire. There are different capabilities with agents that we can leverage. The first one is choosing the model that you want to use for this agent. Outside of that, we can give it the opportunity to run code, we can give it the opportunity to search the web, and of course we can upload any type of file for reference context. Those files will go through a RAG analysis and do query analysis and lookups for that type of data, specifically within the file search, where we can find that data and look it up. One of the key features and functionalities I'll be showing today, if I scroll down here, is [02:15] the Procore MCP. This is an MCP that I created. Essentially, you enter your client ID, client secret, company ID, and the environment, sandbox or production, as well as the API key for Construct.Chat. Once that is provisioned, you'll be able to select from the plethora of different MCP tools. As of right now, I am just showing the list and show MCP tools. Of course, there are different opportunities to create, delete, or update various types of functionality within Procore. The whole idea is that you provide your agent with the tools necessary to gather the [03:00] information or do the actions, so you can interact with it in your own language and it will then do those specific tasks for you. Once you've selected your tools, we can provide other tools and capabilities, like a calculator, and then we can save it. Once we save it... I did have a chat already created, so we can leverage one of the chats that was created to provide some deeper insights on this. What I asked it, essentially, is "What projects am I working on?" What you'll see here is that it ran the list projects endpoint, and it provided the projects that I currently have available. I then said, "Hey, I want to actually know more about this project," so this [03:45] Sparkling Skyrise project, and I gave it the ID and said, "Hey, I want to learn more about this." It ran the get project details tool, and you'll see it made this request here, and from there it was able to create a detailed response outlining all the specifics of that project. Of course, we want to know even more about this construction project, so I specifically said, "Hey, tell me more about the project financials." That leveraged more of the MCP tools and essentially ran many different API requests, performing detailed insight into what those current details or data are. From there, it produced a response and was able to provide a [04:30] detailed response for each specific functionality that we were looking for. It gave breakdowns, budgets, estimates, and recommendations. When it brought us to the end, of course, we can keep interacting with it, telling it what we want deeper insight on, or we can have it run calculations and do various tasks for us. This is, of course, just a starting point. I have over 700 MCP tools for Procore created, and I'm currently working on MCP tools for other construction software for you to leverage cross-functionally between the different technologies in your tech stack. What this is also doing: I have the Construct.Chat API key that I shared [05:15] earlier, and what this does is send a request to our Construct.Chat API dashboard. This allows me to identify how these MCP tools are being utilized and whether they're succeeding or failing, so if I need to update them, put time or attention into them, or just see which ones are being leveraged and utilized. It's quite important. When a new customer comes on, I'll create a new API key here, and that API key will be plugged in and used when using the MCP tools. When we look at the recent tool calls here, we're able to get deeper insight into: when this ran list projects, what was the key result? What was the request? What was the URL that [06:00] it requested? Any query parameters, headers, and the arguments for it, and then the response that it provided back to the chat interface. This is super helpful: being able to gain insight into how they are functioning, updating them if necessary, and, further down the line, being able to automate this data and feed it into a fine-tuning model. Then we can give an agent the ability to leverage our own large language model that is fine-tuned on construction-specific data. That will make it even more intelligent and give it more capabilities in terms of [06:45] construction responses, and provide deeper intelligence for the construction industry. If there are any failures, like we see here, where there is a failure on this one, it gives us the opportunity to dive deeper into why it failed and what needs to happen. We may need to update the MCP; maybe they changed the URL, or there are different parameters that are required to submit this. This gives us that granularity into understanding what's going on from that interface. Then, of course, there are analytics. When we run different tool calls, we'll be able to see different graphical views of how they're functioning and which ones are being utilized at what frequency. How this essentially works... well, I [07:30] can actually just show some of the tools. I did run a test. This is the API test, API verification. When this ran, I plugged in my credentials and I'm running a JavaScript application that runs some tests on it. You'll see here that currently I have about 735 tools created. Then it went through and tested list projects to make sure everything's functioning and working appropriately. It listed the projects here, and everything was successful. As for how this is working, I'll bring you into the codebase. Within the codebase, we're in our Procore MCP, in the source folder, and specifically we have our index.ts, which provisions the [08:15] rest of the folders. We then dig into the client. This client provides the common clients for how we're interacting with Procore: authentication and the instance, and then any errors if they come up. We then have our list of endpoints that we're leveraging and utilizing. What I've done so far is all of Construction Financials and most of Core. I'll be working on the various other modules that Procore has to offer soon, like the Project Management module. When you go into here, this will load quickly, hopefully, and this contains all of the specific endpoints that are available, or the modules for the endpoints, within the [09:00] Core module of Procore. There are different directories under the Core module, and within those, this outlines all of the specific endpoints that are available to be leveraged and utilized, in addition to the actions associated with them. The same thing goes for Construction Financials here. Once we go back and go into the configuration, this is where we can configure our environment variables: all of the authentication, API keys, everything like that. Once we get into the server, this is how we're interacting with the MCP server. Essentially, we have our Procore MCP server that does a lot of the [09:45] orchestration. We have a setup, and then this is for HTTP, which would be for on-prem: if we're running the MCP locally, it would be doing the HTTP requests. We also have SSE, server-sent events. Within the registry, what we need to do is register all these tools with the MCP server, so we have our tool registry and our client factory, which is how we're provisioning those. Then we register each tool, similar to how we did with the endpoints, where we have Construction Financials here as well as Core, and then our index that leads us into these two folders. When we get into the services, the services are basically how we're [10:30] doing the API verification and doing the request. This is essentially how we're sending the data into the Construct.Chat API, so we're able to read what those tool calls are and identify how they're functioning. We then have our tools. This is going to look quite similar as well: we have our types and our index, which leads us again into Construction Financials and Core. These are the specific subdirectories of those modules, Construction Financials specifically. Then within budgets, that directory leads us into how we're managing the definitions for those endpoints, how we're going to handle those endpoints, and then the entry point via the index. It does all of this for all of the tools within each [11:15] of the directories here. And then we have our types, which is how we're implementing our type definitions for each of these specific endpoints that we're implementing. From there, that is really about all. I hope that you have the opportunity to implement and leverage this and get some deep insight into building intelligent construction AI agents. Thank you very much. I appreciate your time.
More like this
Nearby builds by capability and stack—useful context before you scope yours.
- Procore MCP ArchitectureRoute thousands of Procore API operations through MCP without drowning the model.
- AI Sales Automations with ZapierFive Zapier zaps that capture leads, prep discovery calls and demos, and draft follow-ups in HubSpot and Gmail.
- Connect: Agentic AI for Construction SchedulingStandardize how schedulers plan, build, validate, and deliver CPM schedules—with agents, evidence, and an audit trail.
Your idea. Your solution. Let’s build it.
A similar flow, a different application, or something entirely new—we can help take it from the first idea through design, development, and deployment. Start by telling us what you need.