Skip to main content
Glama
blackwaxxx

buildium-mcp

by blackwaxxx

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
BUILDIUM_RUN_LOGNoPath to the request audit log. Set to 'off' to disable. Default is platform state dir/run.log.
BUILDIUM_BASE_URLNoBase URL for the Buildium API. Required for production modes. Default is the sandbox URL.
BUILDIUM_ENV_FILENoPath to a .env file to load (optional).
BUILDIUM_CLIENT_IDYesBuildium client ID. Create an API key under Settings → Developer Tools.
BUILDIUM_STATE_DIRNoDirectory for state files such as run.log. Optional override.
BUILDIUM_CONFIG_DIRNoDirectory containing .env file (optional).
BUILDIUM_WRITE_MODENoWrite safety mode. One of: fixtures (default) or open.fixtures
BUILDIUM_ARTIFACT_LOGNoPath to created-records.log. Set to 'off' to disable.
BUILDIUM_CLIENT_SECRETYesBuildium client secret.
BUILDIUM_DEPLOYMENT_MODENoDeployment 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

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 fields to narrow large records.

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 AccountDetails (including AccountDetails.Rent, the recurring monthly amount) and the lease dates. You do NOT need to open the transaction ledger to read a lease's rent — buildium_list_lease_transactions is for actual posted charges and payments, which is a different question.

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; complete says whether that covered them all. Above 300 leases only the counts are returned (multi_tenant_lease_count and friends); narrow with property_id or lease_id for lease ids and names.

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 20 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness5/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues