Skip to content
DocsMCP reference

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.

Streamable HTTP/api/mcp8 read · 16 write · 4 prompts
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.

Connection
URL     https://mcp.roomline.app/api/mcp
Header  Authorization: Bearer <your-dedicated-token>
  1. 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.

  2. Choose Read only and create the token

    Use Read and write only when that client needs to create or update records.

  3. 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.

  4. 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.

  5. 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.

Terminal
claude mcp add --transport http roomline https://mcp.roomline.app/api/mcp \
  --header "Authorization: Bearer $ROOMLINE_MCP_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_write

To 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 --build

This 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_statusread

Who is late on rent, and how much is still owed.

ParameterTypeDescription
propertyIdstringLimit to one property. Omit for every property.
dateYYYY-MM-DDEvaluate as of this date. Defaults to today.
monthsinteger · 1–12How 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_boardread

Every bedroom with its status, tenants, rent state and open repairs.

ParameterTypeDescription
propertyIdstringLimit to one property. Omit for every property.
dateYYYY-MM-DDEvaluate 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_upcomingread

Agreements starting or ending, notice dates, walkthroughs and open repairs.

ParameterTypeDescription
propertyIdstringLimit to one property. Omit for every property.
dateYYYY-MM-DDEvaluate as of this date. Defaults to today.
daysinteger · 1–365How far ahead to look. Default 60.

Returns Events sorted by date, each with daysAway. Open maintenance ranked by priority, then age.

roomline_rent_remindersread

Ready-to-send reminders for everyone late or part-paid this month.

ParameterTypeDescription
propertyIdstringLimit to one property. Omit for every property.
dateYYYY-MM-DDEvaluate 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_messagesread

Each tenant’s share of the bills they split, with a message to send.

ParameterTypeDescription
propertyIdstringLimit to one property.
monthYYYY-MMDefaults 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_summaryread

Workspace 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_recordsread

Find records by collection, property or text.

ParameterTypeDescription
collectionrequiredenumproperties, floors, rooms, walls, tenants, leases, parking, maintenance, documents, inspections, rentRules or rentPayments.
propertyIdstringOnly records that belong to this property.
querystring · ≤200Case-insensitive text match anywhere in the record.
offsetintegerWhere to start. Default 0.
limitinteger · 1–100Page size. Default 25.

Returns revision, total, records, and nextOffset (null on the last page).

roomline_get_recordread

Read one complete record and its current revision.

ParameterTypeDescription
collectionrequiredenumAs for roomline_list_records.
idrequiredstringThe 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_paymentwrite

Record rent received outside the bank feed: cash, a check, Zelle, Venmo, an unlinked account.

ParameterTypeDescription
expectedRevisionrequiredintegerThe revision from your most recent read. A stale revision rejects the write.
data.leaseIdrequiredstringThe agreement the rent is for.
data.periodMonthrequiredYYYY-MMThe month the payment settles.
data.amountCentsrequiredintegerAmount in USD cents.
data.paidOnrequiredYYYY-MM-DDThe date it was received.
data.methodrequiredenumcash, cheque (a check), transfer, zelle, venmo, cashapp, paypal, apple_cash, card or other.
data.tenantIdstringWho paid, when a member paid their own share.
data.notestring · ≤500A 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_rentwrite

Start tracking rent for an agreement, like Track rent on the rent ledger.

ParameterTypeDescription
expectedRevisionrequiredintegerThe revision from your most recent read. A stale revision rejects the write.
leaseIdrequiredstringThe agreement to track.
dueDayinteger · 1–31Day of the month rent is due. Defaults to the agreement’s rent due day.
windowDaysinteger · 0–31Days 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_…write

A 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
ParameterTypeDescription
expectedRevisionrequiredintegerThe revision from your most recent read. A stale revision rejects the write.
datacreateobjectThe whole record without an ID. Creating a property also adds a Ground floor.
id changesupdatestring objectOnly 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_inprompt

Late 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_reviewprompt

Who 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_remindersprompt

Draft 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_planprompt

Empty 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.

StateIn the appMeaning
settledPaidThe month’s expected rent has been confirmed or recorded in full.
partialPart paidSome of it is in; the rest is still outstanding.
reviewWaiting on youA bank deposit looks like this rent and is waiting to be confirmed.
pendingNot due yetNothing yet, but the payment window has not closed.
lateLateThe due day and grace period have passed with nothing confirmed or recorded.
offNot trackedNo 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.

You

Who’s late on rent this month?

Assistant

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.

You

Which rooms are empty?

Assistant

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

  1. Find the record

    Call roomline_summary, then list or fetch the record you mean to change.

  2. 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.

  3. Write with the current revision

    Send the intended changes with expectedRevision. On revision_conflict, reread and reassess before retrying.

  4. 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.

CodeWhat to do
revision_conflictThe workspace changed since your read. Reread and reassess before retrying.
not_foundThe property, record or agreement ID does not exist in this workspace.
invalid_operationValidation failed: a missing reference, overlapping agreements, invalid geometry, or similar.
Tool errors
HTTPMeaning
401Missing or invalid token
403Wrong host or origin
404MCP not configured on this deployment
413Request over 256 KB
415Body is not JSON
429More than 120 requests a minute for one workspace; honor Retry-After
Rejected before a tool runs

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.
Last updated Was this helpful?YesNo