Search arXiv papers, download full text, semantic search, citation graphs, and alerts via MCP.
Opportunity Exchange is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Keyless Saskatchewan labour-market data: measured wages and rents, roles, jobs, outcomes, pathways.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http opportunity-exchange-mcp https://veilpoint.ca/mcp
# 2 — ask your agent for something these tools do
# investigate_economic_question, inspect_knowledge_frontier, resolve_entities and 69 more
Opportunity Exchange costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http opportunity-exchange-mcp https://veilpoint.ca/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
72 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| question | string | yes | The economic question. Do not include personal or confidential information. |
| entities | array | no | Optional exact entity hints. Use these when a place, business, occupation, sector, signal, or source is not stated unambiguously in the question. |
| minimumConfidence | string | no | — |
| depth | integer | no | Maximum graph traversal depth; default 2. |
| maxEvidenceCalls | integer | no | Maximum governed evidence calls executed; default 6. |
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 a typed governed value or a fixed catalogue constant, no model is invoked, and nothing is derived from prose. This is not a work queue — it carries no identifiers to act on, and OEX accepts no report that a dependency was addressed. A depe
| Parameter | Type | Required | Notes |
|---|---|---|---|
| subjectKind | string | yes | The kind of subject. Kinds any registered inquiry type asks about are listed in the response under admissibility.inquirableSubjectKinds. |
| subjectId | string | yes | The canonical OEX identifier for the subject, such as a municipality slug. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Name, alternate title, slug, or official identifier. |
| type | string | no | Optional entity-type constraint. |
| limit | integer | no | Maximum matches; default 8. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string | yes | — |
| id | string | yes | Exact canonical id, local slug, or name from resolve_entities. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| entity | string | no | Exact name, slug, graph id, NOC code, SGC code, source id, or provider id. |
| geography | string | no | Optional exact municipality name, slug, or SGC code for geography-scoped facts. |
| type | string | no | Optional entity-type constraint. |
| bundle | string | no | Bounded metric preset. municipal-economic-profile-v1 requires one municipality entity. |
| metrics | array | no | Fact metrics, e.g. population. |
| predicates | array | no | Relationship predicates, e.g. classified_as or serves. |
| truthStates | array | no | — |
| minimumConfidence | string | no | — |
| referencePeriodStart | string | no | Inclusive ISO-8601 lower bound for fact reference periods. |
| referencePeriodEnd | string | no | Inclusive ISO-8601 upper bound for fact reference periods. |
| limit | integer | no | Maximum facts, relationships, or listed entities; default 25. |
| depth | integer | no | Hops to expand outward from entity; default 1. Above 1 adds an expansion block of nodes and edges annotated with the hop that reached them, so a containment chain such as municipality -> census-divisi |
| maxNodes | integer | no | Ceiling on entities across the whole expansion; default 200. Distinct from limit, which bounds one level — without it a depth of 2 from a municipality would pull every business in it. |
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.
No parameter schema on file.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| entities | array | yes | Municipality names, local slugs, or SGC codes. |
| bundle | string | no | Comparison metric preset; defaults to municipal-economic-profile-v1. |
| metrics | array | no | Optional additional fact metrics. |
The Saskatchewan occupation catalogue: id, title, NOC code, sector, hourly wage, demand score. Start here to find role ids.
No parameter schema on file.
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).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | string | yes | Role id from list_roles. |
Compare two or three roles using the shared occupation fields: wages, demand, outlook, entry requirements and work profile.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ids | array | yes | Two or three role ids from list_roles. |
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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| q | string | no | Free-text search over title, employer and description. |
| region | string | no | Exact region name. |
| municipality | string | no | Exact municipality name. |
| occupation | string | no | Role id from the occupation catalogue. |
| sector | string | no | Sector id from the sector list. |
| type | string | no | Employment type. |
| minWage | number | no | Minimum hourly wage, CAD. |
| postedWithinDays | integer | no | Only postings newer than this many days. |
| limit | integer | no | Page size, 1-200 (default 50). |
| offset | integer | no | Pagination offset (default 0). |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| occupation | string | no | Role id from list_roles. |
| wage | number | no | Explicit hourly wage, CAD. |
Rank Saskatchewan communities by monthly discretionary income for exactly one role or explicit hourly wage.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| occupation | string | no | Role id whose median wage should be modelled. |
| wage | number | no | Explicit positive hourly wage in CAD. |
| limit | integer | no | Number of ranked communities, 1-20 (default 10). |
Sector rollups with provider-qualified hiring-record counts, median wage and occupation demand. Candidate profiles are excluded. Read meta.evidence before interpreting a count.
No parameter schema on file.
One sector: its occupations, provider-qualified postings by community, and notable employers.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | string | yes | Sector id from list_sectors. |
Aggregate hiring records associated with occupational credential requirements. Candidate profiles and holder counts are excluded; the result describes demand evidence, not a proven shortage.
No parameter schema on file.
Search the public business directory by name, municipality, sector group and observed hiring flag. Preview providers return modelled activity scenarios, not business claims.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| q | string | no | Case-insensitive text search over employer and sector names. |
| municipality | string | no | Municipality id from /api/v1/municipalities. |
| sector | string | no | Sector-group id from /api/v1/sectors. |
| hiring | boolean | no | true to filter on the disclosed hiring flag; preview providers expose modelled scenarios. |
| limit | integer | no | Result limit, 1-100 (default 25). |
Saskatchewan merchandise exports by NAPCS section from Statistics Canada. Station-level CGC rows are excluded pending commercial redistribution permission.
No parameter schema on file.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| municipalityId | string | no | Municipality id (e.g. saskatoon). Omit for all communities. |
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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| municipalityId | string | yes | Municipality id. Only communities with a reviewed snapshot resolve. |
| subsector | string | no | Three-digit NAICS subsector code to filter by, e.g. 484. |
| q | string | no | Business-name contains match. |
| limit | number | no | Rows to return, 1-200 (default 50). |
| offset | number | no | Rows to skip for paging. |
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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| noc | string | no | Five-digit NOC 2021 unit-group code from list_noc_groups. |
| province | string | no | SGC 2021 code, postal abbreviation (e.g. SK), or "canada". |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| province | string | no | SGC 2021 code or postal abbreviation (e.g. SK). |
| centre | string | no | CMHC/StatCan geography code (cmhcCode) from a previous get_rents call. |
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.
No parameter schema on file.
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: const
| Parameter | Type | Required | Notes |
|---|---|---|---|
| credentials | array | no | Credential names held and current, e.g. "WHMIS", "Class 5 Licence". |
| educationLevel | string | no | Highest education level. |
| experienceAreas | array | no | Capability areas with real working experience. |
| licenceClass | string | no | Highest Saskatchewan driver licence currently held. |
| currentMunicipalityId | string | no | Current community, required when maximumRelocationKm is supplied. |
| allowedMunicipalityIds | array | no | Optional destination allowlist. |
| maximumRelocationKm | number | no | Maximum move from currentMunicipalityId; zero means local only. |
| housingBudgetMonthly | number | no | Maximum monthly rent for the requested household. |
| bedroomsRequired | string | no | Rental unit size required by the household. |
| incomeEarners | integer | no | Income earners sharing housing and utilities. |
| householdSize | integer | no | People represented by the regional Market Basket Measure basket. |
| vehicleAvailable | boolean | no | Whether the scenario includes a vehicle commute. |
| savingsDollars | number | no | Cash available for training before funding. |
| maximumRetrainingWeeks | number | no | Maximum acceptable retraining time; zero means direct entry. |
| targetOccupationId | string | no | Role id from list_roles — evaluates that target in depth. |
| limit | number | no | Ranked list size (default 8, max 20). |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| buyerId | string | no | Exact source-scoped organization id from resolve_entities. |
| categoryCode | string | no | Exact eight-digit UNSPSC code from resolve_entities. |
| noticeId | string | no | Exact source-stable procurement-notice id. |
| includeHistory | boolean | no | Include closed historical demand observations; default true. |
| limit | integer | no | Maximum observations returned; default 100. |
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_activ
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessId | string | yes | Exact graph business id, e.g. business:<canonical-id>, from resolve_entities. |
| includeHistory | boolean | no | Include closed notices as historical demand evidence; default false. |
| limit | integer | no | Maximum overlapping notices returned; default 50. |
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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | Maximum rows per view; default 50. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessId | string | yes | Exact graph business id, e.g. business:<canonical-id>, from resolve_entities. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessId | string | yes | Exact graph business id, e.g. business:<canonical-id>, from resolve_entities. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Page size. |
| offset | number | no | Zero-based page offset. |
Get one governed economic signal by its source-stable id, including provenance, lifecycle state, mappings and uncertainty boundaries.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | string | yes | Signal id from list_economic_signals. |
Backward-compatible alias for list_economic_signals.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | — |
| offset | number | no | — |
Read the governed upstream source registry: publisher datasets, stable source ids, licence decisions, approved and excluded uses, checked releases, materialization bindings and refresh controls.
No parameter schema on file.
Read runtime provider contracts grouped as evidence, preview, planned, first-party and derived. Only the evidence group is eligible to support factual claims.
No parameter schema on file.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | string | no | Optional registered source id from get_data_sources or provider id from get_data_providers. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| citation | string | yes | citation.id, citation resolver URL, or versioned citation token. |
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 estim
No parameter schema on file.
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.
No parameter schema on file.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | 7-digit 2021 SGC census subdivision code. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Name, alternate title, slug, or official identifier. |
| type | string | no | Optional entity-type constraint. |
| limit | integer | no | Maximum matches; default 8. |
Retrieve one governed entity record with its evidence, provenance, canonical links, and permitted interpretation.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string | yes | — |
| id | string | yes | Exact canonical id, local slug, or name from resolve_entities. |
Search across supported OEX entity classes using names, aliases, slugs, and official identifiers.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Name, alternate title, slug, or official identifier. |
| type | string | no | Optional entity-type constraint. |
| limit | integer | no | Maximum matches; default 8. |
Search governed municipal licensed-business snapshots without inferring operating health, employment, ownership, or hiring.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| municipalityId | string | yes | Municipality id. Only communities with a reviewed snapshot resolve. |
| subsector | string | no | Three-digit NAICS subsector code to filter by, e.g. 484. |
| q | string | no | Business-name contains match. |
| limit | number | no | Rows to return, 1-200 (default 50). |
| offset | number | no | Rows to skip for paging. |
Retrieve the governed context and evidence boundary for one business entity. Licence presence establishes snapshot presence only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | string | yes | Canonical business id from search_businesses or a graph query. |
Retrieve one municipality as a governed economic profile with canonical identity, available evidence, links, and qualifications.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | string | yes | Municipality name, slug, or SGC code. |
Compare 2–10 Saskatchewan communities and return explicit missing-data and comparability results for every requested metric.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| entities | array | yes | Municipality names, local slugs, or SGC codes. |
| bundle | string | no | Comparison metric preset; defaults to municipal-economic-profile-v1. |
| metrics | array | no | Optional additional fact metrics. |
Retrieve governed Saskatchewan labour-demand evidence while keeping advertised openings, statistical vacancies, live listings, and modelled sector allocations distinct.
No parameter schema on file.
Retrieve wage evidence for an occupation and geography with units, period, source, confidence, and comparability qualifications.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| noc | string | no | Five-digit NOC 2021 unit-group code from list_noc_groups. |
| province | string | no | SGC 2021 code, postal abbreviation (e.g. SK), or "canada". |
Traverse bounded, typed economic relationships from a resolved entity without treating missing edges as false.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| entity | string | no | Exact name, slug, graph id, NOC code, SGC code, source id, or provider id. |
| geography | string | no | Optional exact municipality name, slug, or SGC code for geography-scoped facts. |
| type | string | no | Optional entity-type constraint. |
| bundle | string | no | Bounded metric preset. municipal-economic-profile-v1 requires one municipality entity. |
| metrics | array | no | Fact metrics, e.g. population. |
| predicates | array | no | Relationship predicates, e.g. classified_as or serves. |
| truthStates | array | no | — |
| minimumConfidence | string | no | — |
| referencePeriodStart | string | no | Inclusive ISO-8601 lower bound for fact reference periods. |
| referencePeriodEnd | string | no | Inclusive ISO-8601 upper bound for fact reference periods. |
| limit | integer | no | Maximum facts, relationships, or listed entities; default 25. |
| depth | integer | no | Hops to expand outward from entity; default 1. Above 1 adds an expansion block of nodes and edges annotated with the hop that reached them, so a containment chain such as municipality -> census-divisi |
| maxNodes | integer | no | Ceiling on entities across the whole expansion; default 200. Distinct from limit, which bounds one level — without it a depth of 2 from a municipality would pull every business in it. |
Find entities connected through governed graph predicates, with source, truth state, confidence, and hop annotations.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| entity | string | no | Exact name, slug, graph id, NOC code, SGC code, source id, or provider id. |
| geography | string | no | Optional exact municipality name, slug, or SGC code for geography-scoped facts. |
| type | string | no | Optional entity-type constraint. |
| bundle | string | no | Bounded metric preset. municipal-economic-profile-v1 requires one municipality entity. |
| metrics | array | no | Fact metrics, e.g. population. |
| predicates | array | no | Relationship predicates, e.g. classified_as or serves. |
| truthStates | array | no | — |
| minimumConfidence | string | no | — |
| referencePeriodStart | string | no | Inclusive ISO-8601 lower bound for fact reference periods. |
| referencePeriodEnd | string | no | Inclusive ISO-8601 upper bound for fact reference periods. |
| limit | integer | no | Maximum facts, relationships, or listed entities; default 25. |
| depth | integer | no | Hops to expand outward from entity; default 1. Above 1 adds an expansion block of nodes and edges annotated with the hop that reached them, so a containment chain such as municipality -> census-divisi |
| maxNodes | integer | no | Ceiling on entities across the whole expansion; default 200. Distinct from limit, which bounds one level — without it a depth of 2 from a municipality would pull every business in it. |
Retrieve a governed upstream source or runtime provider and its lineage, licence boundary, releases, and serving status.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| id | string | no | Optional registered source id from get_data_sources or provider id from get_data_providers. |
Explain the OEX A–D record-confidence vocabulary, its weakest-input rule for derived values, and the interpretation contract.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| confidence | string | no | — |
Explain what an OEX truth state permits an agent to claim and return the complete interpretation contract.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| truthState | string | no | — |
Check whether requested community observations share compatible concepts, units, geographic boundaries, and reference periods; return explicit reasons where they do not.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| entities | array | yes | Municipality names, local slugs, or SGC codes. |
| bundle | string | no | Comparison metric preset; defaults to municipal-economic-profile-v1. |
| metrics | array | no | Optional additional fact metrics. |
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 exp
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | The business name. |
| website | string | no | Domain or URL. Worth supplying — nine checks depend on it. |
| address | string | no | — |
| category | string | no | What the business does. |
| description | string | no | How the business describes itself. |
| phone | string | no | — |
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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessName | string | no | Optional — the business being asked about, echoed back for context. |
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. Re
No parameter schema on file.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Trading name for the synthetic business. |
| address | string | no | Optional civic address. |
| category | string | no | Optional industry or category. |
| description | string | no | Optional description of what it does. |
| phone | string | no | Optional phone number. |
List the sandbox businesses that exist, so you can resume working on one.
No parameter schema on file.
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessId | string | yes | — |
The same report as markdown — the form an owner would hand to whoever maintains their website.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessId | string | yes | — |
Correct or complete the business's own record — the fix for most findings about missing or thin information. Supply only the fields you are changing; an omitted field is left alone, not cleared.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessId | string | yes | — |
| name | string | no | — |
| description | string | no | — |
| address | string | no | — |
| category | string | no | — |
| phone | string | no | — |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessId | string | yes | — |
| consentClass | string | yes | — |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessId | string | yes | — |
| domain | string | yes | — |
Get an asset OEX generates from the business's own record: 'local-business-jsonld' or 'corrected-info-block'.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessId | string | yes | — |
| assetId | string | yes | — |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessId | string | yes | — |
| checkId | string | yes | — |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessId | string | yes | — |
| checkId | string | yes | — |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessId | string | yes | — |
| checkId | string | no | Optional: recheck one finding rather than all. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessId | string | yes | — |
| checkId | string | no | — |
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, compe
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessId | string | yes | — |
| limit | number | no | Optional, default 5. How many overlapping notices to assess. |
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-
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessId | string | yes | — |
| objective | string | no | Optional: what the business is trying to accomplish, in its own words. Carried into the study. |
| inspectWebsite | boolean | no | Optional, default false. Inspect the website on record before running, so the stages that compare the site against the record can actually look. Costs one bounded fetch of the claimed domain; without |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| businessId | string | yes | — |
| objective | string | no | Optional: the business’s stated objective. |
| inspectWebsite | boolean | no | Optional, default false. Inspect the website on record before running, so the stages comparing the site against the record can look. Costs one bounded fetch. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Opportunity Exchange or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.0.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Opportunity Exchange can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.