Skip to main content
OncallStrata

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

MethodPath
GET/api/v1/vendorsSearch vendors. Filters below. Claimed listings first.
GET/api/v1/vendors/{id}One vendor by oncallstrata_id or slug.
GET/api/v1/tradesTrade slugs with vendor counts.
GET/api/v1/municipalitiesMunicipality slugs and regional districts.
POST/api/mcpMCP server (Streamable HTTP).

Vendor filters

ParameterExample
tradeplumbingTrade slug from /api/v1/trades.
municipalityvancouverMatches the licensed location or an owner-confirmed service area.
availabilityemergency_24_7emergency_24_7 · same_day · scheduled
priorityurgentWork order priority: low · normal · high · urgent. urgent → 24/7 only, high → 24/7 or same day.
qnorthshoreBusiness name contains.
claimed_onlytrueOnly owner-claimed listings.
limit201–100. Default 20.
cursornext_cursor from the previous page.

Example

Request
curl "https://oncallstrata.ca/api/v1/vendors?trade=plumbing&municipality=vancouver&priority=urgent" \
  -H "Authorization: Bearer ocs_live_…"
Response (shortened example)
{
  "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.

Client config
{
  "mcpServers": {
    "oncallstrata": {
      "url": "https://oncallstrata.ca/api/mcp",
      "headers": { "Authorization": "Bearer ocs_live_…" }
    }
  }
}
Tool
search_vendorsSearch by trade, municipality, availability, priority or name.
match_vendors_for_work_orderPass a work order's title, description, priority and municipality. It infers the trade and returns vendors.
get_vendorFull listing, licences and insurance dates.
list_tradesTrade slugs.
list_municipalitiesMunicipality 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_idStore it with your vendor record to re-sync later.
name, tradeDisplay name and primary trade.
email, after_hours_phoneOwner-confirmed contact details.
phone, phone_sourceThe 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_expiryInsurance and WorkSafeBC clearance expiry (YYYY-MM-DD).
claim_status, verified_atWhether 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.