Titleman
Vermittlerbewertungen zu Wert, Vergleichsobjekten, Underwriting, Käuferlisten und Titeldue-Diligence für jede Gewerbeimmobilie, aus dem Chat.
Gehosteter MCP-Server
npx add-mcp 'https://titleman.ai/_mcp/titleman'Installiert in Claude Code, Codex, Cursor und mehr
Dokumentation
Titleman connector
Titleman is an AI analyst for commercial real estate. This connector puts it inside the assistant you already use: you ask for a BOV, comparables or an underwriting by address, Titleman runs it, and the finished report comes back in the conversation. It speaks the Model Context Protocol, so one server serves Claude, ChatGPT, Copilot Studio, Slack and Zapier alike.
What you need
- A Titleman account — sign in, or request a demo if your firm does not have one yet. The connector runs reports as you, against your own workspace.
- An assistant that supports remote MCP servers (Claude on web, desktop or Claude Code; ChatGPT with apps enabled).
Running a report consumes Titleman credits, exactly as it does in the web app. The read-only tools below are free.
Install it in Slack
Slackbot is an MCP client, so there is no bot to add and no slash command to learn — you ask Slackbot, and it calls Titleman.
- Press Add to Slack and approve the one permission the app asks for,
mcp:connect. It reads no messages, no channels, no files and no profiles. - Ask Slackbot for something — "Ask Titleman for a BOV on 1101 N Arthur Ashe Blvd, Richmond VA". The first time, Slackbot sends you to titleman.ai to connect your own Titleman account. Everyone in the workspace connects their own; nobody sees a colleague's reports.
- The report comes back in the conversation, and the full interactive document waits for you at titleman.ai.
A workspace admin may need to approve the app first, depending on your Slack settings.
Connect it in Claude or ChatGPT
- In your assistant, open its connector settings and choose to add a custom or remote MCP server.
- Paste the server URL:
https://titleman.ai/_mcp/titleman - Your browser opens titleman.ai and asks you to sign in with your Titleman account (accounts are opened for firms — no account yet? request a demo), then shows exactly what the assistant is asking for. Approve it.
- You land back in the assistant with the connector live. Start with what is free — "What comparables does Titleman already have for 1101 N Arthur Ashe Blvd, Richmond VA?" — and it calls
comps, which starts nothing.zoning_envelopeis free too; where Titleman has nothing on file for a parcel, it says so rather than guessing. Ask for a report — "Run a BOV on that address" — and it callscreate_bov, which spends credits, so the assistant should confirm with you first, then polls until the report is ready.
In ChatGPT, deep research and company knowledge read your Titleman reports through search and fetch once the connector is added.
Add it to an agent in Microsoft Copilot Studio
- In Copilot Studio, open your agent's Tools page and choose Add a tool → New tool → Model Context Protocol.
- Name it Titleman, describe it (for example, commercial real estate reports, comps and underwriting from my Titleman account) and paste the server URL:
https://titleman.ai/_mcp/titleman - For authentication pick OAuth 2.0 → Dynamic discovery and create the tool — Copilot Studio registers itself with Titleman on its own, no client ID or secret to copy.
- Create the connection: you sign in to titleman.ai and approve, exactly as above. Tools that start a report are marked (paid) — they spend your Titleman credits.
Use it in Zapier
Titleman is a Zapier integration, so a report can be the step in a workflow rather than something you ask for. Add the Titleman app to a Zap, connect your account through the same OAuth screen, and pick an action — Start BOV Report takes a property address and returns the room_id and the report link straight away, ready to pass to the next step.
How it authenticates
OAuth 2.1 with PKCE (S256) — no keys to copy, nothing to paste. The server publishes standard discovery documents, so a compliant client finds everything on its own:
/.well-known/oauth-authorization-server/.well-known/oauth-protected-resource/_mcp/titleman
A client identifies itself in whichever of the three ways it prefers:
- Client ID Metadata Document — the
client_idis an https URL serving the client's own metadata, which we fetch and validate. Nothing is registered, and this is the mode Claude recommends. - Dynamic client registration (RFC 7591) at
/oauth/register. Clients register as public by default and are held up by PKCE alone. - Confidential registration, for clients that require a secret at the token endpoint — ask for
client_secret_postorclient_secret_basicat registration and one is issued. Microsoft 365 agent connectors need this.
PKCE is required of every client, secret or not. OAuth 2.1 and the MCP specification both ask for it, and holding a secret does not buy an exemption from it.
Two scopes are requested: reports (start and read your analyses) and portfolio (list the properties in your workspace). Access tokens last 30 days and refresh silently.
Protocol
One endpoint, https://titleman.ai/_mcp/titleman, over Streamable HTTP. Every message is its own POST and is answered with JSON; the server keeps no session between requests.
- MCP 2024-11-05 to 2025-11-25 — the
initializehandshake; the server answers in the version the client asks for. - MCP 2026-07-28 — no handshake:
server/discoverand requests that carry their version and capabilities in_metaare answered as they come. - Every request carries
Authorization: Bearer. Without a valid token the answer is 401 with aWWW-Authenticateheader naming the resource metadata above and the scopes to ask for (scope="reports portfolio"); a token that was sent and refused addserror="invalid_token", so a client knows to refresh or sign in again. - A JSON-RPC batch is accepted up to 10 messages; a longer one is refused whole.
- There is no server-to-client stream and no session to end: a GET with a valid token, and any DELETE, is answered 405 with
Allow: POST.
Tools
Read-only
Annotated readOnlyHint: true. They never change anything, so most clients let them run without asking each time.
| Tool | Title | What it returns |
|---|---|---|
list_reports | List recent reports | Your recent analyses: room_id, title, product, report_type (which report it is: bov_scale, plays, comps, …; empty until a run is planned), state and a link to the full report; a report that waits for your answer in Titleman is marked needs_person — and, where your team shares reports, colleagues' shared ones as team_reports. |
get_report | Get a finished report | One report by room_id: its state, saved versions and link — and its disclosed figures, each with its status and evidence, a page at a time. |
get_report_status | Check report status | Where a running analysis has got to — by room_id or the report's Titleman link. A report that waits for your answer says needs_person: answer it in Titleman, the connector cannot. |
list_properties | List portfolio properties | The properties in your Titleman portfolio. |
get_property | Get a portfolio property | One property you own: address, asset type, units, lease count. |
zoning_envelope | Zoning envelope for a parcel | What can be built on a parcel: zone, lot area, base and conditional FAR — or FAR by use where the ordinance states it that way (New York City) — floor area and the ordinance section, or MISSING with what would close it. Starts nothing. |
comps | Comparables on file for a property | The comparables Titleman already holds for an address — direct, indirect, own supply, and rejected ones with the reason — up to 20 of each kind per answer (limit, at most 50) and how many are on file. Where on file, each figure (price, $/SF or $/unit, rent, cap rate, vacancy, last recorded sale) carries its own source, and its as-of date where one is known; a figure from a client document says its source is withheld. Starts nothing. |
underwriting_model | Underwriting model of a report | The saved underwriting model of one of your Underwriting or Value Opinion reports, with the source and status of every value. Other reports save none, and the answer says so and how to get one. |
ask_deal_room | Ask your deal documents | Passages from your own deal documents that answer a question, each cited to its document and page (or sheet and cell) — or “not in the deal room documents”. On accounts where Deal Room is switched on. |
ask_titleman | Ask Titleman | An answer about your own work in Titleman — deals, finished runs, portfolio, a property or a market. A figure the assistant can tie to exactly one of your runs' stored facts comes cited with its status and evidence; any other figure is not confirmed, and when an answer has figures but none could be cited it names the report to read with get_report for their status and evidence. Starts nothing: if a question needs a new run, the answer names the product that would answer it. Up to 30 questions an hour. |
search | Search your reports | Your reports, and ones your team shared with you, matching words in their title or in the request that started them (either often names the address) — at most 20, each with an id, title and link. Used by ChatGPT deep research and company knowledge. |
fetch | Fetch a report | One report by the id search returned: its disclosed figures with their status and evidence, and its link. |
list_workflows | List your workflows | Your saved workflows and the ones your team shared with you — the workflow_id run_workflow takes, the name, each step (kind and product) and your latest run of it (last_run, for workflow_run). Starts and charges nothing. |
workflow_run | Status and contract of a workflow run | One of your workflow runs by the run_id run_workflow returned or list_workflows' last_run: its status, each step with the report it started (read it with get_report), what it waits for and why a step failed, which of the contract's questions are answered or still open and why, and what its paid steps have charged so far. Starts and charges nothing. |
Write
These start a real analysis and spend credits. They are asynchronous: each returns a room_id immediately, and the assistant polls get_report_status before reading the result (run_workflow returns a run_id). None of them delete or overwrite anything.
| Tool | Title | What it starts |
|---|---|---|
create_bov | Start BOV (Broker Opinion of Value) report (paid) | A value opinion for one address. |
create_comps | Start comparables (COMPS) report (paid) | Comparable properties on the market now, with asking terms. |
create_underwriting | Start underwriting analysis (paid) | Income, expenses, debt, IRR and sensitivity. |
create_best_use | Start highest-and-best-use analysis (paid) | What a site you already own should become. |
create_buyer_list | Start buyer list analysis (paid) | The ranked universe of likely buyers for an asset. |
create_dd | Start title & legal due diligence (paid) | Title, ownership chain and encumbrances on the property itself. |
find_properties | Find properties matching criteria (paid) | A shortlist of specific buildings in a place, from free-text criteria. |
run_workflow | Run a workflow (paid, budgeted) | One of your saved workflows (list_workflows names them). The first call only returns the estimated charge (what you would be billed; each product at its 90th-percentile cost — nine runs in ten cost no more, one can cost more); it starts with confirm: true and an estimate within your max_usd (at most $50). A step whose estimate would pass the budget is not started, but a step already running is not stopped, so the final charge can exceed max_usd. If the workflow needs input its first steps cannot run without (a street address, or Scout's wish and area), the estimate names it as needs_input and nothing is started. |
Ready-made prompts
Claude Desktop and Claude Code list these as commands, so you can start without knowing a tool name. Each one begins with the free reads above and starts nothing paid without your yes.
| Prompt | Asks for | What it does |
|---|---|---|
property_brief | an address | What Titleman already knows about it — comps, zoning and your own reports on it — every figure with its status and evidence; starts nothing paid. |
summarize_report | a report (optional) | The conclusion of one of your reports and the figures it rests on, each with its status and evidence; the newest report if you name none. |
value_check | an address | The value from a finished report of yours if there is one; otherwise the comparables on file, and it asks you before starting a paid BOV. |
What the connector can and cannot see
- Every tool is scoped to the account that approved it. It reads your reports, your deals, your portfolio and your deal documents — and, where your organization shares reports within the team, the ones colleagues chose to share, as the web app shows them — and nothing else belonging to anyone; zoning and comparables come from Titleman's own property data.
- It does not read your conversation history, your assistant's memory, or files you have not passed to a tool.
- For each tool call Titleman records which tool ran, when, how long it took and whether it succeeded — not your question or its answer. For each connection it records the application's name, a one-way fingerprint of its identifier, the scopes and the time; the tokens themselves are not stored.
- It moves no money and makes no purchases.
- Report content is stored in your Titleman workspace exactly as if you had run it in the web app, under the Privacy Policy and the Data Processing Addendum.
Revoke access
Open titleman.ai/mcp and press Revoke. That cuts off every grant and every token the account holds at once, server-side and immediately — not merely letting them expire — so it works even though the assistant never showed you a token to hand back. Removing the connector on the assistant's side stops that assistant using it, but only Revoke ends the grant here.
Titleman is not a broker, appraiser or law firm. Outputs are drafts for a licensed professional to review and sign.