buildium-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BUILDIUM_RUN_LOG | No | Path to the request audit log. Set to 'off' to disable. Default is platform state dir/run.log. | |
| BUILDIUM_BASE_URL | No | Base URL for the Buildium API. Required for production modes. Default is the sandbox URL. | |
| BUILDIUM_ENV_FILE | No | Path to a .env file to load (optional). | |
| BUILDIUM_CLIENT_ID | Yes | Buildium client ID. Create an API key under Settings → Developer Tools. | |
| BUILDIUM_STATE_DIR | No | Directory for state files such as run.log. Optional override. | |
| BUILDIUM_CONFIG_DIR | No | Directory containing .env file (optional). | |
| BUILDIUM_WRITE_MODE | No | Write safety mode. One of: fixtures (default) or open. | fixtures |
| BUILDIUM_ARTIFACT_LOG | No | Path to created-records.log. Set to 'off' to disable. | |
| BUILDIUM_CLIENT_SECRET | Yes | Buildium client secret. | |
| BUILDIUM_DEPLOYMENT_MODE | No | Deployment mode. One of: sandbox (default), production-readonly, production-readonly-files, production-write. | sandbox |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| buildium_healthA | Report which Buildium environment this server is bound to (sandbox, production read-only, production read-only with file downloads, or production with writes), the active write mode, how many operations are indexed, where downloads go, and — if the server is not configured — exactly what to set. Only needed before a WRITE, when the environment is genuinely in doubt, or when another tool reports a startup problem. Read-only questions do not require it. |
| buildium_list_tagsA | List every resource area in the Buildium API with its operation count (Leases, Work Orders, General Ledger, ...). Use this to orient before searching. |
| buildium_search_endpointsA | Find Buildium API endpoints by keyword. Searches paths, summaries, tags, and operation IDs across all 462 operations. Start here when you don't already know the exact path. |
| buildium_describe_endpointA | Show the full contract for one endpoint: parameters, request body schema, and success response schema, with $refs resolved. Call this before buildium_call_endpoint on anything non-trivial — especially writes, where the body schema tells you which fields are required. |
| buildium_describe_schemaA | Expand a named schema from the spec. Useful when buildium_describe_endpoint hit its depth limit and emitted a bare $ref. |
| buildium_getA | Read any Buildium endpoint (GET). Cannot change anything. Use this for every read that has no curated shortcut. It is a separate tool from buildium_call_endpoint so that a client can approve reads once and still ask about each write. |
| buildium_call_endpointA | Call any Buildium endpoint: the tool for writes. For reads use buildium_get, which is read-only and so can be approved once. Write guardrails apply — see buildium_health for the active mode. In the default 'fixtures' mode, every name in a create payload must carry the fixture prefix, nested ones included; a create whose payload has no name field at all is allowed against the sandbox but refused against production, since nothing on it could carry the prefix. Updates and deletes only work on records created this session, and off the sandbox so do creates under an existing record, such as a lease renewal. |
| buildium_created_fixturesA | List records created during this session, grouped by collection. These are the only records that updates and deletes are permitted against in 'fixtures' mode. Also appended to created-records.log (see buildium_health for the path) so they can be cleaned up after the process is gone. |
| buildium_upload_fileA | Upload a local file to Buildium, handling both steps of its upload flow. Bytes do not travel through the Buildium API. Buildium issues a short-lived AWS presigned PUT URL, and the file is sent there directly. Doing that by hand with buildium_call_endpoint does not work — it would post the metadata and hand you a URL it cannot then PUT to. Use this instead. |
| buildium_download_fileA | Download a Buildium file to this machine, handling both steps. Buildium issues a download URL that expires after five minutes and serves the bytes from separate storage, so this cannot be done with buildium_get. Files are written only inside the download folder — ~/Downloads/Buildium unless BUILDIUM_DOWNLOAD_DIR moves it; buildium_health reports where. An existing file is never replaced unless overwrite is true. Note this is refused when the server runs in production-readonly mode: Buildium models a download request as a POST, and that mode blocks every POST at the transport layer without exception. Reading file metadata via GET /v1/files/{id} still works. |
| buildium_list_rentalsB | List rental properties. Pass To count, use count_only; for totals, all_pages. |
| buildium_get_rentalA | Get one rental property by ID. |
| buildium_list_unitsA | List rental units, optionally filtered to one property. To count, use count_only; for totals, all_pages. |
| buildium_list_leasesA | List leases. Each row already carries the rent terms under For who is on each lease, use buildium_lease_roster. To count, use count_only; for totals, all_pages. |
| buildium_get_leaseA | Get one lease by ID, including tenants and rent terms. |
| buildium_list_lease_transactionsA | List financial transactions (posted charges and payments) for a lease. For the lease's recurring rent amount use buildium_list_leases instead — it is already on every row under AccountDetails.Rent. Set all_pages=true when totalling a ledger, and count_only=true to learn only how many transactions there are. |
| buildium_list_work_ordersA | List work orders (maintenance jobs). To count, use count_only; for totals, all_pages. |
| buildium_list_tenantsA | List rental tenants. To count, use count_only; for totals, all_pages. |
| buildium_lease_rosterA | Who is on which lease — the lease-to-tenant join, done in one call. Use this for any "who lives in / who is on lease X" question, and for counting co-tenants. Buildium makes this awkward: the lease list does not reliably populate tenant names, and the tenant endpoint has no lease filter — so answering it directly means pulling every lease one at a time. Tenant records do carry their lease membership, so this reads them and inverts the mapping locally. Every matching tenant is read, following pagination; |
| buildium_list_gl_accountsA | List general ledger accounts. You need these IDs to post rent charges and other financial transactions. To count, use count_only; for totals, all_pages. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
Each tool targets a distinct resource or action: list_* vs get_* for different entities, plus specialized tools for uploads, downloads, schema, health, and session tracking. The generic get/call_endpoint are clearly separated by read vs write, and meta-tools (search, describe, health) are unambiguous.
All tools share the buildium_ prefix, and most follow a verb_noun pattern (list_X, get_X). Minor deviations like health, search_endpoints, describe_endpoint, describe_schema, upload_file, download_file, created_fixtures, and lease_roster are still readable and consistent in style, though not all are strict verb_noun. The pattern is predictable enough.
20 tools is slightly above the typical well-scoped range but justified given the broad Buildium API. The set includes curated shortcuts for common resources, generic get/call endpoints, and meta-tools for navigation, making each tool purposeful. It's not excessive for the domain complexity.
The tool set covers the main read operations for rentals, units, leases, tenants, work orders, GL accounts, and transactions, plus file transfer. Writes are handled generically via buildium_call_endpoint, and meta-tools provide schema/endpoint discovery. There are no obvious dead ends; any missing operation can be reached through the generic endpoint.