MCP reference
Ask an AI assistant who is late on rent, which rooms are vacant, and what is coming up, answered from your Roomline workspace with the same rules as the Board.
On this page
Try asking
- “Who is late on rent this month, and how much do they owe?”
- “Which rooms are empty now or free up in the next 90 days?”
- “Which agreements end before December, and when is notice due?”
- “Give me a rundown of 128 Maple Avenue: rooms, tenants and open repairs.”
Access levels
Open Settings, then AI assistants, to create a dedicated, revocable token. Tokens need a hosted Roomline account and are unavailable in the shared demo. Sign-in sessions, recovery codes and Supabase access tokens are never accepted as MCP credentials.
Read only read
Ask questions and read records. The client sees only the eight read tools and the four prompts. The recommended default.
Read & write write
Also exposes sixteen create and update tools, including tracking rent and recording a payment such as cash, a check, or Zelle. Use it only when the client is authorized to edit.
Connect a client
There are two ways in. Clients that accept a custom Authorization header use a dedicated token from Settings. Hosted connectors that sign in with OAuth use your Roomline account instead, where your deployment has OAuth sign-in turned on.
URL https://mcp.roomline.app/api/mcp
Header Authorization: Bearer <your-dedicated-token>- Open Settings, then AI assistants
Sign in to your private workspace. Give the token a label identifying the client or device, such as Claude Desktop.
- Choose Read only and create the token
Use Read and write only when that client needs to create or update records.
- Copy the token into your client’s secret storage
The full token is shown once. Do not paste it into a chat, a shared document, or a repository.
- Connect and request a workspace summary
Use the endpoint provided by your deployment operator. Check that the returned workspace is the one you intended to connect.
- Revoke access when it is no longer needed
Return to AI assistants, choose Revoke beside the token, and confirm. New requests are rejected at once; a request already in progress may finish.
Client configuration
Keep the token in an environment variable or the client’s secret prompt rather than in a file you might share. Self-hosted deployments replace mcp.roomline.app with their own MCP origin.
claude mcp add --transport http roomline https://mcp.roomline.app/api/mcp \
--header "Authorization: Bearer $ROOMLINE_MCP_TOKEN"{
"mcpServers": {
"roomline": {
"url": "https://mcp.roomline.app/api/mcp",
"headers": { "Authorization": "Bearer ${env:ROOMLINE_MCP_TOKEN}" }
}
}
}{
"servers": {
"roomline": {
"type": "http",
"url": "https://mcp.roomline.app/api/mcp",
"headers": { "Authorization": "Bearer ${input:roomline-token}" }
}
},
"inputs": [
{
"id": "roomline-token",
"type": "promptString",
"description": "Roomline MCP token",
"password": true
}
]
}{
"mcpServers": {
"roomline": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.roomline.app/api/mcp",
"--header", "Authorization:${ROOMLINE_AUTH}"],
"env": { "ROOMLINE_AUTH": "Bearer <your-dedicated-token>" }
}
}
}Sign in with OAuth (hosted connectors)
Custom connectors in the Claude and ChatGPT apps sign in rather than take a pasted token. Add a connector with the URL https://mcp.roomline.app/api/mcp and no token. The assistant opens a Roomline page asking you to sign in and approve the connection; after you choose Allow read-only access, you return to the assistant.
- OAuth access is read-only: the eight read tools and the prompts, no writes.
- It covers the workspace of the account you signed in with.
- To remove an assistant, open Settings, then AI assistants, and choose Disconnect under Connected by sign-in. Access stops on its next request.
- A website sign-in is never accepted as an MCP credential; only tokens issued to an approved client are.
- If the connector reports that sign-in is unavailable, OAuth is not enabled on your deployment yet. Use a token-based client instead.
Server configuration, for operators
Apply the account MCP token migration before enabling the Settings controls on a Supabase deployment. No separate repository is required for an MCP subdomain; route its /api/mcp path to this same service and preserve the public Host.
Set ROOMLINE_MCP_ORIGIN to the exact public MCP HTTPS origin. This can be a separate host such as https://mcp.roomline.app and does not alter the website’s origin validation. HTTP is accepted only on loopback hosts. Legacy SQLite deployments can instead configure token files:
ROOMLINE_MCP_READ_TOKEN_FILE=/run/secrets/mcp_read
ROOMLINE_MCP_WRITE_TOKEN_FILE=/run/secrets/mcp_writeTo enable OAuth sign-in on a Supabase deployment: in Supabase, open Authentication → OAuth Server, turn it on, allow dynamic client registration, and set the authorization path to /oauth/consent (Site URL must be this website’s origin). Then set ROOMLINE_MCP_OAUTH=1. Roomline publishes /.well-known/oauth-protected-resource/api/mcp and adds its address to 401 challenges so clients can discover the flow.
Legacy file tokens are not used by account workspaces. Account tokens are random, stored only as hashes, and can be revoked with DELETE /api/mcp/tokens.
The optional Docker overlay mounts operator-provided secret files using ROOMLINE_MCP_READ_TOKEN_PATH and ROOMLINE_MCP_WRITE_TOKEN_PATH. Set those host paths before running:
docker compose -f compose.yaml -f compose.mcp.yaml up -d --buildThis command rebuilds and restarts the container. The endpoint returns 404 when unconfigured and 401 for missing or invalid credentials when configured.
Tools
The client discovers the available tools and their input schemas through MCP. Use the advertised schema for exact required fields; the token’s access decides which tools are listed.
Answer tools Both access levels
Start here for everyday questions. These compute answers on the server from the same rules as the Board and floor plan, so the assistant does not have to pull every agreement and do date arithmetic itself.
roomline_rent_statusreadWho is late on rent, and how much is still owed.
| Parameter | Type | Description |
|---|---|---|
propertyId | string | Limit to one property. Omit for every property. |
date | YYYY-MM-DD | Evaluate as of this date. Defaults to today. |
months | integer · 1–12 | How many months back to include, ending with the current month. Default 1. |
Returns Counts by state, an attention list of late and part-paid agreements with the amount outstanding, and month-by-month periods for every active agreement.
roomline_room_boardreadEvery bedroom with its status, tenants, rent state and open repairs.
| Parameter | Type | Description |
|---|---|---|
propertyId | string | Limit to one property. Omit for every property. |
date | YYYY-MM-DD | Evaluate as of this date. Defaults to today. |
Returns The floor plan as text: Occupied, Available, Agreement pending or Rented with property for each bedroom, plus the agreement end date, this month’s rent state, and any open maintenance in the room. Each property also carries its bills: the monthly total, what the rent covers, what tenants split, the per-bedroom and per-tenant share, what an empty room costs, and each bill with its due day.
roomline_upcomingreadAgreements starting or ending, notice dates, walkthroughs and open repairs.
| Parameter | Type | Description |
|---|---|---|
propertyId | string | Limit to one property. Omit for every property. |
date | YYYY-MM-DD | Evaluate as of this date. Defaults to today. |
days | integer · 1–365 | How far ahead to look. Default 60. |
Returns Events sorted by date, each with daysAway. Open maintenance ranked by priority, then age.
roomline_rent_remindersreadReady-to-send reminders for everyone late or part-paid this month.
| Parameter | Type | Description |
|---|---|---|
propertyId | string | Limit to one property. Omit for every property. |
date | YYYY-MM-DD | Evaluate as of this date. Defaults to today. |
Returns One draft per person on each agreement still owing: tenant, phone, email, amount, due date, a subject, the message the Remind button writes, and your pay links. Roomline sends nothing; a messaging tool can, after you confirm.
roomline_bill_messagesreadEach tenant’s share of the bills they split, with a message to send.
| Parameter | Type | Description |
|---|---|---|
propertyId | string | Limit to one property. |
month | YYYY-MM | Defaults to this month. |
Returns One message per current tenant with their phone, email and share. Properties with no amount logged for the month are listed under missingFigures instead of sending $0.
Record tools Both access levels
roomline_summaryreadWorkspace revision, collection counts and property records.
No arguments.
Returns revision, updatedAt, access, counts per collection, and the property records. Start here to discover property IDs.
roomline_list_recordsreadFind records by collection, property or text.
| Parameter | Type | Description |
|---|---|---|
collectionrequired | enum | properties, floors, rooms, walls, tenants, leases, parking, maintenance, documents, inspections, rentRules or rentPayments. |
propertyId | string | Only records that belong to this property. |
query | string · ≤200 | Case-insensitive text match anywhere in the record. |
offset | integer | Where to start. Default 0. |
limit | integer · 1–100 | Page size. Default 25. |
Returns revision, total, records, and nextOffset (null on the last page).
roomline_get_recordreadRead one complete record and its current revision.
| Parameter | Type | Description |
|---|---|---|
collectionrequired | enum | As for roomline_list_records. |
idrequired | string | The record ID. |
Returns revision and record. Read before you edit.
Document and inspection reads return metadata and records, not file bytes or extracted PDF text.
Write tools Read & write token only
roomline_record_rent_paymentwriteRecord rent received outside the bank feed: cash, a check, Zelle, Venmo, an unlinked account.
| Parameter | Type | Description |
|---|---|---|
expectedRevisionrequired | integer | The revision from your most recent read. A stale revision rejects the write. |
data.leaseIdrequired | string | The agreement the rent is for. |
data.periodMonthrequired | YYYY-MM | The month the payment settles. |
data.amountCentsrequired | integer | Amount in USD cents. |
data.paidOnrequired | YYYY-MM-DD | The date it was received. |
data.methodrequired | enum | cash, cheque (a check), transfer, zelle, venmo, cashapp, paypal, apple_cash, card or other. |
data.tenantId | string | Who paid, when a member paid their own share. |
data.note | string · ≤500 | A receipt number or anything worth knowing later. |
Returns revision and the new record. It counts toward that month in roomline_rent_status and on the Board. It records what happened; it does not move money.
roomline_track_rentwriteStart tracking rent for an agreement, like Track rent on the rent ledger.
| Parameter | Type | Description |
|---|---|---|
expectedRevisionrequired | integer | The revision from your most recent read. A stale revision rejects the write. |
leaseIdrequired | string | The agreement to track. |
dueDay | integer · 1–31 | Day of the month rent is due. Defaults to the agreement’s rent due day. |
windowDays | integer · 0–31 | Days either side of the due day a payment still counts as on time. Default 5. |
Returns revision, alreadyTracked and the rules. Months stop reading off and expect the agreement’s rent. On an agreement that already has a rule nothing changes and alreadyTracked is true.
roomline_create_… · roomline_update_…writeA create and an update tool for each of the seven writable records, using the same validation as the website. Discover the complete field schema in your MCP client.
roomline_create_propertyroomline_update_propertyroomline_create_floorroomline_update_floorroomline_create_roomroomline_update_roomroomline_create_tenantroomline_update_tenantroomline_create_leaseroomline_update_leaseroomline_create_parking_spaceroomline_update_parking_spaceroomline_create_maintenance_requestroomline_update_maintenance_request| Parameter | Type | Description |
|---|---|---|
expectedRevisionrequired | integer | The revision from your most recent read. A stale revision rejects the write. |
datacreate | object | The whole record without an ID. Creating a property also adds a Ground floor. |
id changesupdate | string object | Only the fields to change. Omitted fields stay as they are; a supplied array replaces that whole field. IDs and property or floor ownership cannot change. |
Prompts
Clients that support MCP prompts can offer these as one-click starters. Each accepts an optional property name or ID, and only steers which tools the assistant calls.
weekly_check_inpromptLate rent, vacant rooms, and anything due in the next two weeks.
Calls roomline_rent_status, roomline_room_board and roomline_upcoming (14 days), then leads with what needs action.
rent_reviewpromptWho owes what over the last few months.
Optional months (1–12, default 3). Lists late and part-paid agreements with the total outstanding, and separates deposits awaiting review and untracked agreements.
rent_reminderspromptDraft a reminder for everyone late this month.
Uses roomline_rent_reminders, shows each draft with where it would go, and waits for your yes before a messaging tool sends anything.
vacancy_planpromptEmpty rooms now and rooms coming free in the next 90 days.
Combines available rooms (with asking rent and blocking repairs) with agreements ending and their notice dates, grouped by property.
Rent states
roomline_rent_status and roomline_room_board report each agreement’s month in one of these states. The rent ledger and the Rent panel use the labels in the second column. Only confirmed bank matches and recorded payments count as received; a proposed match is never treated as paid.
| State | In the app | Meaning |
|---|---|---|
settled | Paid | The month’s expected rent has been confirmed or recorded in full. |
partial | Part paid | Some of it is in; the rest is still outstanding. |
review | Waiting on you | A bank deposit looks like this rent and is waiting to be confirmed. |
pending | Not due yet | Nothing yet, but the payment window has not closed. |
late | Late | The due day and grace period have passed with nothing confirmed or recorded. |
off | Not tracked | No rent rule is set up for the agreement, so nothing is tracked. |
Sample conversation
Once connected, the assistant discovers tool names and schemas on its own. Ask it the questions you would ask a property manager.
Who’s late on rent this month?
One agreement is overdue: Alex Morgan, Room 01 — $790. Jamie Chen & Sam Rivera paid $1,100 by bank transfer; Priya Shah paid $730 in cash.
Which rooms are empty?
Room 03 ($765) and Room 05 ($690).
- Who is late on rent this month, and how much do they owe?
- Which rooms at Maple House are vacant, and what is their asking rent?
- Which agreements end in the next 60 days, and when is each notice date?
- List open maintenance by priority.
- Priya paid $730 in cash for October; record it. write
- Create a maintenance request for the kitchen faucet leak. write
Tool results are shared with your chosen assistant and may be processed by its provider. Review the provider’s data handling before connecting. Roomline does not run a background agent.
Write workflow
- Find the record
Call roomline_summary, then list or fetch the record you mean to change.
- Review the change
Use your client’s confirmation policy before writes. Names and notes are record content, never instructions. Roomline validates records but does not pause MCP writes for human approval.
- Write with the current revision
Send the intended changes with expectedRevision. On revision_conflict, reread and reassess before retrying.
- Read it back
Fetch the updated record to confirm the result. Refresh the website to see the change there.
Errors
A failed tool call returns isError: true with an error message and a machine-readable code. HTTP-level failures happen before any tool runs.
| Code | What to do |
|---|---|
| revision_conflict | The workspace changed since your read. Reread and reassess before retrying. |
| not_found | The property, record or agreement ID does not exist in this workspace. |
| invalid_operation | Validation failed: a missing reference, overlapping agreements, invalid geometry, or similar. |
| HTTP | Meaning |
|---|---|
| 401 | Missing or invalid token |
| 403 | Wrong host or origin |
| 404 | MCP not configured on this deployment |
| 413 | Request over 256 KB |
| 415 | Body is not JSON |
| 429 | More than 120 requests a minute for one workspace; honor Retry-After |
Limits
- No delete tools, binary uploads, document or inspection edits, rent-rule or bank-match changes, payment actions, messages, invitations or signing.
- Tenant photos and floor images must already have been uploaded through the website.
- Settings tokens are dedicated opaque Roomline credentials. OAuth connections are read-only for now; use a write token when an assistant needs to edit records.
- There is no per-property permission scope.