flossypurse.studio

Data · Docs

The API and
the MCP server.

The data behind every Data chart, for your code and your AI agents: a read-only HTTP API that returns JSON, and an MCP server your agent can call directly. One key works for both.

Getting a key

  • Free key. Sign in with a free FlossyPurse Studios account and make a key on your account page. It covers the free datasets, 1,000 requests a month over the API and MCP together.
  • Data subscription ($9 CAD a month, by card). Everything the licences let us sell, 50,000 requests a month included. Subscribe
  • Send the key as Authorization: Bearer tk_…. Keep it out of code you share and out of the browser.
Sign in and make a key

Limits and errors

  • Base URL https://flossypurse.studio/data. Every endpoint is a GET that returns JSON.
  • Each key gets 1,000 requests a day, counted over the last 24 hours. Past that you get a 429 with X-RateLimit-Remaining: 0.
  • Cache what you fetch. Most of this data changes daily or less often; each endpoint says how long to keep it.
  • Most endpoints take a type. Call one without it to get the list of types it serves.
  • Errors: 401 the key is wrong or revoked; 402 the data comes with a Data subscription and this is a free key; 403 the data is charts only (its licence keeps it out of the API) or the key lacks the endpoint's scope; 429 the monthly allowance or the daily limit is used up. Each has a JSON error saying which.
  • Every answer carries its licence notice in the X-Data-Licence-Notice header. Keep it with the data when you republish.

A 402, as a free key gets it

{
  "error": "This data comes with a Data subscription. Your free key covers the free datasets only.",
  "reason": "plan-locked",
  "datasets": [
    {
      "id": "cer",
      "title": "Canada Energy Regulator: pipeline throughput, incidents, apportionment, crude production",
      "licence": "Open Government Licence – Canada",
      "why": "Published under the Open Government Licence - Canada. Part of the paid plan."
    }
  ],
  "see": "https://flossypurse.studio/data/plans",
  "upgrade": "https://flossypurse.studio/data/subscribe"
}

Endpoints

33 endpoints. Each is marked Free API, Paid API or Charts only, per type where that differs.

GET /api/healthService health

No key needed

{ status: "ok", timestamp, git_sha }. With deep=1 it probes each upstream source and returns { status: "healthy" or "degraded", sources, summary }. No key needed.

deepSet to "1" to probe the upstream sources. Slow; use it rarely.

Cache: Don't cache. Use it to check the service is up before a batch job.

curl "https://flossypurse.studio/data/api/health"

Sample response

{
  "status": "ok",
  "timestamp": "2026-10-27T22:12:46.167Z",
  "git_sha": "d6353e6…"
}

GET /api/macroMacro indicators· by indicator, marked below

Scope tamrack:macro:read

One indicator's time series: { indicator, label, source, periods, data: [{ date, value }] }. From the Bank of Canada Valet API and Statistics Canada. Leave out indicator to get the list of indicator keys.

indicatorIndicator key, e.g. policy_rate, prime_rate, cad_usd, mortgage_5y_fixed, unemployment, employment, cpi, population, gdp, housing_starts, weekly_earnings, retail_sales.
periodsHow many recent periods to return. Default 24.

Cache: Bank of Canada series change daily, StatsCan series monthly or quarterly. Cache for a few hours.

curl "https://flossypurse.studio/data/api/macro?indicator=policy_rate&periods=24" \
  -H "Authorization: Bearer tk_your_key"

Sample response

{
  "indicator": "policy_rate",
  "label": "BoC Policy Rate",
  "source": "Bank of Canada Valet API",
  "periods": 3,
  "data": [
    {
      "date": "2026-10-22",
      "value": 2.25
    },
    {
      "date": "2026-10-23",
      "value": 2.25
    },
    {
      "date": "2026-10-26",
      "value": 2.25
    }
  ]
}

GET /api/riskMacro risk indicators· Free API

Scope tamrack:macro:read

{ risk } with five series: Alberta unemployment, Edmonton rental vacancy, Edmonton housing starts, the Bank of Canada policy rate and the BoC energy price index. From StatsCan and the Bank of Canada.

Cache: Monthly series, cached an hour on our side. Cache for an hour or more.

curl "https://flossypurse.studio/data/api/risk" \
  -H "Authorization: Bearer tk_your_key"

GET /api/cycleEconomic cycle position· Free API

Scope tamrack:macro:read

Alberta's current 10-indicator fingerprint compared with five past periods: { current, matches, bestMatch, whatHappenedNext, indicators }. Built from StatsCan and Bank of Canada series.

Cache: Recomputed at most hourly. Cache for an hour.

curl "https://flossypurse.studio/data/api/cycle" \
  -H "Authorization: Bearer tk_your_key"

GET /api/benchmarksMunicipality benchmarks· Free API

Scope tamrack:macro:read

{ benchmarks }: one entry per municipality with slug, name, region, population, what data we hold for it, and the open-data URLs behind it. From our municipality registry.

municipalitiesComma-separated municipality slugs. Default: every municipality we cover.

Cache: Changes only when we add a municipality. Cache for a day.

curl "https://flossypurse.studio/data/api/benchmarks?municipalities=edmonton,calgary" \
  -H "Authorization: Bearer tk_your_key"

GET /api/corridorsGrowth corridors· Free API

Scope tamrack:macro:read

{ corridors }: the municipalities we cover grouped by region (Edmonton metro, Calgary metro, central, south, north, northwest, northeast), each sorted by population.

Cache: Changes only when we add a municipality. Cache for a day.

curl "https://flossypurse.studio/data/api/corridors" \
  -H "Authorization: Bearer tk_your_key"

GET /api/regionalRegional indicators· depends on the indicator; see plans

Scope tamrack:regional:read

Values for one Alberta Regional Dashboard indicator (population, unemployment rate, building permits, median household income and 50 more) across every municipality, or one municipality's time series. Leave out indicator to list them.

indicatorIndicator name as the dashboard spells it, e.g. "Population".
municipalityOne municipality's time series. Needs indicator.

Cache: Annual and monthly series, cached a day on our side. Cache for a day.

curl "https://flossypurse.studio/data/api/regional?indicator=Unemployment%20Rate&municipality=Edmonton" \
  -H "Authorization: Bearer tk_your_key"

GET /api/housingHousing market· by type, marked below

Scope tamrack:real-estate:read

{ type, records, data }: CMHC and StatsCan starts, completions, units under construction, vacancy, rents, absorptions and mortgage rates for Edmonton and Calgary, or University of Alberta assessment trends by neighbourhood.

typeWhich dataset to return. Leave it out to get the list of types.starts (Free API) · completions (Free API) · construction (Free API) · vacancy (Free API) · rents (Free API) · absorptions (Free API) · mortgage (Free API) · assessments (Charts only) · neighbourhoods (Charts only)
cityCity for type=neighbourhoods. Default "Edmonton".Edmonton · Calgary

Cache: Monthly releases. Cache for an hour; a day for assessments and neighbourhoods.

curl "https://flossypurse.studio/data/api/housing?type=starts" \
  -H "Authorization: Bearer tk_your_key"

GET /api/rentalRental market· Free API

Scope tamrack:real-estate:read

{ rental: { vacancyRates, rents } }: vacancy and average rent by bedroom count, Edmonton against Calgary. CMHC data through Statistics Canada.

Cache: The rental survey comes out a few times a year. Cache for a day.

curl "https://flossypurse.studio/data/api/rental" \
  -H "Authorization: Bearer tk_your_key"

GET /api/pipelineEdmonton housing pipeline· Free API

Scope tamrack:real-estate:read

{ pipeline }: Edmonton housing starts, completions and units under construction as three series. From Statistics Canada.

Cache: Monthly release. Cache for a day.

curl "https://flossypurse.studio/data/api/pipeline" \
  -H "Authorization: Bearer tk_your_key"

GET /api/permitsDevelopment permits· Paid API

Scope tamrack:real-estate:read

Permit activity for one municipality: hot neighbourhoods and the monthly trend, or recent permits with type=recent. Leave out municipality for a summary of all five. From each municipality's open-data portal; Parkland County publishes no permit feed, so it returns assessed parcels instead.

municipalityWhich municipality.edmonton (Paid API) · strathcona (Paid API) · st-albert (Paid API) · parkland (Paid API) · stony-plain (Paid API)
typeDefault "summary". Ignored for parkland and stony-plain.summary · recent

Cache: The portals update daily to weekly. Cache for a few hours.

curl "https://flossypurse.studio/data/api/permits?municipality=edmonton&type=recent" \
  -H "Authorization: Bearer tk_your_key"

GET /api/assessmentsProperty assessments· Paid API

Scope tamrack:real-estate:read

Counts and average assessed values by neighbourhood, building type, subdivision or zoning, for one municipality or all five under { municipalities }. Read from each municipality's open-data portal.

municipalityOne municipality. Default: all five.edmonton (Paid API) · strathcona (Paid API) · st-albert (Paid API) · parkland (Paid API) · stony-plain (Paid API)

Cache: Assessment rolls change once a year. Cache for a day.

curl "https://flossypurse.studio/data/api/assessments?municipality=edmonton" \
  -H "Authorization: Bearer tk_your_key"

GET /api/commercialEdmonton commercial property· Paid API

Scope tamrack:real-estate:read

{ commercial }: non-residential assessments by neighbourhood, business licences by category, businesses by neighbourhood, and monthly commercial building permits. From City of Edmonton open data.

Cache: Cached an hour on our side. Cache for a few hours.

curl "https://flossypurse.studio/data/api/commercial" \
  -H "Authorization: Bearer tk_your_key"

GET /api/signalsEdmonton neighbourhood signals· Paid API

Scope tamrack:real-estate:read

{ description, signals } with four lists worked out from Edmonton permits, assessments and licences: transformation (hot to cooling zones), teardowns, renovation_roi and convergence.

Cache: Cached an hour on our side. Cache for an hour or more.

curl "https://flossypurse.studio/data/api/signals" \
  -H "Authorization: Bearer tk_your_key"

GET /api/energyPipelines, production, wells· by type, marked below

Scope tamrack:energy:read

Depends on type: Canada Energy Regulator pipeline throughput, crude production by province, pipeline incidents and apportionment, or Alberta Energy Regulator well licences (records, daily counts, top operators).

typeWhich dataset to return. Leave it out to get the list of types.throughput (Paid API) · production (Paid API) · incidents (Paid API) · apportionment (Paid API) · well_licences (Charts only) · well_licences_daily (Charts only) · well_operators (Charts only)
pipelinePipeline key, needed for type=throughput, e.g. NGTL_THROUGHPUT.
provinceProvince for type=production. Default "Alberta".
limitRows for well_licences and well_operators. Default 100, at most 500.
fromEarliest filing date for type=well_licences, YYYY-MM-DD.
toLatest filing date for type=well_licences, YYYY-MM-DD.
daysDays of history for type=well_licences_daily. Default 90, at most 730.

Cache: Regulator files refresh daily. Cache for a few hours.

curl "https://flossypurse.studio/data/api/energy?type=throughput&pipeline=NGTL_THROUGHPUT" \
  -H "Authorization: Bearer tk_your_key"

GET /api/electricityElectricity market· Charts only

Scope tamrack:energy:read

Charts only: refused (403) for every key, on every plan. This is Alberta Electric System Operator (AESO) data, and AESO's terms allow non-commercial use only, so it stays on our free charts until AESO grants permission. Would return pool price by hour, supply and demand by fuel, actual against forecast load, or a pool price history.

typeWhich dataset to return. Leave it out to get the list of types.pool_price · supply_demand · forecast · price_history
start_dateStart date for pool_price and forecast, YYYY-MM-DD.
end_dateEnd date for pool_price, YYYY-MM-DD.
daysDays of history for type=price_history. Default 30.

Cache: Changes every few minutes, cached 5 minutes on our side. Cache for 5 minutes.

curl "https://flossypurse.studio/data/api/electricity?type=supply_demand" \
  -H "Authorization: Bearer tk_your_key"

GET /api/businessBusiness and corporate data· by type, marked below

Scope tamrack:economy:read

Depends on type: Edmonton and Calgary business licences, StatsCan business counts by sector, facility greenhouse-gas emissions (ECCC), WCB employers by industry, Alberta non-profits, or CRA corporate tax statistics. Most types return { type, records, data }.

typeWhich dataset to return. Leave it out to get the list of types.edmonton-licences (Paid API) · edmonton-categories (Paid API) · calgary-types (Paid API) · calgary-districts (Paid API) · calgary-trend (Paid API) · counts (Paid API) · sectors (Free API) · ghg-facilities (Paid API) · top-emitters (Paid API) · wcb-industries (Paid API) · nonprofits-by-city (Paid API) · nonprofits-by-type (Paid API) · cra-t2 (Paid API)
limitRows. Default 50.

Cache: Cached a day on our side. Cache for a day.

curl "https://flossypurse.studio/data/api/business?type=sectors" \
  -H "Authorization: Bearer tk_your_key"

GET /api/retailRetail and business activity· by type, marked below

Scope tamrack:economy:read

{ type, records, data }: StatsCan Alberta retail sales by subsector, e-commerce, food services, business openings and closures, or Edmonton business licences by category, neighbourhood or month.

typeWhich dataset to return. Leave it out to get the list of types.subsectors (Free API) · ecommerce (Free API) · food-services (Free API) · business-dynamics (Free API) · retail-dynamics (Free API) · food-dynamics (Free API) · edmonton-licences-category (Paid API) · edmonton-licences-neighbourhood (Paid API) · edmonton-licences-trend (Paid API)

Cache: StatsCan types change monthly; cache for an hour. The Edmonton licence types are read live; cache for a few minutes.

curl "https://flossypurse.studio/data/api/retail?type=subsectors" \
  -H "Authorization: Bearer tk_your_key"

GET /api/projectsMajor projects· by type, marked below

Scope tamrack:economy:read

{ type, source, records, data }: federal infrastructure projects in Alberta (paid API). type=provincial (Alberta Major Projects, licensed non-commercial only) and type=wells (AER, licence not yet confirmed) are charts only and refused (403) for every key.

typeWhich dataset to return. Leave it out to get the list of types.federal (Paid API) · provincial (Charts only) · wells (Charts only)

Cache: Cached a day on our side. Cache for a day.

curl "https://flossypurse.studio/data/api/projects?type=provincial" \
  -H "Authorization: Bearer tk_your_key"

GET /api/opportunitiesFederal tenders· Paid API

Scope tamrack:economy:read

{ type, source, records, data }: CanadaBuys federal tenders for IT, software, AI and data work, soonest closing first, from the table our daily collection fills.

typeWhich dataset to return. Leave it out to get the list of types.tenders (Paid API)
openSet to "1" for tenders that have not closed yet.
closing_beforeOnly tenders closing before this date, YYYY-MM-DD.
limitRows. Default 100, at most 500.

Cache: Updated by the daily collection at 06:00 UTC. Cache for a few hours.

curl "https://flossypurse.studio/data/api/opportunities?type=tenders&open=1&limit=20" \
  -H "Authorization: Bearer tk_your_key"

GET /api/hiringHiring signals· Paid API

Scope tamrack:economy:read

{ type, source, summary }: Canada Job Bank Alberta postings for back-office roles, by occupation, sector and city, with month-over-month change. Counts only; the source has no employer names.

typeWhich dataset to return. Default "signals".signals (Paid API)
monthYYYY-MM. Default: the latest month we hold.

Cache: Job Bank publishes monthly. Cache for a day.

curl "https://flossypurse.studio/data/api/hiring?type=signals" \
  -H "Authorization: Bearer tk_your_key"

GET /api/leadsDemand by municipality· Paid API

Scope tamrack:economy:read

{ rankings, meta }: municipalities ranked 0 to 100 on a blend of hiring momentum, permit growth, new businesses and provincial procurement. A direction to look in, not a list of companies.

limitHow many municipalities, 1 to 100. Default: all.

Cache: Worked out on each call from tables the daily collection fills. Cache for a few hours.

curl "https://flossypurse.studio/data/api/leads?limit=10" \
  -H "Authorization: Bearer tk_your_key"

GET /api/immigrationPermanent residents· Paid API

Scope tamrack:economy:read

{ type, records, data }: IRCC permanent-resident admissions by category, by metropolitan area, by occupation, or as a yearly trend.

typeWhich dataset to return. Leave it out to get the list of types.category (Paid API) · cma (Paid API) · occupation (Paid API) · trend (Paid API)
provinceDefault "Alberta". Used by category, occupation and trend.
cmaMetropolitan area for type=cma. Default "Edmonton".

Cache: IRCC publishes monthly. Cache for a day.

curl "https://flossypurse.studio/data/api/immigration?type=trend" \
  -H "Authorization: Bearer tk_your_key"

GET /api/fiscalGrants, transfers, contracts· Paid API

Scope tamrack:economy:read

{ type, records, data }: Alberta grant payments, federal transfers to Alberta, federal contracts in Alberta, or federal grants and contributions in Alberta. type=salary-disclosure: Alberta Public Service salary disclosure as aggregates by ministry and year (people disclosed, median and total compensation), never a row about one person. type=royalties: Alberta resource revenue by line (royalties, bonuses, rentals, totals), $ millions by fiscal year since 1970/71. type=sole-source: Alberta sole-source service contracts, count and value by ministry and quarter. type=sole-source-vendors: value by fiscal year for the largest vendors that are organisations; individuals are never named.

typeWhich dataset to return. Leave it out to get the list of types.grants (Paid API) · transfers (Paid API) · contracts (Paid API) · federal-grants (Paid API) · salary-disclosure (Paid API) · royalties (Paid API) · sole-source (Paid API) · sole-source-vendors (Paid API)
fiscal_yearFiscal year for type=grants (e.g. 2024-25) or type=sole-source-vendors (e.g. 2024/25).
yearCalendar year for type=salary-disclosure, e.g. 2024.
lineOne revenue line for type=royalties, e.g. oil-sands-royalty.
ministryPart of a ministry name, for type=sole-source, e.g. Health.
limitRows. Default 500.

Cache: Published yearly or quarterly. Cache for a day.

curl "https://flossypurse.studio/data/api/fiscal?type=grants&fiscal_year=2024-25" \
  -H "Authorization: Bearer tk_your_key"

GET /api/politicsPolitics· Charts only

Scope tamrack:economy:read

Depends on type: MLAs, Alberta MPs, electoral districts, recent House of Commons votes, Alberta mentions in Hansard, 2021 federal results for Alberta ridings, or federal political contributions. From Represent (Open North), OpenParliament and Elections Canada.

typeWhich dataset to return. Leave it out to get the list of types.mlas (Charts only) · federal-mps (Charts only) · districts (Charts only) · votes (Charts only) · debates (Charts only) · election-results (Charts only) · contributions (Charts only)
limitRows for votes and debates. Default 50.

Cache: Representatives and votes: cache for a few hours. Results and contributions don't change: cache for a day or more.

curl "https://flossypurse.studio/data/api/politics?type=mlas" \
  -H "Authorization: Bearer tk_your_key"

GET /api/health-dataHealth statistics· Paid API

Scope tamrack:economy:read

{ type, records, data }: life expectancy by municipality and sex, births and deaths by municipality, or Alberta's leading causes of death.

typeWhich dataset to return. Leave it out to get the list of types.life-expectancy (Paid API) · births-deaths (Paid API) · leading-causes (Paid API)
municipalityOne municipality, for life-expectancy and births-deaths.

Cache: Yearly releases. Cache for a day.

curl "https://flossypurse.studio/data/api/health-data?type=life-expectancy&municipality=Edmonton" \
  -H "Authorization: Bearer tk_your_key"

GET /api/crimeCrime· by type, marked below

Scope tamrack:economy:read

Depends on type: the Crime Severity Index for Alberta municipalities, Calgary crime and disorder counts by community, or (type=csi-statcan) Statistics Canada's total, violent and non-violent Crime Severity Index for every Alberta police service since 1998.

typeWhich dataset to return. Leave it out to get the list of types.severity (Charts only) · calgary-crime (Paid API) · calgary-disorder (Paid API) · csi-statcan (Free API)
municipalityOne municipality, for type=severity.
categoryOne crime category, for type=calgary-crime, e.g. Assault.
police_servicePart of a police service's name, for type=csi-statcan, e.g. Red Deer.
yearOne year, for type=csi-statcan.

Cache: Cached a day on our side. Cache for a day.

curl "https://flossypurse.studio/data/api/crime?type=severity&municipality=Calgary" \
  -H "Authorization: Bearer tk_your_key"

GET /api/safetyAlerts and representatives· by type, marked below

Scope tamrack:economy:read

{ type, count, data }: Environment Canada alerts for Alberta, sitting MLAs, or the electoral district boundaries.

typeWhich dataset to return. Default "alerts".alerts (Paid API) · mlas (Charts only) · districts (Charts only)

Cache: Alerts: cache for 30 minutes. MLAs and districts: cache for a day.

curl "https://flossypurse.studio/data/api/safety?type=alerts" \
  -H "Authorization: Bearer tk_your_key"

GET /api/fireFire incidents· by type, marked below

Scope tamrack:economy:read

{ type, records, data }: Edmonton Fire Rescue incidents (recent, by type, by neighbourhood, or by month), active Alberta wildfires (CWFIS), or 511 Alberta alerts.

typeWhich dataset to return. Leave it out to get the list of types.edmonton-recent (Paid API) · edmonton-by-type (Paid API) · edmonton-by-neighbourhood (Paid API) · edmonton-trend (Paid API) · active-fires (Paid API) · alerts (Charts only)
limitRows for edmonton-recent (default 1000) and edmonton-by-neighbourhood (default 25).
yearsYears of history for edmonton-trend. Default 3.

Cache: Alerts: cache for 5 minutes. Everything else: cache for an hour.

curl "https://flossypurse.studio/data/api/fire?type=edmonton-trend" \
  -H "Authorization: Bearer tk_your_key"

GET /api/wildfireWildfire history· Paid API

Scope tamrack:economy:read

{ source, records, data }: the 200 most recent historical Alberta wildfires with year, cause, size and location. From Alberta Open Data.

Cache: Yearly release. Cache for a day.

curl "https://flossypurse.studio/data/api/wildfire" \
  -H "Authorization: Bearer tk_your_key"

GET /api/environmentWater, wildfires, earthquakes· Paid API

Scope tamrack:economy:read

Depends on type: Environment Canada water-level stations, active and season wildfires from Alberta Wildfire, or earthquakes in Alberta from the USGS.

typeWhich dataset to return. Default "water".water (Paid API) · wildfires (Paid API) · earthquakes (Paid API)
daysDays to look back for type=earthquakes. Default 365.

Cache: Cached an hour on our side. Cache for an hour.

curl "https://flossypurse.studio/data/api/environment?type=wildfires" \
  -H "Authorization: Bearer tk_your_key"

GET /api/weatherWeather and air quality· Paid API

Scope tamrack:economy:read

{ type, count, data }: current conditions for Alberta cities, current air quality (AQHI), or monthly temperatures for one climate station. From Environment Canada.

typeWhich dataset to return. Default "current".current (Paid API) · aqhi (Paid API) · climate (Paid API)
stationClimate station id for type=climate. Default "3012216" (Edmonton).
limitMonths for type=climate. Default 60.

Cache: Current and AQHI: cache for 30 minutes. Climate: cache for a day.

curl "https://flossypurse.studio/data/api/weather?type=aqhi" \
  -H "Authorization: Bearer tk_your_key"

GET /api/trafficRoads and traffic· by type, marked below

Scope tamrack:economy:read

511 Alberta road conditions, events and alerts, and Edmonton and Calgary traffic disruptions. type=all returns { roads, events, alerts }.

typeWhich dataset to return. Default "all".roads (Charts only) · events (Charts only) · alerts (Charts only) · edmonton (Paid API) · calgary (Paid API) · all (Charts only)

Cache: Cached 10 minutes on our side. Cache for 10 minutes.

curl "https://flossypurse.studio/data/api/traffic?type=roads" \
  -H "Authorization: Bearer tk_your_key"

Connect an MCP client

The server is at https://flossypurse.studio/data/api/mcp (Streamable HTTP). Put your key where it says tk_your_key. Each tool call counts as one request.

Claude Code · Run in a terminal.

claude mcp add --transport http data https://flossypurse.studio/data/api/mcp \
  --header "Authorization: Bearer tk_your_key"

Cursor · In ~/.cursor/mcp.json.

{
  "mcpServers": {
    "data": {
      "url": "https://flossypurse.studio/data/api/mcp",
      "headers": {
        "Authorization": "Bearer tk_your_key"
      }
    }
  }
}

VS Code · In .vscode/mcp.json.

{
  "servers": {
    "data": {
      "type": "http",
      "url": "https://flossypurse.studio/data/api/mcp",
      "headers": {
        "Authorization": "Bearer tk_your_key"
      }
    }
  }
}

Ask your agent to call tamrack_catalog first. It lists every tool, indicator and municipality, so the agent picks the right tool instead of guessing.

MCP tools

18 tools, read from the server's own registry.

tamrack_catalog · Free API (lists what there is)

Returns the full Data MCP inventory: tools, domains, indicators per domain, live municipalities, and example invocations. Call this first when you don't already know what's available — it's a single call, no parameters, no upstream fetches.

Example: Discover the full Data MCP inventory before issuing any data query. {}

tamrack_macro · by indicator, marked below

Macro indicators for Canada / Alberta: BoC policy rate and CAD/USD (Bank of Canada Valet), StatsCan unemployment / CPI / GDP / housing starts, conventional 5y mortgage rate, Alberta Activity Index.

Example: Bank of Canada policy rate over the last year (daily series). {"indicator":"policy_rate","time_range":"last_year"}

tamrack_regional · depends on the indicator; see plans

Alberta Regional Dashboard — the workhorse municipal indicator surface. 54 indicators (population, labour, permits, sale prices, vacancy, migration, etc.) across ~340 municipalities. Falls back to Postgres snapshots when the upstream API is down.

Example: Edmonton building permit values from the regional dashboard. {"indicator":"Building Permits","municipality":"edmonton"}

tamrack_municipality · depends on the slug; see plans

Registry entry + summary card for a single Alberta municipality (population, region, capabilities, available datasets). Use this when you need to know what a municipality exposes before fanning out across other tools.

Example: Inspect what data is available for Edmonton. {"slug":"edmonton"}

tamrack_real_estate · depends on the municipality; see plans

Municipal real estate datasets — property assessments, building permits, development permits — via ArcGIS / Socrata. Coverage depends on the municipality's registry entry; tools surface `{ available: false, reason }` rather than throwing for unavailable datasets.

Example: Top-25 residential assessments + by-zoning groups for Edmonton. {"municipality":"edmonton","dataset":"assessments","limit":25}

tamrack_housing · Free API

CMHC Housing Market Information — starts, completions, under-construction, vacancy, rents, absorptions, conventional mortgage rate.

Example: Edmonton + Calgary CMA housing starts over the last 5 years (monthly). {"dataset":"starts","time_range":"last_5y"}

tamrack_business · by category, marked below

Business indicators — Edmonton + Calgary licences, StatsCan business counts, GHG facilities + top emitters, WCB classifications, non-profits, ISED corporate counts.

Example: Top 30 Alberta GHG-emitting companies (ECCC). {"category":"top_emitters"}

tamrack_energy · by dataset, marked below

CER pipeline throughput / incidents / apportionment and Alberta oil production. AESO pool price / supply-demand / forecast are charts only: refused through the API on every plan (licence).

Example: NGTL pipeline throughput and utilization (CER monthly CSV). {"dataset":"pipeline_throughput","pipeline":"NGTL"}

tamrack_search · Free API

Long-tail escape hatch — searches the Alberta CKAN catalogue (open.alberta.ca) for datasets the typed tools don't expose. Returns ranked results with dataset ids you can follow up on.

Example: Find Alberta open datasets about wildfire suppression. {"query":"wildfire suppression"}

tamrack_opportunities · Paid API

Demand-side feed — CanadaBuys federal open tender notices (IT/software/AI/data, Alberta + nationally-deliverable), soonest-closing first. Flipped to live by its MCP tool handler, opportunities.ts.

Example: Federal IT/software tenders still open, soonest-closing first. {"dataset":"tenders","open_only":true,"limit":20}

tamrack_hiring · Paid API

Latent-demand hiring signals — Alberta postings for manual-process/automatable back-office roles (Canada Job Bank, ESDC open data), with NOC/sector/city breakdowns + month-over-month momentum. Flipped to live by its MCP tool handler, hiring.ts.

Example: Latest Alberta hiring-strain summary (automatable roles). {"dataset":"signals"}

tamrack_leads · Paid API

Per-geo demand-heat composite — ranks Alberta municipalities by a weighted aggregate of hiring momentum (Job Bank Tier-B postings + MoM growth), permit expansion (municipality permit volume + growth), business formation (Incorporations from Alberta Regional Dashboard), and provincial procurement backdrop (open CanadaBuys tenders). Compute-on-read, no DB writes. Flipped to live by its MCP tool handler, leads.ts.

Example: Top 10 Alberta municipalities by demand-heat composite score. {"dataset":"ranking","limit":10}

tamrack_safety · by dataset, marked below

(v2) Public safety — crime, fire, wildfire, and Alberta 511 alerts. Deferred to v2.

Example: All Alberta municipal Crime Severity Index (latest periods). {"dataset":"crime_severity"}

tamrack_immigration · Paid API

(v2) IRCC immigration data — by category, CMA, occupation, and trend. Deferred to v2.

Example: Alberta PR landings per year. {"dataset":"timeseries"}

tamrack_politics · Charts only

(v2) MLAs, MPs, electoral districts, votes, debates, and election results. Deferred to v2.

Example: List all Alberta MLAs with party and district. {"dataset":"mlas"}

tamrack_fiscal · Paid API

(v2) Provincial grants, federal transfers, federal contracts and grants. Deferred to v2.

Example: Federal transfers to Alberta (all years). {"dataset":"transfers"}

tamrack_environment · Paid API

(v2) Water levels, AQHI air quality, earthquakes, climate. Deferred to v2.

Example: Current Alberta air quality by station. {"dataset":"aqhi"}

tamrack_health · Paid API

(v2) Life expectancy, births/deaths, causes of death. Deferred to v2.

Example: Province-wide top causes of death for the latest stored year. {"dataset":"causes_of_death"}

Found a wrong number or a broken endpoint? Tell us.