# ca.veilpoint/opportunity-exchange

Keyless Saskatchewan labour-market data: measured wages and rents, roles, jobs, outcomes, pathways.

- **Type:** MCP server
- **Trust:** 60/100 (B), scored on the content rubric
- **Verification:** community-indexed — nobody has claimed this listing
- **Version:** 1.0.0
- **Author:** ca.veilpoint
- **License:** Unknown
- **Endpoints:** streamable-http https://veilpoint.ca/mcp
- **Source:** https://veilpoint.ca/agents
- **Endpoint health:** reachable (last checked 2026-09-17T17:16:33.120Z, 4 samples) — uptime is not a security property and is not part of the trust score
- **Compatible clients:** claude-code, cursor, copilot, chatgpt, gemini (basis: transport)

## Trust

60/100 (B), scored on the content rubric
- Publisher verified: no
- Install scripts: nothing suspicious found
- Prompt-injection scan: clean
- Obfuscation scan: clean
- Evidence age: 1 day

## Security scan

- **Status:** clean
- **Scanned:** 2026-09-17T17:16:33.120Z
- **Version scanned:** live
- **CVEs:** no coverage — this entry has no package coordinates to query OSV against, so "no known CVEs" is NOT asserted for it.

## Tools

72 declared. Observed from a live `tools/list` probe.
- `investigate_economic_question` — Turn a natural-language economic question into an inspectable deterministic plan, resolve governed entities, execute a bounded set of existing OEX graph/data pr
- `inspect_knowledge_frontier` — What OEX has asked about a subject, what it could not conclude, why, and which registered question logically follows. Governed and deterministic: every field is
- `resolve_entities` — 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
- `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, mun
- `query_knowledge_graph` — Query the materialized semantic graph without downloading whole datasets. Resolve an entity name/code and optional municipality geography, then return typed fac
- `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 entit
- `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 m
- `list_roles` — The Saskatchewan occupation catalogue: id, title, NOC code, sector, hourly wage, demand score. Start here to find role ids.
- `get_role` — One occupation in full: market figures, entry requirements, working conditions, training programs, and per-community outcomes (net and discretionary monthly inc
- `compare_roles` — Compare two or three roles using the shared occupation fields: wages, demand, outlook, entry requirements and work profile.
- `search_hiring_activity` — Source-attributed hiring-activity evidence, newest first and filterable by occupation, sector and geography. data.recordPurpose and each row recordPurpose are h
- `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 oc
- `rank_communities` — Rank Saskatchewan communities by monthly discretionary income for exactly one role or explicit hourly wage.
- `list_sectors` — Sector rollups with provider-qualified hiring-record counts, median wage and occupation demand. Candidate profiles are excluded. Read meta.evidence before inter
- `get_sector` — One sector: its occupations, provider-qualified postings by community, and notable employers.
- `summarize_credential_demand` — Aggregate hiring records associated with occupational credential requirements. Candidate profiles and holder counts are excluded; the result describes demand ev
- `search_employers` — Search the public business directory by name, municipality, sector group and observed hiring flag. Preview providers return modelled activity scenarios, not bus
- `get_trade_overview` — Saskatchewan merchandise exports by NAPCS section from Statistics Canada. Station-level CGC rows are excluded pending commercial redistribution permission.
- `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 
- `search_licensed_businesses` — 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 — u
- `get_wages` — Measured wages and vacancies (Statistics Canada, real data): LFS median/average hourly wages by occupation group × province, and JVWS job vacancies with average
- `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 rat
- `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 o
- `evaluate_pathways` — The decision tool: evaluate realistic routes into work for a person's stated credentials, education, experience, driver licence, relocation boundary, housing an
- `inspect_procurement_activity` — Inspect official Saskatchewan CanadaBuys procurement observations by buyer, notice, or UNSPSC product/service category. Returns current and historical lifecycle
- `assess_procurement_relevance` — Compare the supply categories a business has published against the UNSPSC categories official buyers have requested. Returns category compatibility only, classe
- `assess_workforce_demand` — Report occupational demand, credential demand, training availability and a training-route constraint indicator separately. It does not combine them into a short
- `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 rela
- `find_potential_customers` — Find businesses whose published purchasing categories match the categories a business has published as things it can supply. Returns potential_compatibility onl
- `list_economic_signals` — List governed Saskatchewan economic signals from official structured sources. Each row preserves lifecycle state and uncertainty; notices do not prove an award,
- `get_economic_signal` — Get one governed economic signal by its source-stable id, including provenance, lifecycle state, mappings and uncertainty boundaries.
- `get_emerging_signals` — Backward-compatible alias for list_economic_signals.
- `get_data_sources` — Read the governed upstream source registry: publisher datasets, stable source ids, licence decisions, approved and excluded uses, checked releases, materializat
- `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_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 upstr
- `resolve_citation` — Resolve a public graph assertion citation to its canonical entity or entities, exact assertion, source, observation time, truth state, confidence, publication s
- `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 mea
- `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, pu
- `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 sec
- `resolve_entity` — 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.
- …and 32 more

## Install

**Verdict: review** — Installable, but 2 things to check first: No CVE coverage: this entry has no npm/PyPI coordinates to query OSV against, so "no known vulnerabilities" is not a claim that can be made about it.
**Cautions** (coverage gaps and advisories — never blocking)
- No CVE coverage: this entry has no npm/PyPI coordinates to query OSV against, so "no known vulnerabilities" is not a claim that can be made about it.
- No publisher has proved control of this listing; it is indexed, not vouched for.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"opportunity-exchange\": {\n      \"type\": \"http\",\n      \"url\": \"https://veilpoint.ca/mcp\"\n    }\n  }\n}"
```

## Blast radius

Contained to moderate — no credential declaration found, from the publisher, the upstream registry, or the README. Known so far: runs on someone else's infrastructure; read-only tool surface.
- Floor 9, ceiling 27 (tier: unknown)
- `unknown` means the floor and ceiling land in different bands — not measured enough to name one. It does not mean low.
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/ca.veilpoint%2Fopportunity-exchange
- Install plan: https://forgeregistry.com/api/v1/packages/ca.veilpoint%2Fopportunity-exchange/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/ca.veilpoint%2Fopportunity-exchange
- HTML page: https://forgeregistry.com/registry/ca.veilpoint%2Fopportunity-exchange
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
