Developers
Every trade your strata needs, on one list.
The REST API and MCP server return the same listings as this site, including licences, owner-confirmed availability and insurance dates. Both use one API key.
Authentication
Send your key as Authorization: Bearer ocs_live_… (or x-api-key). Keys are issued to strata software and property management firms. To request one, email api@oncallstrata.ca.
Errors return { "ok": false, "error": "…" }. The message says how to fix the request. Codes are 401 (missing or invalid key), 404 (not found) and 422 (bad filter).
REST API
| Method | Path | |
|---|---|---|
GET | /api/v1/vendors | Search vendors. Filters below. Claimed listings first. |
GET | /api/v1/vendors/{id} | One vendor by oncallstrata_id or slug. |
GET | /api/v1/trades | Trade slugs with vendor counts. |
GET | /api/v1/municipalities | Municipality slugs and regional districts. |
POST | /api/mcp | MCP server (Streamable HTTP). |
Vendor filters
| Parameter | Example | |
|---|---|---|
trade | plumbing | Trade slug from /api/v1/trades. |
municipality | vancouver | Matches the licensed location or an owner-confirmed service area. |
availability | emergency_24_7 | emergency_24_7 · same_day · scheduled |
priority | urgent | Work order priority: low · normal · high · urgent. urgent → 24/7 only, high → 24/7 or same day. |
q | northshore | Business name contains. |
claimed_only | true | Only owner-claimed listings. |
limit | 20 | 1–100. Default 20. |
cursor | next_cursor from the previous page. |
Example
curl "https://oncallstrata.ca/api/v1/vendors?trade=plumbing&municipality=vancouver&priority=urgent" \
-H "Authorization: Bearer ocs_live_…"{
"ok": true,
"vendors": [
{
"oncallstrata_id": "3f0c…",
"slug": "example-plumbing-ltd-vancouver",
"name": "Example Plumbing Ltd.",
"trade": "Plumbing",
"trades": [{ "slug": "plumbing", "name": "Plumbing", "primary": true, "confirmed_by_owner": true }],
"email": "dispatch@example.ca",
"phone": "604-555-0123",
"phone_source": "owner",
"after_hours_phone": "604-555-0199",
"availability": "emergency_24_7",
"service_areas": ["vancouver", "burnaby"],
"coi_expiry": "2027-03-31",
"wcb_expiry": "2026-12-31",
"claim_status": "claimed",
"licences": [{ "issuer": "City of Vancouver", "number": "26-123456", "status": "Issued" }],
"profile_url": "https://oncallstrata.ca/vendors/example-plumbing-ltd-vancouver"
}
],
"total": 1,
"next_cursor": null
}MCP server
https://oncallstrata.ca/api/mcp uses Streamable HTTP and serves both the 2026-07-28 and 2025 MCP protocol versions. Use the same API key as a bearer token.
{
"mcpServers": {
"oncallstrata": {
"url": "https://oncallstrata.ca/api/mcp",
"headers": { "Authorization": "Bearer ocs_live_…" }
}
}
}| Tool | |
|---|---|
search_vendors | Search by trade, municipality, availability, priority or name. |
match_vendors_for_work_order | Pass a work order's title, description, priority and municipality. It infers the trade and returns vendors. |
get_vendor | Full listing, licences and insurance dates. |
list_trades | Trade slugs. |
list_municipalities | Municipality slugs. |
Adding vendors to your software
Each vendor is a flat record you can copy into your own vendor list. Keep oncallstrata_id and call /api/v1/vendors/{id} to refresh contact details, licence status and insurance dates.
| Field | |
|---|---|
oncallstrata_id | Store it with your vendor record to re-sync later. |
name, trade | Display name and primary trade. |
email, after_hours_phone | Owner-confirmed contact details. |
phone, phone_source | The owner's number (phone_source "owner"), or the number the city publishes on the licence record ("licence_record", with phone_source_issuer). |
coi_expiry, wcb_expiry | Insurance and WorkSafeBC clearance expiry (YYYY-MM-DD). |
claim_status, verified_at | Whether the owner has claimed the listing, and when the licence was last checked. |
For a work order, call match_vendors_for_work_order over MCP, or /api/v1/vendors?trade=…&priority=… over REST, with the work order's priority. Urgent work orders return only vendors who confirmed 24/7 emergency availability.