Connect Opportunity Exchange and your agent gets 71 tools, among them assess_procurement_relevance, assess_workforce_demand, check_business_health. It answers at https://veilpoint.ca/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 10 of 10 times since 4 September 2026; the last check, on 17 October 2026, succeeded.
Keyless Saskatchewan labour-market data: measured wages and rents, roles, jobs, outcomes, pathways.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
assess_procurement_relevance | 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, suppl Inputs: businessId, includeHistory, limit |
assess_workforce_demand | 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-h Inputs: limit |
check_business_health | 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 Inputs: name, website, address, category, description, phone |
check_comparability | Check whether requested community observations share compatible concepts, units, geographic boundaries, and reference periods; return explicit reasons where they do not. Inputs: entities, bundle, metrics |
check_opportunity_readiness | 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 Inputs: businessId, limit |
compare_communities | Compare 2–10 Saskatchewan communities and return explicit missing-data and comparability results for every requested metric. Inputs: entities, bundle, metrics |
compare_municipalities | 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 ev Inputs: entities, bundle, metrics |
compare_outcomes | 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 m Inputs: occupation, wage |
compare_roles | Compare two or three roles using the shared occupation fields: wages, demand, outlook, entry requirements and work profile. Inputs: ids |
create_sandbox_business | 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 Inputs: name, address, category, description, phone |
evaluate_pathways | 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 plu Inputs: credentials, educationLevel, experienceAreas, licenceClass, currentMunicipalityId, allowedMunicipalityIds |
explain_business_claim | 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 Inputs: businessName |
explain_confidence | Explain the OEX A–D record-confidence vocabulary, its weakest-input rule for derived values, and the interpretation contract. Inputs: confidence |
explain_truth_state | Explain what an OEX truth state permits an agent to claim and return the complete interpretation contract. Inputs: truthState |
find_connected_entities | Find entities connected through governed graph predicates, with source, truth state, confidence, and hop annotations. Inputs: entity, geography, type, bundle, metrics, predicates |
find_potential_customers | 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 in Inputs: businessId |
find_potential_suppliers | 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 neithe Inputs: businessId |
get_business_evidence | Retrieve the governed context and evidence boundary for one business entity. Licence presence establishes snapshot presence only. Inputs: id |
get_business_health | 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 an Inputs: businessId |
get_business_health_markdown | The same report as markdown — the form an owner would hand to whoever maintains their website. Inputs: businessId |
get_community_economy | 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 cann Inputs: code |
get_community_profile | Retrieve one municipality as a governed economic profile with canonical identity, available evidence, links, and qualifications. Inputs: id |
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. |
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 refresh controls. |
get_economic_signal | Get one governed economic signal by its source-stable id, including provenance, lifecycle state, mappings and uncertainty boundaries. Inputs: id |
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 weights, reconciling to provincial totals. Returns benchmark/allo |
get_emerging_signals | Backward-compatible alias for list_economic_signals. Inputs: limit, offset |
get_entity | Retrieve one governed entity record with its evidence, provenance, canonical links, and permitted interpretation. Inputs: type, id |
get_entity_context | 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 a Inputs: type, id |
get_evidence | Retrieve a governed upstream source or runtime provider and its lineage, licence boundary, releases, and serving status. Inputs: id |
get_generated_asset | Get an asset OEX generates from the business's own record: 'local-business-jsonld' or 'corrected-info-block'. Inputs: businessId, assetId |
get_health_action_history | 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. Inputs: businessId, checkId |
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 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. |
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 counts, local-context status and the next defensible data actio |
get_real_estate | 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. Inputs: municipalityId |
get_rents | 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 pr Inputs: province, centre |
get_role | 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). Inputs: id |
get_sector | One sector: its occupations, provider-qualified postings by community, and notable employers. Inputs: id |
get_source_provenance | 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. Inputs: id |
get_trade_overview, get_wage_evidence, get_wages, grant_business_consent, inspect_procurement_activity, investigate_economic_question, list_economic_signals, list_health_capabilities, list_noc_groups, list_roles, list_sandbox_businesses, list_sectors, query_knowledge_graph, rank_communities, recheck_business_health, report_health_action_complete, resolve_citation, resolve_entities, resolve_entity, run_business_study, run_business_study_markdown, search_businesses, search_employers, search_entities, search_hiring_activity, search_licensed_businesses, set_website_domain, start_health_action, summarize_credential_demand, traverse_relationships, update_business_record
Every block below points at https://veilpoint.ca/mcp. Pick your client and copy.
claude mcp add --transport http opportunity-exchange https://veilpoint.ca/mcp
{
"mcpServers": {
"opportunity-exchange": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://veilpoint.ca/mcp"]
}
}
}{
"mcpServers": {
"opportunity-exchange": {
"url": "https://veilpoint.ca/mcp"
}
}
}{
"servers": {
"opportunity-exchange": {
"type": "http",
"url": "https://veilpoint.ca/mcp"
}
}
}{
"context_servers": {
"opportunity-exchange": {
"url": "https://veilpoint.ca/mcp"
}
}
}{
"mcpServers": {
"opportunity-exchange": {
"serverUrl": "https://veilpoint.ca/mcp"
}
}
}{
"mcpServers": {
"opportunity-exchange": {
"url": "https://veilpoint.ca/mcp"
}
}
}name: Opportunity Exchange
version: 0.0.1
schema: v1
mcpServers:
- name: Opportunity Exchange
type: streamable-http
url: https://veilpoint.ca/mcp{
"mcpServers": {
"opportunity-exchange": {
"httpUrl": "https://veilpoint.ca/mcp"
}
}
}{
"mcpServers": {
"opportunity-exchange": {
"type": "http",
"url": "https://veilpoint.ca/mcp"
}
}
}{
"mcpServers": {
"opportunity-exchange": {
"url": "https://veilpoint.ca/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fveilpoint.ca%2Fmcp&type=streamable_http&id=opportunity-exchange&name=Opportunity%20Exchange
It answered our last check on 17 October 2026 in 240 ms. Over 10 checks since 4 September 2026 it answered 10. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by veilpoint.ca and served from veilpoint.ca, the vendor's own domain: https://veilpoint.ca/mcp.
71, as returned by the server's own tools/list on 9 September 2026: assess_procurement_relevance, assess_workforce_demand, check_business_health, check_comparability, check_opportunity_readiness, compare_communities, compare_municipalities, compare_outcomes, and 63 more.
It answered our last check on 17 October 2026 in 240 ms. Over 10 checks since 4 September 2026 it answered 10.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://veilpoint.ca/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: ca.veilpoint. Endpoint host: veilpoint.ca. ARD identifier: urn:air:ca.veilpoint:mcp:opportunity-exchange.
First indexed 31 August 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.