# io.usefulapi/buildium (remote · buildium.usefulapi.io)

Read Buildium properties, units, leases, tenants, balances and bills; manage work orders.

- Trust score: 75/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-04

## Components

- remote · `buildium.usefulapi.io`: 75/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-buildium/buildium.md), [page](https://verifymcp.io/servers/io-usefulapi-buildium/buildium)

## Channel facts

- Endpoint: `https://buildium.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-04.

- **Endpoint Security**: 89/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 63/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 4907 tokens (~213/item across 23 items; 23 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 13/100
  - Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 23 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 23 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the io.usefulapi/buildium MCP server?

io.usefulapi/buildium is a hosted endpoint at https://buildium.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-buildium 'https://buildium.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-buildium": {
      "url": "https://buildium.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-buildium": {
      "type": "http",
      "url": "https://buildium.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-buildium]
url = "https://buildium.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-buildium": {
      "type": "remote",
      "url": "https://buildium.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-buildium --url 'https://buildium.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-buildium:
    url: "https://buildium.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-buildium": {
      "Transport": "http",
      "Url": "https://buildium.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-buildium -t streamable-http -u 'https://buildium.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-buildium": {
      "type": "http",
      "url": "https://buildium.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-04 (score 75, +3)

- [security improvement] Authorization: fail → pass

### 2026-10-03 (score 72, +39)

- [security regression] Authorization: unverified → fail
- [security improvement] Injection markers: unverified → pass
- [functional regression] MCP protocol: unverified → fail
- [functional improvement] Endpoint reachability: behind authorisation → reachable
- [functional improvement] Stability: unverified → 0.10
- [functional improvement] Tool coverage: unverified → 100
- [functional] Server version: 1.0.0 → 1.5.1

### 2026-10-01 (score 33, −36)

- [security regression] Endpoint reachability: reachable → behind authorisation
- [security regression] Authorization: pass → unverified
- [security regression] Tool safety: pass → unverified
- [security improvement] HTTPS: unverified → pass
- [functional regression] Capabilities: fail → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] Schema quality: Schema blocked by authentication: the endpoint requires auth we don't have to read it.

### 2026-09-30 (score 69, +51)

- [security improvement] Authorization: unverified → pass
- [security improvement] Injection markers: unverified → pass
- [security improvement] Transport: fail → pass
- [security] First check of Judged manipulation: pass
- [security] First check of Authorization: partial
- [functional regression] MCP protocol: unverified → fail
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: excellent
- [functional] First check of Destructive annotations: pass
- [functional] First check of Schema quality: fail
- [functional] First check of Tool coverage: 100

### 2026-09-29 (score 18)

First indexed and scored.

## MCP tools (23)

### `buildium_list_rental_properties` (~264 tokens)

List rental properties

List rental properties (buildings) with address, unit count, type/subtype and manager. Filter by location (city/state contains), type, subtype, status, rental owner or property ids. Buildium: GET /v1/rentals.

Input parameters:

- `last_updated_from` (string): Updated on or after — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `last_updated_to` (string): Updated on or before — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `limit` (integer): Max results, 1-1000 (Buildium default 50).
- `location` (string): City or state contains this value.
- `offset` (integer): Zero-based record offset for paging (default 0).
- `orderby` (string): Sort, e.g. "Name", "LeaseToDate desc" or "Rent desc,City asc". Any field of the returned object.
- `property_ids` (array): Filter to these property ids.
- `rental_owner_ids` (array): Filter to these rental owner ids.
- `status` (string): Property status (both if omitted).
- `subtypes` (array): Rental subtypes.
- `types` (array): Rental types.

### `buildium_get_rental_property` (~45 tokens)

Get a rental property

Fetch one rental property by id. Buildium: GET /v1/rentals/{propertyId}.

Input parameters:

- `property_id` (integer, required): The rental property id.

### `buildium_list_rental_units` (~195 tokens)

List rental units

List rental units with unit number, bedrooms/bathrooms, size, market rent and whether each unit is listed or occupied. Filter by property. Buildium: GET /v1/rentals/units.

Input parameters:

- `last_updated_from` (string): Updated on or after — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `last_updated_to` (string): Updated on or before — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `limit` (integer): Max results, 1-1000 (Buildium default 50).
- `offset` (integer): Zero-based record offset for paging (default 0).
- `orderby` (string): Sort, e.g. "Name", "LeaseToDate desc" or "Rent desc,City asc". Any field of the returned object.
- `property_ids` (array): Filter to these property ids.

### `buildium_get_rental_unit` (~47 tokens)

Get a rental unit

Fetch one rental unit by id. Buildium: GET /v1/rentals/units/{unitId}.

Input parameters:

- `unit_id` (integer, required): The rental unit id.

### `buildium_list_rental_owners` (~245 tokens)

List rental owners

List rental owners (the landlords you manage for) with contact details, management-agreement dates and the property ids they own. Buildium: GET /v1/rentals/owners.

Input parameters:

- `agreement_days_remaining` (integer): Days remaining on the management agreement.
- `last_updated_from` (string): Updated on or after — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `last_updated_to` (string): Updated on or before — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `limit` (integer): Max results, 1-1000 (Buildium default 50).
- `offset` (integer): Zero-based record offset for paging (default 0).
- `orderby` (string): Sort, e.g. "Name", "LeaseToDate desc" or "Rent desc,City asc". Any field of the returned object.
- `owner_name` (string): Owner name contains this value.
- `phone` (string): Phone number contains this value.
- `property_ids` (array): Filter to these property ids.
- `status` (string): Owner status (both if omitted).

### `buildium_list_leases` (~358 tokens)

List leases

List leases with unit, dates, lease type/status, current tenants, rent/deposit account details and eviction flag. Filter by property, owner, unit number, tenant name, dates, lease type or status (Active/Past/Future). Buildium: GET /v1/leases.

Input parameters:

- `created_from` (string): Created on or after — YYYY-MM-DD HH:MM:SS.
- `created_to` (string): Created on or before — YYYY-MM-DD HH:MM:SS.
- `last_updated_from` (string): Updated on or after — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `last_updated_to` (string): Updated on or before — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `lease_date_from` (string): Lease start date on or after — formatted YYYY-MM-DD.
- `lease_date_to` (string): Lease end date on or before — formatted YYYY-MM-DD.
- `lease_statuses` (array): Lease term statuses.
- `lease_types` (array): Lease types.
- `limit` (integer): Max results, 1-1000 (Buildium default 50).
- `offset` (integer): Zero-based record offset for paging (default 0).
- `orderby` (string): Sort, e.g. "Name", "LeaseToDate desc" or "Rent desc,City asc". Any field of the returned object.
- `property_ids` (array): Filter to these property ids.
- `rental_owner_ids` (array): Filter to these rental owner ids.
- `tenant_name` (string): A current tenant's name contains this value.
- `unit_number` (string): Unit number contains this value.

### `buildium_get_lease` (~55 tokens)

Get a lease

Fetch one lease by id, including tenants, cosigners, account details and move-out data. Buildium: GET /v1/leases/{leaseId}.

Input parameters:

- `lease_id` (integer, required): The lease id.

### `buildium_list_outstanding_balances` (~258 tokens)

List lease outstanding balances

Delinquency report: leases that owe money, with aged buckets (0-30, 31-60, 61-90, 90+ days), total balance, past-due-email and eviction-pending dates. Leases with zero or credit balances are not returned. Buildium: GET /v1/leases/outstandingbalances.

Input parameters:

- `balance_duration` (string): Only leases with a balance in this aging bucket.
- `entity_id` (integer): Property or rental owner id (per entity_type).
- `entity_type` (string): Scope by entity type; required with entity_id.
- `eviction_status` (string): Eviction status.
- `lease_ids` (array): Filter to these lease ids.
- `lease_statuses` (array): Lease term statuses.
- `limit` (integer): Max results, 1-1000 (Buildium default 50).
- `offset` (integer): Zero-based record offset for paging (default 0).
- `orderby` (string): Sort, e.g. "Name", "LeaseToDate desc" or "Rent desc,City asc". Any field of the returned object.
- `past_due_email` (string): Past-due email state.

### `buildium_list_lease_transactions` (~202 tokens)

List lease transactions

Read a lease's ledger: charges, payments, credits, refunds, deposits and other transactions with date, type, total amount and journal lines. Read-only — this server never posts to a ledger. Buildium: GET /v1/leases/{leaseId}/transactions.

Input parameters:

- `lease_id` (integer, required): The lease id.
- `limit` (integer): Max results, 1-1000 (Buildium default 50).
- `offset` (integer): Zero-based record offset for paging (default 0).
- `orderby` (string): Sort, e.g. "Name", "LeaseToDate desc" or "Rent desc,City asc". Any field of the returned object.
- `transaction_date_from` (string): Transaction date on or after — formatted YYYY-MM-DD.
- `transaction_date_to` (string): Transaction date on or before — formatted YYYY-MM-DD.
- `transaction_types` (array): Transaction types to include.

### `buildium_list_tenants` (~305 tokens)

List tenants

List rental tenants with contact details, emergency contact, address and leases. Filter by name, email, phone, unit number, property, owner, unit ids or lease term status. Buildium: GET /v1/leases/tenants.

Input parameters:

- `building_statuses` (array): Status of the tenant's property.
- `email` (string): Email contains this value.
- `last_updated_from` (string): Updated on or after — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `last_updated_to` (string): Updated on or before — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `lease_term_statuses` (array): Lease term statuses.
- `limit` (integer): Max results, 1-1000 (Buildium default 50).
- `name` (string): Tenant name contains this value.
- `offset` (integer): Zero-based record offset for paging (default 0).
- `orderby` (string): Sort, e.g. "Name", "LeaseToDate desc" or "Rent desc,City asc". Any field of the returned object.
- `phone` (string): Phone number contains this value.
- `property_ids` (array): Filter to these property ids.
- `rental_owner_ids` (array): Filter to these rental owner ids.
- `unit_ids` (array): Filter to these unit ids.
- `unit_number` (string): Unit number contains this value.

### `buildium_get_tenant` (~45 tokens)

Get a tenant

Fetch one rental tenant by id. Buildium: GET /v1/leases/tenants/{tenantId}.

Input parameters:

- `tenant_id` (integer, required): The tenant id.

### `buildium_list_applicants` (~314 tokens)

List applicants

List rental applicants with contact details, status and their applications. Filter by application status, unit, name, email, submission date or entity. Buildium: GET /v1/applicants.

Input parameters:

- `application_statuses` (array): Application statuses.
- `email` (string): Email contains this value.
- `entity_id` (integer): Property or rental owner id (per entity_type).
- `entity_type` (string): Scope by entity type; required with entity_id.
- `last_updated_from` (string): Updated on or after — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `last_updated_to` (string): Updated on or before — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `limit` (integer): Max results, 1-1000 (Buildium default 50).
- `name` (string): Applicant name contains this value.
- `offset` (integer): Zero-based record offset for paging (default 0).
- `orderby` (string): Sort, e.g. "Name", "LeaseToDate desc" or "Rent desc,City asc". Any field of the returned object.
- `submitted_from` (string): Application submitted on or after — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `submitted_to` (string): Application submitted on or before — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `unit_ids` (array): Filter to these unit ids.

### `buildium_list_work_orders` (~416 tokens)

List work orders

List work orders with title, status, priority, due date, vendor, amount, line items, linked task and bill ids. Filter by entity, status, priority, task type, unit, vendor, assignee, dates, amount, billed flag or title. Buildium: GET /v1/workorders.

Input parameters:

- `amount_from` (number): Total amount at least this.
- `amount_to` (number): Total amount at most this.
- `assigned_to_id` (integer): Assigned staff user id.
- `due_date_from` (string): Due on or after — formatted YYYY-MM-DD.
- `due_date_to` (string): Due on or before — formatted YYYY-MM-DD.
- `entity_id` (integer): Entity id (per entity_type).
- `entity_type` (string): Scope by entity type; required with entity_id.
- `is_billed` (boolean): Only work orders that do / do not have a bill.
- `last_updated_from` (string): Updated on or after — formatted YYYY-MM-DD.
- `last_updated_to` (string): Updated on or before — formatted YYYY-MM-DD.
- `limit` (integer): Max results, 1-1000 (Buildium default 50).
- `offset` (integer): Zero-based record offset for paging (default 0).
- `orderby` (string): Sort, e.g. "Name", "LeaseToDate desc" or "Rent desc,City asc". Any field of the returned object.
- `priorities` (array): Priorities.
- `statuses` (array): Work order statuses.
- `task_category_id` (integer): Task category id.
- `task_ids` (array): Filter to these task ids.
- `title` (string): Title contains this value.
- `type` (string): Type of the associated task.
- `unit_agreement_id` (integer): Unit agreement (lease) id.
- `unit_id` (integer): Unit id.
- `vendor_ids` (array): Filter to these vendor ids.

### `buildium_get_work_order` (~45 tokens)

Get a work order

Fetch one work order by id. Buildium: GET /v1/workorders/{workOrderId}.

Input parameters:

- `work_order_id` (integer, required): The work order id.

### `buildium_list_tasks` (~324 tokens)

List tasks

List all tasks/requests — contact requests, resident requests, rental owner requests and to-dos — with category, property, unit, requester, assignee, status, priority and due date. Buildium: GET /v1/tasks.

Input parameters:

- `assigned_to_id` (integer): Assigned staff user id.
- `due_date_from` (string): Due on or after — formatted YYYY-MM-DD.
- `due_date_to` (string): Due on or before — formatted YYYY-MM-DD.
- `entity_id` (integer): Entity id (per entity_type).
- `entity_type` (string): Scope by entity type; required with entity_id.
- `last_updated_from` (string): Updated on or after — formatted YYYY-MM-DD.
- `last_updated_to` (string): Updated on or before — formatted YYYY-MM-DD.
- `limit` (integer): Max results, 1-1000 (Buildium default 50).
- `offset` (integer): Zero-based record offset for paging (default 0).
- `orderby` (string): Sort, e.g. "Name", "LeaseToDate desc" or "Rent desc,City asc". Any field of the returned object.
- `priorities` (array): Priorities.
- `statuses` (array): Task statuses.
- `task_category_id` (integer): Task category id.
- `title` (string): Title contains this value.
- `type` (string): Task type.
- `unit_agreement_id` (integer): Unit agreement (lease) id.
- `unit_id` (integer): Unit id.

### `buildium_list_vendors` (~255 tokens)

List vendors

List vendors (contractors, suppliers) with contact details, category, insurance and default expense GL account. Filter by name, email, phone, website, status or insurance expiration. Buildium: GET /v1/vendors.

Input parameters:

- `email` (string): Email contains this value.
- `insurance_expiration` (string): Insurance expiration window.
- `last_updated_from` (string): Updated on or after — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `last_updated_to` (string): Updated on or before — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `limit` (integer): Max results, 1-1000 (Buildium default 50).
- `name` (string): Vendor name contains this value.
- `offset` (integer): Zero-based record offset for paging (default 0).
- `orderby` (string): Sort, e.g. "Name", "LeaseToDate desc" or "Rent desc,City asc". Any field of the returned object.
- `phone` (string): Phone number contains this value.
- `status` (string): Vendor status (both if omitted).
- `website` (string): Website contains this value.

### `buildium_list_bills` (~237 tokens)

List bills

List vendor bills (accounts payable) with dates, memo, vendor, linked work order, reference number, approval status and lines. Read-only. Buildium: GET /v1/bills.

Input parameters:

- `approval_statuses` (array): Approval statuses.
- `entity_id` (integer): Entity id with line items on the bill.
- `entity_type` (string): Scope by entity type; required with entity_id.
- `limit` (integer): Max results, 1-1000 (Buildium default 50).
- `offset` (integer): Zero-based record offset for paging (default 0).
- `orderby` (string): Sort, e.g. "Name", "LeaseToDate desc" or "Rent desc,City asc". Any field of the returned object.
- `paid_date_from` (string): Paid on or after — formatted YYYY-MM-DD.
- `paid_date_to` (string): Paid on or before — formatted YYYY-MM-DD.
- `paid_status` (string): Paid status.
- `reference_number` (string): Reference number contains this value.
- `vendor_id` (integer): Vendor id.

### `buildium_list_gl_accounts` (~145 tokens)

List general ledger accounts

List the chart of accounts: GL accounts with number, name, type/subtype, sub-accounts and bank/credit-card flags. Useful for finding the gl_account_id for work order line items. Buildium: GET /v1/glaccounts.

Input parameters:

- `account_types` (array): Account types.
- `limit` (integer): Max results, 1-1000 (Buildium default 50).
- `offset` (integer): Zero-based record offset for paging (default 0).
- `orderby` (string): Sort, e.g. "Name", "LeaseToDate desc" or "Rent desc,City asc". Any field of the returned object.

### `buildium_list_associations` (~225 tokens)

List associations

List community/HOA associations with address, manager, reserve, fiscal year and operating bank account. Buildium: GET /v1/associations.

Input parameters:

- `ids` (array): Filter to these association ids.
- `last_updated_from` (string): Updated on or after — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `last_updated_to` (string): Updated on or before — UTC, formatted YYYY-MM-DDTHH:MM:SSZ.
- `limit` (integer): Max results, 1-1000 (Buildium default 50).
- `location` (string): City or state contains this value.
- `offset` (integer): Zero-based record offset for paging (default 0).
- `operating_bank_account_ids` (array): Filter to these operating bank account ids.
- `orderby` (string): Sort, e.g. "Name", "LeaseToDate desc" or "Rent desc,City asc". Any field of the returned object.
- `status` (string): Association status (both if omitted).

### `buildium_create_work_order` (~278 tokens)

Create a work order

Create a work order for a vendor. Attach it to an existing task (task_id) or create a new task with it (task: title, priority, status, assigned staff user, optional due date/property/unit). vendor_id and entry_allowed are required. Line items are optional (quantity x unit price, optional GL account). Buildium: POST /v1/workorders.

Input parameters:

- `chargeable_to` (string): Who will be charged for the work (max 100).
- `entry_allowed` (string, required): Whether entry to the unit is allowed.
- `entry_contact_ids` (array): Entry contact user ids (RentalTenant, AssociationOwner, Staff or RentalOwner).
- `entry_notes` (string): Notes on entering the unit.
- `invoice_number` (string): Vendor invoice/reference number (max 50).
- `line_items` (array): Work order line items.
- `task` (object): A new task to create and link to this work order (instead of task_id).
- `task_id` (integer): Existing task to attach this work order to.
- `title` (string): Work order title (max 127 chars).
- `vendor_id` (integer, required): Vendor id doing the work.
- `vendor_notes` (string): Notes for the vendor.
- `work_details` (string): Description of the work.

### `buildium_update_work_order` (~251 tokens)

Update a work order

Update a work order's details. Buildium's PUT replaces the whole record, so this reads the current work order first and only changes the fields you pass — everything else (including line items and entry contacts) is preserved. Passing line_items REPLACES all existing line items. Status/priority/due date live on the linked task. Buildium: GET then PUT /v1/workorders/{workOrderId}.

Input parameters:

- `chargeable_to` (string): Who will be charged (max 100).
- `entry_allowed` (string): Whether entry to the unit is allowed.
- `entry_contact_ids` (array): Replace the entry contact user ids.
- `entry_notes` (string): Notes on entering the unit.
- `invoice_number` (string): Vendor invoice/reference number (max 50).
- `line_items` (array): Replace ALL line items with this list.
- `title` (string): New title (max 127).
- `vendor_id` (integer): Reassign to this vendor id.
- `vendor_notes` (string): Notes for the vendor.
- `work_details` (string): New description of the work.
- `work_order_id` (integer, required): The work order id.

### `buildium_create_todo_task` (~170 tokens)

Create a to-do task

Create an internal to-do task assigned to a staff user, optionally tied to a property/unit and category, with a due date. Buildium: POST /v1/tasks/todorequests.

Input parameters:

- `assigned_to_user_id` (integer, required): Staff user id assigned to the task.
- `category_id` (integer): Task category id.
- `description` (string): Task description.
- `due_date` (string): Due date, YYYY-MM-DD.
- `priority` (string, required): Priority.
- `property_id` (integer): Active property id.
- `status` (string, required): Status.
- `subcategory_id` (integer): Task subcategory id.
- `title` (string, required): Task title (max 127).
- `unit_id` (integer): Unit id (must belong to property_id).

### `buildium_update_todo_task` (~228 tokens)

Update a to-do task

Update a to-do task — change status (e.g. mark Completed), priority, assignee, due date, title or category, optionally with an update message. Buildium's PUT replaces the whole record, so this reads the current task first and only changes the fields you pass. Buildium: GET then PUT /v1/tasks/todorequests/{toDoTaskId}.

Input parameters:

- `assigned_to_user_id` (integer): Reassign to this staff user id.
- `category_id` (integer): New task category id.
- `due_date` (string): New due date, YYYY-MM-DD.
- `message` (string): An update note recorded with this change.
- `priority` (string): New priority.
- `property_id` (integer): New active property id.
- `status` (string): New status.
- `subcategory_id` (integer): New task subcategory id.
- `title` (string): New title (max 127).
- `todo_task_id` (integer, required): The to-do task id.
- `unit_id` (integer): New unit id.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-buildium/buildium#diagnostics

## Score history

- 2026-10-04: 75
- 2026-10-03: 72
- 2026-10-02: 33
- 2026-10-01: 33
- 2026-09-30: 69
- 2026-09-29: 18

## Common questions

### What is the io.usefulapi/buildium MCP server?

io.usefulapi/buildium is an MCP server listed in the public MCP registry as io.usefulapi/buildium. Read Buildium properties, units, leases, tenants, balances and bills; manage work orders. This page covers its hosted endpoint (https://buildium.usefulapi.io/mcp).

### Is the io.usefulapi/buildium MCP server safe to use?

io.usefulapi/buildium scores 75 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.usefulapi/buildium MCP server expose?

io.usefulapi/buildium exposes 23 tools: buildium_list_rental_properties, buildium_get_rental_property, buildium_list_rental_units, buildium_get_rental_unit, buildium_list_rental_owners, and 18 more. Their descriptions and schemas cost roughly 4,907 tokens of context every time the server is loaded.

### Does the io.usefulapi/buildium MCP server require authentication?

Yes. io.usefulapi/buildium asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the io.usefulapi/buildium MCP server still maintained?

io.usefulapi/buildium is still listed as active in the MCP registry. We last reached this channel on 4 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://buildium.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-buildium/buildium.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-buildium/buildium.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-buildium/buildium
