Connection check
verified live · 20h ago
opportunity-exchange
Keyless Saskatchewan labour-market data: measured wages and rents, roles, jobs, outcomes, pathways.
Tools
71
GitHub stars
—
Installs / wk
—
Licence
—
Transport
streamable-http
Last checked
20h ago
Tools & capabilities
71 toolsRead from the running server on 20h ago.
assess_procurement_relevance
limitbusinessId*includeHistory
Compare the supply categories a business has published against the UNSPSC categories official buyers have requested. Returns category compatibility only, classed as inferred_compat… Compare the supply categories a business has published against the UNSPSC categories official buyers have requested. Returns category compatibility only, classed as inferred_compatibility: it establishes no qualification, eligibility, supplier relationship, competitiveness, or likelihood of award, and it never reads capabilities the business withheld from publication. Use inspect_procurement_activity for the buyer-side observations themselves.
assess_workforce_demand
limit
Report occupational demand, credential demand, training availability and a training-route constraint indicator separately. It does not combine them into a shortage claim: a shortag… Report occupational demand, credential demand, training availability and a training-route constraint indicator separately. It does not combine them into a shortage claim: a shortage is a claim about labour supply and requires a credential-holder denominator OEX does not hold. Advertised record counts are counts of advertisements, not of unfilled positions or people needed, and are not deduplicated across employers.
check_business_health
name*phoneaddresswebsitecategorydescription
Run Business Health on a real business from details you supply — the free public check. Use this when someone asks about *their own* business: it needs no account, stores nothing,… Run Business Health on a real business from details you supply — the free public check. Use this when someone asks about *their own* business: it needs no account, stores nothing, and creates no record. Supply the website to unlock the nine checks that read the site. OEX asserts nothing about the business and holds no record of it; the report describes the details given and the site named. For experimenting with the workflow instead, use create_sandbox_business.
check_comparability
bundlemetricsentities*
Check whether requested community observations share compatible concepts, units, geographic boundaries, and reference periods; return explicit reasons where they do not. Check whether requested community observations share compatible concepts, units, geographic boundaries, and reference periods; return explicit reasons where they do not.
check_opportunity_readiness
limitbusinessId*
For each public procurement notice whose requested categories overlap what this business has published, what about the business's OEX representation is in order and what is not. Ev… For each public procurement notice whose requested categories overlap what this business has published, what about the business's OEX representation is in order and what is not. Every gap names the Business Health check that owns it, so the fix is the same one the health report already offers. Establishes category compatibility only: never qualification, eligibility, a supplier relationship, competitiveness, or any likelihood of award. There is no fit score and no probability, and asking for one will not produce one.
compare_communities
bundlemetricsentities*
Compare 2–10 Saskatchewan communities and return explicit missing-data and comparability results for every requested metric. Compare 2–10 Saskatchewan communities and return explicit missing-data and comparability results for every requested metric.
compare_municipalities
bundlemetricsentities*
Compare 2–10 exact Saskatchewan municipalities using the newest governed fact for each standard economic metric. A metric is comparable only when all resolved municipalities have t… Compare 2–10 exact Saskatchewan municipalities using the newest governed fact for each standard economic metric. A metric is comparable only when all resolved municipalities have the same unit and reference period; missing and mismatched evidence is returned explicitly.
compare_outcomes
wageoccupation
The wage-vs-cost join: what an hourly wage actually leaves over each month in every Saskatchewan community, after tax, housing, utilities and commuting. Pass occupation (models its… The wage-vs-cost join: what an hourly wage actually leaves over each month in every Saskatchewan community, after tax, housing, utilities and commuting. Pass occupation (models its median wage, with posting counts; their truth state is in meta.evidence) or wage.
compare_roles
ids*
Compare two or three roles using the shared occupation fields: wages, demand, outlook, entry requirements and work profile. Compare two or three roles using the shared occupation fields: wages, demand, outlook, entry requirements and work profile.
create_sandbox_business
name*phoneaddresscategorydescription
Start here to try Business Health. Creates a synthetic business you may then operate, and returns its id. Sandbox businesses never appear in OEX search, the directory or any public… Start here to try Business Health. Creates a synthetic business you may then operate, and returns its id. Sandbox businesses never appear in OEX search, the directory or any public count — they exist so the workflow can be walked end to end. Give it whatever characteristics the scenario you want to test needs; leaving fields out produces a business with gaps to find.
evaluate_pathways
limitcredentialslicenceClasshouseholdSizeincomeEarnerseducationLevel
+10
The decision tool: evaluate realistic routes into work for a person's stated credentials, education, experience, driver licence, relocation boundary, housing and family needs, savi… The decision tool: evaluate realistic routes into work for a person's stated credentials, education, experience, driver licence, relocation boundary, housing and family needs, savings, and retraining limit. Returns pass/conflict/unknown plus the same ordered, versioned evidence panel used by REST and the human evaluator. OSINT and placeholder values are excluded from ranking. Request-scoped: constraints are evaluated in-process and never stored.
explain_business_claim
businessName
What claiming a business on OEX involves, and how to start. Call this after check_business_health when the person wants to act on the findings inside OEX rather than only on their… What claiming a business on OEX involves, and how to start. Call this after check_business_health when the person wants to act on the findings inside OEX rather than only on their own website — claiming is what unlocks correcting the record, granting consent and verified rechecks. Read-only: it explains the process and returns the URL. You cannot claim a business on someone's behalf, and OEX will not accept an agent's word for who owns a business.
explain_confidence
confidence
Explain the OEX A–D record-confidence vocabulary, its weakest-input rule for derived values, and the interpretation contract. Explain the OEX A–D record-confidence vocabulary, its weakest-input rule for derived values, and the interpretation contract.
explain_truth_state
truthState
Explain what an OEX truth state permits an agent to claim and return the complete interpretation contract. Explain what an OEX truth state permits an agent to claim and return the complete interpretation contract.
find_connected_entities
typedepthlimitbundleentitymetrics
+7
Find entities connected through governed graph predicates, with source, truth state, confidence, and hop annotations. Find entities connected through governed graph predicates, with source, truth state, confidence, and hop annotations.
find_potential_customers
businessId*
Find businesses whose published purchasing categories match the categories a business has published as things it can supply. Returns potential_compatibility only: it is not a custo… Find businesses whose published purchasing categories match the categories a business has published as things it can supply. Returns potential_compatibility only: it is not a customer list, and a business appearing in it has expressed no interest in anything. Nothing is matched on industry. Withheld categories on either side are excluded.
find_potential_suppliers
businessId*
Find businesses whose published supply categories match the categories a business has published as things it buys. Returns potential_compatibility only: no relationship is asserted… Find businesses whose published supply categories match the categories a business has published as things it buys. Returns potential_compatibility only: no relationship is asserted, neither party has said they have done business, and neither may be aware of the other. Nothing is matched on industry. Withheld categories on either side are excluded.
get_business_evidence
id*
Retrieve the governed context and evidence boundary for one business entity. Licence presence establishes snapshot presence only. Retrieve the governed context and evidence boundary for one business entity. Licence presence establishes snapshot presence only.
get_business_health
businessId*
The full health report for a sandbox business: the headline, findings worth attention with an action each, invitations, what passed, and what could not be evaluated. The headline i… The full health report for a sandbox business: the headline, findings worth attention with an action each, invitations, what passed, and what could not be evaluated. The headline is categorical — OEX publishes no numeric health score, in any cycle.
get_business_health_markdown
businessId*
The same report as markdown — the form an owner would hand to whoever maintains their website. The same report as markdown — the form an owner would hand to whoever maintains their website.
get_community_economy
code*
One community’s GDP report by 2021 SGC census subdivision code (e.g. 4708004 for Swift Current): central estimate with the income/production range and every sector’s amount and per… One community’s GDP report by 2021 SGC census subdivision code (e.g. 4708004 for Swift Current): central estimate with the income/production range and every sector’s amount and percentage share, or the suppression reason where the data cannot support a point estimate. Codes come from get_economy_overview or /api/v1/economy.
get_community_profile
id*
Retrieve one municipality as a governed economic profile with canonical identity, available evidence, links, and qualifications. Retrieve one municipality as a governed economic profile with canonical identity, available evidence, links, and qualifications.
get_data_providers
Read runtime provider contracts grouped as evidence, preview, planned, first-party and derived. Only the evidence group is eligible to support factual claims. Read runtime provider contracts grouped as evidence, preview, planned, first-party and derived. Only the evidence group is eligible to support factual claims.
get_data_sources
Read the governed upstream source registry: publisher datasets, stable source ids, licence decisions, approved and excluded uses, checked releases, materialization bindings and ref… Read the governed upstream source registry: publisher datasets, stable source ids, licence decisions, approved and excluded uses, checked releases, materialization bindings and refresh controls.
get_economic_signal
id*
Get one governed economic signal by its source-stable id, including provenance, lifecycle state, mappings and uncertainty boundaries. Get one governed economic signal by its source-stable id, including provenance, lifecycle state, mappings and uncertainty boundaries.
get_economy_overview
Modeled community GDP for Saskatchewan: official provincial sector GDP (36-10-0711-01, 2022 current dollars) allocated across all 951 census subdivisions by measured activity weigh… Modeled community GDP for Saskatchewan: official provincial sector GDP (36-10-0711-01, 2022 current dollars) allocated across all 951 census subdivisions by measured activity weights, reconciling to provincial totals. Returns benchmark/allocated/residual totals, top communities, the official 2017–2025 Saskatchewan real-GDP series, and the calculation version. Community figures are structured estimates, not official measurements.
get_emerging_signals
limitoffset
Backward-compatible alias for list_economic_signals. Backward-compatible alias for list_economic_signals.
get_entity
id*type*
Retrieve one governed entity record with its evidence, provenance, canonical links, and permitted interpretation. Retrieve one governed entity record with its evidence, provenance, canonical links, and permitted interpretation.
get_entity_context
id*type*
Fetch the governed context for one resolved entity in a single call. Accepts a canonical id, local slug or exact name and routes to the existing occupation, municipality, sector, t… Fetch the governed context for one resolved entity in a single call. Accepts a canonical id, local slug or exact name and routes to the existing occupation, municipality, sector, training, NOC or source resource so evidence and provenance are preserved.
get_evidence
id
Retrieve a governed upstream source or runtime provider and its lineage, licence boundary, releases, and serving status. Retrieve a governed upstream source or runtime provider and its lineage, licence boundary, releases, and serving status.
get_generated_asset
assetId*businessId*
Get an asset OEX generates from the business's own record: 'local-business-jsonld' or 'corrected-info-block'. Get an asset OEX generates from the business's own record: 'local-business-jsonld' or 'corrected-info-block'.
get_health_action_history
checkIdbusinessId*
The event history for a sandbox business: what was detected, what the owner reported, and what a recheck verified — with the timestamps that make the sequence auditable. The event history for a sandbox business: what was detected, what the owner reported, and what a recheck verified — with the timestamps that make the sequence auditable.
get_knowledge_graph_status
Return the current database graph inventory by entity type, predicate and metric plus deterministic core reconciliation. ok=true means every governed core entity, alias, edge and f… Return the current database graph inventory by entity type, predicate and metric plus deterministic core reconciliation. ok=true means every governed core entity, alias, edge and fact is present; additional materializers may add records.
get_labour_demand
Retrieve governed Saskatchewan labour-demand evidence while keeping advertised openings, statistical vacancies, live listings, and modelled sector allocations distinct. Retrieve governed Saskatchewan labour-demand evidence while keeping advertised openings, statistical vacancies, live listings, and modelled sector allocations distinct.
get_municipality_evidence_coverage
Evidence availability and confidence-gate work queue for all 17 Saskatchewan cities and 149 towns. Returns current Tier A–D counts, evidence-domain coverage, public-model input cou… Evidence availability and confidence-gate work queue for all 17 Saskatchewan cities and 149 towns. Returns current Tier A–D counts, evidence-domain coverage, public-model input counts, local-context status and the next defensible data action for each municipality.
get_real_estate
municipalityId
Housing market by community: median price, listings, market velocity, and the own-vs-rent monthly cost on the local wage. Pass municipalityId for one community with the price trend… Housing market by community: median price, listings, market velocity, and the own-vs-rent monthly cost on the local wage. Pass municipalityId for one community with the price trend and full ownership model.
get_rents
centreprovince
Measured rental markets (CMHC Rental Market Survey via Statistics Canada, real data): average rents by unit type (bachelor to 3+ bedroom) and rental vacancy rates for every surveye… Measured rental markets (CMHC Rental Market Survey via Statistics Canada, real data): average rents by unit type (bachelor to 3+ bedroom) and rental vacancy rates for every surveyed centre in Canada, October survey. Pass province for one province’s centres, centre (cmhcCode) for one centre, neither for the national overview. Suppressed cells are null and unsurveyed centres absent — never zero.
get_role
id*
One occupation in full: market figures, entry requirements, working conditions, training programs, and per-community outcomes (net and discretionary monthly income at the median wa… One occupation in full: market figures, entry requirements, working conditions, training programs, and per-community outcomes (net and discretionary monthly income at the median wage).
get_sector
id*
One sector: its occupations, provider-qualified postings by community, and notable employers. One sector: its occupations, provider-qualified postings by community, and notable employers.
get_source_provenance
id
Resolve either a governed upstream source id or runtime provider id. Returns the matching source or categorized provider with its lineage; omit id for the upstream source registry. Resolve either a governed upstream source id or runtime provider id. Returns the matching source or categorized provider with its lineage; omit id for the upstream source registry.
get_trade_overview
Saskatchewan merchandise exports by NAPCS section from Statistics Canada. Station-level CGC rows are excluded pending commercial redistribution permission. Saskatchewan merchandise exports by NAPCS section from Statistics Canada. Station-level CGC rows are excluded pending commercial redistribution permission.
get_wage_evidence
nocprovince
Retrieve wage evidence for an occupation and geography with units, period, source, confidence, and comparability qualifications. Retrieve wage evidence for an occupation and geography with units, period, source, confidence, and comparability qualifications.
get_wages
nocprovince
Measured wages and vacancies (Statistics Canada, real data): LFS median/average hourly wages by occupation group × province, and JVWS job vacancies with average offered hourly wage… Measured wages and vacancies (Statistics Canada, real data): LFS median/average hourly wages by occupation group × province, and JVWS job vacancies with average offered hourly wage by NOC 2021 unit group × province/territory. Pass noc for one unit group across geographies, province for one geography, both for one cell, neither for the national overview. Wage medians are group-level; each estimate names the published grouping that answered.
grant_business_consent
businessId*consentClass*
Grant a purpose-scoped consent on behalf of the sandbox business. This is what an invitation in the report is asking for. The classes are separate on purpose: granting one never wi… Grant a purpose-scoped consent on behalf of the sandbox business. This is what an invitation in the report is asking for. The classes are separate on purpose: granting one never widens another.
inspect_procurement_activity
limitbuyerIdnoticeIdcategoryCodeincludeHistory
Inspect official Saskatchewan CanadaBuys procurement observations by buyer, notice, or UNSPSC product/service category. Returns current and historical lifecycle evidence, amendment… Inspect official Saskatchewan CanadaBuys procurement observations by buyer, notice, or UNSPSC product/service category. Returns current and historical lifecycle evidence, amendments, conflicts, provenance, and explicit missing-evidence boundaries. It does not rank tenders, infer supplier fit, or expose private supplier/customer relationships.
investigate_economic_question
depthentitiesquestion*maxEvidenceCallsminimumConfidence
Turn a natural-language economic question into an inspectable deterministic plan, resolve governed entities, execute a bounded set of existing OEX graph/data primitives, and return… Turn a natural-language economic question into an inspectable deterministic plan, resolve governed entities, execute a bounded set of existing OEX graph/data primitives, and return a citation-ready evidence bundle. OEX does not invoke a hosted model or generate a hidden reasoning chain; synthesize only from the returned evidence and limitations.
list_economic_signals
limitoffset
List governed Saskatchewan economic signals from official structured sources. Each row preserves lifecycle state and uncertainty; notices do not prove an award, project, hiring or… List governed Saskatchewan economic signals from official structured sources. Each row preserves lifecycle state and uncertainty; notices do not prove an award, project, hiring or outcome.
list_health_capabilities
What Business Health can actually inspect, fix, generate, verify and escalate — every check, what evidence it reads, what it needs before it will run, and what it offers as a fix.… What Business Health can actually inspect, fix, generate, verify and escalate — every check, what evidence it reads, what it needs before it will run, and what it offers as a fix. Read this before promising a business anything: it is the authoritative list of what OEX can do about a finding, and it distinguishes the checks that run for anyone from the ones that need a claim or a verified claim. Read-only, needs no account and no business, and answers even when the database is down.
list_noc_groups
The complete NOC 2021 occupational classification: all 516 unit groups with bilingual titles, TEER tiers, and platform coverage flags. Use to map any Canadian occupation to its cod… The complete NOC 2021 occupational classification: all 516 unit groups with bilingual titles, TEER tiers, and platform coverage flags. Use to map any Canadian occupation to its code.
list_roles
The Saskatchewan occupation catalogue: id, title, NOC code, sector, hourly wage, demand score. Start here to find role ids. The Saskatchewan occupation catalogue: id, title, NOC code, sector, hourly wage, demand score. Start here to find role ids.
list_sandbox_businesses
List the sandbox businesses that exist, so you can resume working on one. List the sandbox businesses that exist, so you can resume working on one.
list_sectors
Sector rollups with provider-qualified hiring-record counts, median wage and occupation demand. Candidate profiles are excluded. Read meta.evidence before interpreting a count. Sector rollups with provider-qualified hiring-record counts, median wage and occupation demand. Candidate profiles are excluded. Read meta.evidence before interpreting a count.
query_knowledge_graph
typedepthlimitbundleentitymetrics
+7
Query the materialized semantic graph without downloading whole datasets. Resolve an entity name/code and optional municipality geography, then return typed facts and relationships… Query the materialized semantic graph without downloading whole datasets. Resolve an entity name/code and optional municipality geography, then return typed facts and relationships. This supports municipality-by-NAICS GDP and business queries without encoding classifications in metric names. Missing facts or edges mean unknown, never zero or false.
rank_communities
wagelimitoccupation
Rank Saskatchewan communities by monthly discretionary income for exactly one role or explicit hourly wage. Rank Saskatchewan communities by monthly discretionary income for exactly one role or explicit hourly wage.
recheck_business_health
checkIdbusinessId*
Ask OEX to look again — what a business does after fixing something. Inspects the website if one is supplied. Rate-limited, and a check that could not run is reported as unable-to-… Ask OEX to look again — what a business does after fixing something. Inspects the website if one is supplied. Rate-limited, and a check that could not run is reported as unable-to-verify rather than as fixed.
report_health_action_complete
checkId*businessId*
Record that the owner says a finding is fixed. This is their claim, not OEX's: nothing renders as resolved until a recheck runs and the check actually passes. Record that the owner says a finding is fixed. This is their claim, not OEX's: nothing renders as resolved until a recheck runs and the check actually passes.
resolve_citation
citation*
Resolve a public graph assertion citation to its canonical entity or entities, exact assertion, source, observation time, truth state, confidence, publication scope, methodology an… Resolve a public graph assertion citation to its canonical entity or entities, exact assertion, source, observation time, truth state, confidence, publication scope, methodology and provenance. Accepts the OEX citation URN, token, or resolver URL returned beside a graph fact or relationship.
resolve_entities
typelimitquery*
Resolve a user-supplied name, slug, NOC code, SGC code, program, sector or governed source to its canonical OEX identity. Call this before joining datasets when the identifier is u… Resolve a user-supplied name, slug, NOC code, SGC code, program, sector or governed source to its canonical OEX identity. Call this before joining datasets when the identifier is uncertain. Results include the correct follow-up MCP tool and arguments.
resolve_entity
typelimitquery*
Resolve user language or an official code to the canonical OEX identity and the correct next tool. Returns ranked candidates when the input is ambiguous. Resolve user language or an official code to the canonical OEX identity and the correct next tool. Returns ranked candidates when the input is ambiguous.
run_business_study
objectivebusinessId*inspectWebsite
Run the Guided Business Study on a sandbox business: Business Health plus the three analytical instruments — Negative Space (what would be expected here and is not observed), Bound… Run the Guided Business Study on a sandbox business: Business Health plus the three analytical instruments — Negative Space (what would be expected here and is not observed), Boundary Fracture (values that exist on one of the business’s own surfaces and never crossed to the other), and Strategic Node Finder (the one intervention that addresses several findings at once) — composed into one lineage-preserving result. Reads only the evidence OEX already holds; this tool never fetches the website. Every conclusion cites the evidence behind it, insufficient evidence returns explicit unknowns rather than guesses, and zero strategic nodes is a real answer.
run_business_study_markdown
objectivebusinessId*inspectWebsite
The same Guided Business Study as a markdown document — the form a study is handed over in, with each stage’s findings beside its own evidence table. The same Guided Business Study as a markdown document — the form a study is handed over in, with each stage’s findings beside its own evidence table.
search_businesses
qlimitoffsetsubsectormunicipalityId*
Search governed municipal licensed-business snapshots without inferring operating health, employment, ownership, or hiring. Search governed municipal licensed-business snapshots without inferring operating health, employment, ownership, or hiring.
search_employers
qlimithiringsectormunicipality
Search the public business directory by name, municipality, sector group and observed hiring flag. Preview providers return modelled activity scenarios, not business claims. Search the public business directory by name, municipality, sector group and observed hiring flag. Preview providers return modelled activity scenarios, not business claims.
search_entities
typelimitquery*
Search across supported OEX entity classes using names, aliases, slugs, and official identifiers. Search across supported OEX entity classes using names, aliases, slugs, and official identifiers.
search_hiring_activity
qtypelimitoffsetregionsector
+4
Source-attributed hiring-activity evidence, newest first and filterable by occupation, sector and geography. data.recordPurpose and each row recordPurpose are hiring_activity_evide… Source-attributed hiring-activity evidence, newest first and filterable by occupation, sector and geography. data.recordPurpose and each row recordPurpose are hiring_activity_evidence; rows are observations with isActionable=false, not jobs offered for application through OEX. Check observationDate, lastVerifiedAt, provenance, meta.evidence.truthState and synthetic before using a record as current evidence.
search_licensed_businesses
qlimitoffsetsubsectormunicipalityId*
Named businesses holding a municipal licence in one community, from an attributed City snapshot. Answers who exists and in which industry, NOT who is hiring — use search_employers… Named businesses holding a municipal licence in one community, from an attributed City snapshot. Answers who exists and in which industry, NOT who is hiring — use search_employers for that. Each row is a licence held on the reference date: it is not a legal-entity register, not current beyond that date, incomplete for excluded licence categories, and not evidence of ownership, employment, size or operating health. Home-based licences carry no address.
set_website_domain
domain*businessId*
Tell OEX the business's website so it can be inspected. Supplying a domain permits inspection; it does not assert that the business owns or controls it, and OEX will not publish th… Tell OEX the business's website so it can be inspected. Supplying a domain permits inspection; it does not assert that the business owns or controls it, and OEX will not publish the domain as the business's own on this basis alone.
start_health_action
checkId*businessId*
Record that work on a finding has begun — the owner opening the action. Moves the finding's action state, which is what makes its history readable later. Record that work on a finding has begun — the owner opening the action. Moves the finding's action state, which is what makes its history readable later.
summarize_credential_demand
Aggregate hiring records associated with occupational credential requirements. Candidate profiles and holder counts are excluded; the result describes demand evidence, not a proven… Aggregate hiring records associated with occupational credential requirements. Candidate profiles and holder counts are excluded; the result describes demand evidence, not a proven shortage.
traverse_relationships
typedepthlimitbundleentitymetrics
+7
Traverse bounded, typed economic relationships from a resolved entity without treating missing edges as false. Traverse bounded, typed economic relationships from a resolved entity without treating missing edges as false.
update_business_record
namephoneaddresscategorybusinessId*description