MCP server
Connect your Tree Inventory AI account to Claude, Cursor, or any other client that speaks the Model Context Protocol. You get thirteen tools over the same API this reference documents, so anything you can do with a key you can do in a conversation.
Ask which sites have oaks that need a crown clean. Ask what you quoted the last removal at. Draft an estimate from a spreadsheet without opening the app.
Set it up
Nothing to install and nothing to clone. Your client talks to our hosted endpoint and the key rides in a header, so the only thing you supply is the key.
The block below is the Claude Desktop shape. Cursor, Claude Code and Codex each want a different one, and the quickest way to get the right one is **Settings, Connect an assistant** inside the app: it makes the key and gives you the exact block for the client you picked.
{
"mcpServers": {
"tree-inventory": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://app.treeinventory.ai/api/mcp",
"--header", "Authorization: Bearer tiai_your_key_here"
]
}
}
}The key decides what the tools can reach. A key with only inventory:read and sites:read gives you a research assistant that cannot change anything, which is a good place to start.
The tools
One tool per operation. Each needs the scope beside it, and a tool whose scope your key does not carry will say so rather than fail quietly.
| Tool | Does | Scope |
|---|---|---|
| list_customers | List customers | customers:read |
| create_customerwrites | Create a customer | customers:write |
| list_sites | List sites | sites:read |
| create_sitewrites | Create a site | sites:write |
| list_trees_at_site | List the trees captured at a site | inventory:read |
| get_tree | Get one tree | inventory:read |
| list_catalog_items | List catalog items | catalog:read |
| create_estimatewrites | Create an estimate | estimates:write |
| get_estimate | Get one estimate | estimates:read |
| list_invoices | List invoices | invoices:read |
| create_invoicewrites | Bill a completed estimate | invoices:write |
| get_invoice | Get one invoice | invoices:read |
| get_site_report | Get a site's inventory report | reports:read |
About the ones that write
Four tools change something: they create a customer, a site, an estimate, or an invoice. Each one attaches an idempotency key on your behalf, so a retry after a dropped connection returns the original record instead of making a second one.
create_invoice bills a customer. We would not put that in a chat window by default, and neither should you: leave invoices:write off the key unless you specifically want it, and add it deliberately when you do.
Nothing deletes. There is no tool that removes a record, voids an invoice, or cancels a job, because the API has no such operation.
Which clients work
There are two ways an MCP client can reach us, and which one your client uses decides what you have to set up.
Add it yourself, today
Claude Desktop, Claude Code, Cursor and Codex CLI each connect straight to our hosted endpoint. Nothing to install, nothing to clone, and the key stays in your own config. This works today: use the config above, or in Claude Code run one command. Codex uses one config file for both its desktop app and its CLI, ~/.codex/config.toml, so a single block configures both.
claude mcp add --transport http tree-inventory \
https://app.treeinventory.ai/api/mcp \
--header "Authorization: Bearer tiai_your_key_here"Added by URL, needs sign-in
Connectors added by URL in ChatGPT and on claude.ai connect from the vendor's servers, not your computer. That means the endpoint has to be public HTTPS, and because it is handling one arborist's private book of business it has to know which arborist, which is what OAuth is for.
**ChatGPT requires OAuth and will not accept an API key at all.** claude.ai accepts an OAuth client id and secret under Advanced settings. We are building the authorization server both of them need. Until it exists, use the local option above, which is the same thirteen tools.
Tell us where to send it
If you want to be told when the ChatGPT and claude.ai connectors land, say so at [levi@treeinventory.ai](mailto:levi@treeinventory.ai).