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.
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
errorsaying which. - Every answer carries its licence notice in the
X-Data-Licence-Noticeheader. 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.
- /api/health
- /api/macro
- /api/risk
- /api/cycle
- /api/benchmarks
- /api/corridors
- /api/regional
- /api/housing
- /api/rental
- /api/pipeline
- /api/permits
- /api/assessments
- /api/commercial
- /api/signals
- /api/energy
- /api/electricity
- /api/business
- /api/retail
- /api/projects
- /api/opportunities
- /api/hiring
- /api/leads
- /api/immigration
- /api/fiscal
- /api/politics
- /api/health-data
- /api/crime
- /api/safety
- /api/fire
- /api/wildfire
- /api/environment
- /api/weather
- /api/traffic
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.
| deep | Set 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.
| indicator | Indicator key, e.g. policy_rate, prime_rate, cad_usd, mortgage_5y_fixed, unemployment, employment, cpi, population, gdp, housing_starts, weekly_earnings, retail_sales. |
| periods | How 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.
| municipalities | Comma-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.
| indicator | Indicator name as the dashboard spells it, e.g. "Population". |
| municipality | One 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.
| type | Which 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) |
| city | City 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.
| municipality | Which municipality.edmonton (Paid API) · strathcona (Paid API) · st-albert (Paid API) · parkland (Paid API) · stony-plain (Paid API) |
| type | Default "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.
| municipality | One 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).
| type | Which 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) |
| pipeline | Pipeline key, needed for type=throughput, e.g. NGTL_THROUGHPUT. |
| province | Province for type=production. Default "Alberta". |
| limit | Rows for well_licences and well_operators. Default 100, at most 500. |
| from | Earliest filing date for type=well_licences, YYYY-MM-DD. |
| to | Latest filing date for type=well_licences, YYYY-MM-DD. |
| days | Days 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.
| type | Which dataset to return. Leave it out to get the list of types.pool_price · supply_demand · forecast · price_history |
| start_date | Start date for pool_price and forecast, YYYY-MM-DD. |
| end_date | End date for pool_price, YYYY-MM-DD. |
| days | Days 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 }.
| type | Which 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) |
| limit | Rows. 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.
| type | Which 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.
| type | Which 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.
| type | Which dataset to return. Leave it out to get the list of types.tenders (Paid API) |
| open | Set to "1" for tenders that have not closed yet. |
| closing_before | Only tenders closing before this date, YYYY-MM-DD. |
| limit | Rows. 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.
| type | Which dataset to return. Default "signals".signals (Paid API) |
| month | YYYY-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.
| limit | How 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.
| type | Which dataset to return. Leave it out to get the list of types.category (Paid API) · cma (Paid API) · occupation (Paid API) · trend (Paid API) |
| province | Default "Alberta". Used by category, occupation and trend. |
| cma | Metropolitan 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.
| type | Which 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_year | Fiscal year for type=grants (e.g. 2024-25) or type=sole-source-vendors (e.g. 2024/25). |
| year | Calendar year for type=salary-disclosure, e.g. 2024. |
| line | One revenue line for type=royalties, e.g. oil-sands-royalty. |
| ministry | Part of a ministry name, for type=sole-source, e.g. Health. |
| limit | Rows. 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.
| type | Which 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) |
| limit | Rows 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.
| type | Which dataset to return. Leave it out to get the list of types.life-expectancy (Paid API) · births-deaths (Paid API) · leading-causes (Paid API) |
| municipality | One 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.
| type | Which 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) |
| municipality | One municipality, for type=severity. |
| category | One crime category, for type=calgary-crime, e.g. Assault. |
| police_service | Part of a police service's name, for type=csi-statcan, e.g. Red Deer. |
| year | One 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.
| type | Which 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.
| type | Which 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) |
| limit | Rows for edmonton-recent (default 1000) and edmonton-by-neighbourhood (default 25). |
| years | Years 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.
| type | Which dataset to return. Default "water".water (Paid API) · wildfires (Paid API) · earthquakes (Paid API) |
| days | Days 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.
| type | Which dataset to return. Default "current".current (Paid API) · aqhi (Paid API) · climate (Paid API) |
| station | Climate station id for type=climate. Default "3012216" (Edmonton). |
| limit | Months 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 }.
| type | Which 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.