{"meta":{"platform":"VeilPoint Opportunity Exchange","canonical":"https://veilpoint.ca/api/v1/catalog","retrievedAt":"2026-09-10T11:00:27.413Z","dataStatus":"Factual metadata: this catalogue documents public datasets, identifiers, relationships, methodologies, endpoints, and versioning contracts.","evidence":{"status":"published","truthState":"metadata","scenarioType":"platform_metadata","recordType":"metadata","isActionable":false,"synthetic":false,"confidence":null,"sourceKinds":[],"asOf":null,"qualification":"Factual self-description of the platform, current as served.","assumptions":[]},"citeAs":"VeilPoint Opportunity Exchange, \"Public data and agent contract\", https://veilpoint.ca/api/v1/catalog, retrieved 2026-09-10."},"data":{"apiVersion":"v1","catalogVersion":"1.18.0","identity":"VeilPoint Opportunity Exchange is economic-intelligence infrastructure for businesses, places, industries, workforce, demand and supply, with governed public evidence, a structured economic graph, and AI-ready access. It connects municipal economies, industries, businesses, workforce demand, wages, housing, trade, facilities, training and emerging activity; job postings are analyzed as labour-demand evidence rather than marketplace inventory. The model is geographically extensible; Saskatchewan is the current evidence footprint, alongside national occupational, wage, vacancy and housing reference data.","updateContract":"meta.retrievedAt is the response time; dataset observation and verification dates live in record provenance and /api/v1/sources. ETags change only when data changes.","crossLinkContract":{"version":"1.0.0","field":"links[]","rule":"Every first-class entity emits typed links to the related entities it can support. Reciprocal links are published when the inverse relationship is materialized; unresolved or merely possible relationships are never promoted to links.","target":"target.type + target.id + target.scheme form the stable entity or query-set reference.","navigation":"href is the human route when one exists; api is the machine route when one exists.","strengths":{"direct":"Explicit identity or source relationship.","mapped":"Relationship produced by a governed classification or identifier mapping.","derived":"Relationship produced by a declared computation or query."}},"identifiers":[{"entity":"occupation","primary":"noc","scheme":"NOC 2021 v1.0 unit-group code","localAlias":"id"},{"entity":"municipality","primary":"sgcCode","scheme":"Statistics Canada SGC 2021 census-subdivision code","localAlias":"id"},{"entity":"naics-industry","primary":"code","scheme":"NAICS 2022 sector code","localAlias":null},{"entity":"sector","primary":"id","scheme":"OEX stable sector-group identifier"},{"entity":"job-posting","primary":"id","scheme":"Source-stable hiring-activity observation identifier; recordPurpose=hiring_activity_evidence and isActionable=false"},{"entity":"business","primary":"id","scheme":"Provider or registry-stable business identifier"},{"entity":"organization","primary":"id","scheme":"Official-source or registry-stable organization identifier"},{"entity":"industry","primary":"naics2022","scheme":"NAICS 2022 classification code"},{"entity":"geography","primary":"code","scheme":"Statistics Canada SGC 2021 province code","localAlias":"name"},{"entity":"region","primary":"code","scheme":"Published geographic code where available; normalized source label otherwise"},{"entity":"procurement-notice","primary":"id","scheme":"Source-stable CanadaBuys notice identifier"},{"entity":"product-or-service","primary":"code","scheme":"UNSPSC","localAlias":"label"},{"entity":"procurement-award","primary":"id","scheme":"Source-stable award event identifier"},{"entity":"project","primary":"id","scheme":"Source-stable project event identifier"},{"entity":"employment-event","primary":"id","scheme":"Provider-stable hiring or employment observation identifier"},{"entity":"community-outcome","primary":"id","scheme":"Provider-stable measured outcome identifier"},{"entity":"training-program","primary":"id","scheme":"Provider-stable training-program identifier"},{"entity":"industrial-facility","primary":"id","scheme":"sk-industrial-mining-facilities-id","localAlias":"sourceObjectId"},{"entity":"data-source","primary":"id","scheme":"OEX governed upstream source-register identifier"},{"entity":"data-provider","primary":"id","scheme":"OEX runtime provider identifier"},{"entity":"source-release","primary":"id","scheme":"Registered-source id plus checked artifact name"},{"entity":"rental-market-centre","primary":"cmhcCode","scheme":"CMHC/StatCan geography code (CMA, CA, CSD, or provincial part — see geoLevel)"},{"entity":"open-source-signal","primary":"id","scheme":"OEX source-stable event identifier","localAlias":"contentFingerprint"}],"datasets":[{"id":"occupations","entity":"occupation","html":"/role/{id}","markdown":"/roles.md","endpoint":"/api/v1/roles","bulk":"/data/occupations.json","includeInLlmsStart":true,"includeInFullCorpus":true,"title":"Occupation catalogue","description":"Saskatchewan roles, NOC codes, wages, requirements and pathways.","mcpTools":["list_roles","get_role","compare_roles"]},{"id":"noc-2021","entity":"noc-unit-group","markdown":"/noc.md","endpoint":"/api/v1/noc","bulk":"/data/noc.json","includeInLlmsStart":true,"title":"NOC 2021","description":"All 516 Canadian occupational unit groups with bilingual titles and TEER.","mcpTools":["list_noc_groups"]},{"id":"municipalities","entity":"municipality","html":"/directory","markdown":"/directory.md","endpoint":"/api/v1/municipalities","bulk":"/data/municipalities.json","includeInLlmsStart":true,"includeInFullCorpus":true,"title":"Communities","description":"Saskatchewan municipality profiles, identifiers and business directories.","mcpTools":["get_community_profile","compare_communities"]},{"id":"agent-knowledge-graph","entity":"knowledge-graph-record","endpoint":"/api/v1/graph/query","includeInLlmsStart":true,"title":"Agent knowledge graph","description":"Canonical entity resolution plus bounded fact and relationship traversal with truth state, confidence, period and provenance filters.","mcpTools":["investigate_economic_question","resolve_entity","get_entity","search_entities","query_knowledge_graph","get_knowledge_graph_status","compare_communities","traverse_relationships","find_connected_entities","check_comparability"]},{"id":"citation-layer","entity":"knowledge-citation","endpoint":"/api/v1/citations/{citationId}","title":"OEX citation layer","description":"Stable machine resolution from a public graph assertion id to its canonical entities, source, observation time, truth state, confidence, publication scope, methodology and provenance.","mcpTools":["resolve_citation"]},{"id":"sectors","entity":"sector","html":"/sectors","markdown":"/sectors.md","endpoint":"/api/v1/sectors","bulk":"/data/sectors.json","includeInLlmsStart":true,"includeInFullCorpus":true,"title":"Sectors","description":"Sector rollups derived from occupations and provider-qualified hiring records; response evidence identifies the current truth state.","mcpTools":["list_sectors","get_sector"]},{"id":"hiring-activity","entity":"job-posting-evidence","html":"/labour-demand","markdown":"/labour-demand.md","endpoint":"/api/v1/jobs","bulk":"/data/jobs.json","includeInLlmsStart":true,"title":"Hiring activity evidence","description":"Source-attributed records with recordPurpose=hiring_activity_evidence, observation and verification dates, provenance, and isActionable=false. OEX does not host applications or other hiring transactions.","sourceId":"jobs","mcpTools":["search_hiring_activity"]},{"id":"advertised-demand","entity":"job-demand-observation","bulk":"/data/advertised-demand.json","title":"Measured advertised demand","description":"Monthly Job Bank aggregate evidence; real and measured, but neither current nor actionable.","sourceId":"job-demand"},{"id":"labour-demand-engine","entity":"labour-demand-variable","html":"/labour-demand","endpoint":"/api/v1/labour-demand","includeInLlmsStart":true,"title":"Labour-demand variables","description":"Observed SaskJobs opening marginals, Job Bank detail distributions, modelled sector variables and a GDP composition sensitivity scenario with low-opening sector tilts suppressed and unvalidated parameters identified.","mcpTools":["get_labour_demand"]},{"id":"occupational-profiles","entity":"occupational-profile","bulk":"/data/occupational-profiles.json","title":"Occupational profiles","description":"Published OaSIS skills, abilities, work activities and requirements on the NOC spine.","sourceId":"occupational-profiles"},{"id":"licensed-businesses","entity":"business","html":"/directory/{id}","markdown":"/directory/saskatoon.md","endpoint":"/api/v1/municipalities/saskatoon/businesses","includeInLlmsStart":true,"title":"Licensed businesses","description":"Named businesses holding a municipal licence on the snapshot reference date, with NAICS subsector and commercial address. Existence and industry only — never hiring, size or ownership. Home-based licences carry no address.","sourceId":"city-saskatoon-business-licences-2025","mcpTools":["search_businesses","get_business_evidence"]},{"id":"industrial-facilities","entity":"industrial-facility","html":"/facilities","markdown":"/facilities.md","endpoint":"/api/v1/graph/query?type=industrial-facility","includeInLlmsStart":true,"title":"Industrial and mining facilities","description":"Named Saskatchewan industrial and mining sites with operator, sector, type, region and coordinates. Records roster membership, not current operating, permitting, production or hiring status.","sourceId":"sk-industrial-mining-facilities","mcpTools":["query_knowledge_graph"]},{"id":"business-counts","entity":"business-count-observation","bulk":"/data/business-counts.json","title":"Community business counts","description":"Statistics Canada businesses-with-employees aggregates by geography and industry.","sourceId":"business-counts"},{"id":"cost-baskets","entity":"cost-basket-observation","bulk":"/data/cost-baskets.json","title":"Market Basket Measure costs","description":"Published Saskatchewan MBM regional components and household totals.","sourceId":"cost-baskets"},{"id":"housing-evidence","entity":"housing-evidence-observation","bulk":"/data/housing-evidence.json","title":"Housing evidence","description":"Published housing value and supply observations used by community analysis.","sourceId":"housing-evidence"},{"id":"occupational-outlook","entity":"occupational-outlook-observation","bulk":"/data/occupational-outlook.json","title":"Occupational outlook","description":"COPS 2024–2033 projections by NOC, explicitly published as Canada-wide context rather than Saskatchewan forecasts.","sourceId":"occupational-outlook"},{"id":"education-pipeline","entity":"education-pipeline-observation","bulk":"/data/education-pipeline.json","title":"Education and apprenticeship pipeline","description":"Statistics Canada Saskatchewan enrolment, graduate and trade-certification aggregates; not seats or available workers.","sourceId":"education-pipeline"},{"id":"training-pathways","entity":"training-pathway-evidence","bulk":"/data/training-pathways.json","title":"Training pathways and crosswalks","description":"Published OaSIS requirements plus transparent empirical NOC–CIP and reviewed Saskatchewan trade links; not seats or eligibility rules.","sourceId":"training-pathways"},{"id":"procurement-activity","entity":"procurement-observation","endpoint":"/api/v1/procurement","includeInLlmsStart":true,"title":"Procurement activity evidence","description":"Official CanadaBuys buyer, notice, UNSPSC product/service, geography, lifecycle, amendment, and provenance observations. Current and historical records are non-actionable and do not imply supplier fit or award.","sourceId":"open-source-signals","mcpTools":["inspect_procurement_activity"]},{"id":"procurement-relevance","entity":"business","endpoint":"/api/v1/businesses/procurement-relevance","title":"Business procurement relevance","description":"Category overlap between the supply categories a business has published and the categories official buyers request. Compatibility only: it establishes no qualification, eligibility, supplier relationship, competitiveness, or likelihood of award.","sourceId":"open-source-signals","mcpTools":["assess_procurement_relevance"]},{"id":"workforce-demand","entity":"occupation","endpoint":"/api/v1/workforce-demand","title":"Workforce demand, credentials and training routes","description":"Occupational demand, credential demand, training availability and a constraint indicator, reported separately. Never combined into a shortage claim: that needs a credential-holder denominator OEX does not hold.","sourceId":"oasis-2025","mcpTools":["assess_workforce_demand"]},{"id":"supplier-compatibility","entity":"business","endpoint":"/api/v1/businesses/suppliers","title":"Potential supplier compatibility","description":"Businesses whose published supply categories match what another business has published as things it buys. Compatibility between two published statements: no relationship is asserted, and nothing is matched on industry.","sourceId":"oex-business-participation","mcpTools":["find_potential_suppliers"]},{"id":"customer-compatibility","entity":"business","endpoint":"/api/v1/businesses/customers","title":"Potential customer compatibility","description":"Businesses whose published purchasing categories match what another business says it can supply. Not a customer list: a business appearing in it has expressed no interest in anything.","sourceId":"oex-business-participation","mcpTools":["find_potential_customers"]},{"id":"open-source-signals","entity":"open-source-signal","html":"/signals","markdown":"/signals.md","endpoint":"/api/v1/signals","bulk":"/data/signals.json","includeInLlmsStart":true,"includeInFullCorpus":true,"title":"Economic signals (OSINT)","description":"Governed official-source signal lifecycle; non-actionable and excluded from rankings.","sourceId":"open-source-signals","mcpTools":["list_economic_signals","get_economic_signal"]},{"id":"housing","entity":"municipal-housing-market","html":"/real-estate","markdown":"/real-estate.md","endpoint":"/api/v1/real-estate","bulk":"/data/real-estate.json","includeInLlmsStart":true,"includeInFullCorpus":true,"title":"Housing","description":"Community housing views and the own-versus-rent model.","mcpTools":["get_real_estate"]},{"id":"economy","entity":"community-gdp-estimate","html":"/economy","markdown":"/economy.md","endpoint":"/api/v1/economy","bulk":"/data/economy.json","includeInLlmsStart":true,"includeInFullCorpus":true,"title":"Saskatchewan economy and community GDP","description":"Official provincial headline indicators plus modeled community GDP reconciled to official Saskatchewan sector totals.","mcpTools":["get_economy_overview","get_municipality_evidence_coverage","get_community_economy"]},{"id":"trade","entity":"provincial-trade-flow","html":"/trade","markdown":"/trade.md","endpoint":"/api/v1/trade","bulk":"/data/trade.json","includeInLlmsStart":true,"includeInFullCorpus":true,"title":"Trade","description":"Published Saskatchewan merchandise exports; restricted grain detail excluded.","mcpTools":["get_trade_overview"]},{"id":"wages","entity":"wage-observation","html":"/wages","markdown":"/wages.md","endpoint":"/api/v1/wages","bulk":"/data/wages.json","includeInLlmsStart":true,"includeInFullCorpus":true,"title":"Wages and measured vacancies","description":"LFS wages and JVWS measured vacancy estimates on the NOC spine.","mcpTools":["get_wage_evidence"]},{"id":"rents","entity":"rental-market-centre","html":"/rents","markdown":"/rents.md","endpoint":"/api/v1/rents","bulk":"/data/rents.json","includeInLlmsStart":true,"includeInFullCorpus":true,"title":"Rents","description":"CMHC measured rents and rental vacancy rates by surveyed centre.","mcpTools":["get_rents"]},{"id":"sources","entity":"data-source","html":"/about/data","markdown":"/sources.md","endpoint":"/api/v1/sources","bulk":"/data/sources.json","includeInLlmsStart":true,"includeInFullCorpus":true,"title":"Source registry","description":"Governed upstream publishers, datasets, licences, checked releases and materialization bindings.","mcpTools":["get_data_sources","get_source_provenance","get_evidence","explain_confidence","explain_truth_state"]},{"id":"providers","entity":"data-provider","html":"/about/data","markdown":"/sources.md","endpoint":"/api/v1/providers","bulk":"/data/providers.json","includeInLlmsStart":true,"title":"Provider registry","description":"Runtime delivery contracts separated into evidence, preview, planned, first-party and derived providers.","mcpTools":["get_data_providers"]},{"id":"models","entity":"registered-model","html":"/about/models","markdown":"/models.md","endpoint":"/api/v1/models","bulk":"/data/models.json","includeInLlmsStart":true,"includeInFullCorpus":true,"title":"Derived intelligence model registry","description":"Versioned formulas, inputs, assumptions, sensitivity limits, validation state and prohibited interpretations for published derived outputs."}],"relationships":[{"from":"occupation.noc","to":"noc-unit-group.code","resource":"/api/v1/noc"},{"from":"wage-observation.noc","to":"noc-unit-group.code","resource":"/api/v1/wages?noc={code}"},{"from":"job-posting.occupationId","to":"occupation.id","resource":"/api/v1/jobs"},{"from":"job-posting.municipality","to":"municipality.name|municipality.aliases[]","relationship":"located_in","resource":"/api/v1/jobs","evidenceRule":"Resolve the published location through /api/v1/entities/resolve; a place-name match does not override an available SGC code."},{"from":"occupation.outcomesByCommunity[].municipalityId","to":"municipality.id","resource":"/api/v1/roles/{id}"},{"from":"occupation.trainingPrograms[].id","to":"training-program.id","resource":"/api/v1/roles/{id}"},{"from":"training-program.occupationId","to":"occupation.id","relationship":"trains_for","resource":"/api/v1/roles/{id}"},{"from":"industrial-facility.id","to":"data-source.id","relationship":"sourced_from","resource":"/api/v1/graph/query?type=industrial-facility","evidenceRule":"The source point establishes the published label, type, sector and coordinates only; it does not establish current operating status, legal-company identity, municipality or NAICS."},{"from":"sector.occupations[].id","to":"occupation.id","resource":"/api/v1/sectors/{id}"},{"from":"municipality.businesses[].id","to":"business.id","resource":"/api/v1/municipalities/{id}"},{"from":"economy-community.sgcCode","to":"municipality.sgcCode","relationship":"profile_of","resource":"/api/v1/economy/{code}"},{"from":"municipality.primarySectors[]","to":"sector.id","relationship":"has_primary_sector","resource":"/api/v1/municipalities/{id}","evidenceRule":"Raw source labels require the governed sector mapping; unresolved labels remain aliases rather than edges."},{"from":"procurement-observation.notice.id","to":"procurement-notice.id","relationship":"observes","resource":"/api/v1/procurement","evidenceRule":"The notice remains a dated demand observation after closing; isCurrentlyOpen distinguishes current from historical lifecycle state."},{"from":"procurement-observation.buyer.id","to":"organization.id","relationship":"issued_by","resource":"/api/v1/procurement","evidenceRule":"Source-scoped official buyer identity; no legal-entity merge is inferred."},{"from":"procurement-observation.requestedProductsOrServices[].code","to":"product-or-service.code","relationship":"requests","resource":"/api/v1/procurement","evidenceRule":"Official UNSPSC classification on the notice; not evidence that a business can supply, is eligible for, or won the work."},{"from":"open-source-signal.subjects[entityType=organization].id","to":"organization.id","relationship":"issued_by","resource":"/api/v1/signals","evidenceRule":"Official-source identity only; unresolved identifiers remain null."},{"from":"open-source-signal.geography.code","to":"geography.code","relationship":"located_in","resource":"/api/v1/signals","evidenceRule":"A province or delivery-region edge does not establish a municipality or project site."},{"from":"open-source-signal.naics2022[]","to":"industry.naics2022","relationship":"classified_as_industry","resource":"/api/v1/signals","evidenceRule":"Classification does not establish local business involvement."},{"from":"open-source-signal.graphEdges[relationship=mapped_to_sector].target.id","to":"sector.id","relationship":"mapped_to_sector","resource":"/api/v1/signals","evidenceRule":"The edge remains unresolved until a governed NAICS-to-OEX-sector crosswalk is published."},{"from":"open-source-signal.noc2021[]","to":"noc-unit-group.code","relationship":"associated_with_occupation","resource":"/api/v1/signals","evidenceRule":"Occupational mapping is not evidence that hiring occurred."},{"from":"open-source-signal.corroboratingSignalIds[]","to":"open-source-signal.id","relationship":"corroborated_by","resource":"/api/v1/signals"},{"from":"open-source-signal.graphEdges[relationship=represents_award].target.id","to":"procurement-award.id","relationship":"represents_award","resource":"/api/v1/signals","evidenceRule":"Unresolved until an official award record is linked."},{"from":"open-source-signal.graphEdges[relationship=may_enable_project].target.id","to":"project.id","relationship":"may_enable_project","resource":"/api/v1/signals","evidenceRule":"Proposal or approval evidence does not prove implementation."},{"from":"open-source-signal.graphEdges[relationship=involves_business].target.id","to":"business.id","relationship":"involves_business","resource":"/api/v1/signals","evidenceRule":"Unknown until a participating or awarded business is independently resolved."},{"from":"open-source-signal.graphEdges[relationship=may_influence_hiring].target.id","to":"employment-event.id","relationship":"may_influence_hiring","resource":"/api/v1/signals","evidenceRule":"Unknown until provider-backed hiring evidence is linked."},{"from":"open-source-signal.graphEdges[relationship=may_contribute_to_outcome].target.id","to":"community-outcome.id","relationship":"may_contribute_to_outcome","resource":"/api/v1/signals","evidenceRule":"Unknown until a measured outcome is linked."},{"from":"*.provenance.sources[].name","to":"data-provider.label","resource":"/api/v1/providers"},{"from":"data-provider.provenance.registeredSourceIds[]","to":"data-source.id","relationship":"governed_by","resource":"/api/v1/providers"},{"from":"data-source.materialization.releases[].id","to":"source-release.id","relationship":"materializes","resource":"/api/v1/sources"},{"from":"data-source.materialization.providerIds[]","to":"data-provider.id","relationship":"serves","resource":"/api/v1/sources"}],"methodologies":[{"id":"discretionary-income-v1","resource":"/api/v1/outcomes","description":"Hourly wage to monthly after-tax income, housing, utilities, commuting, and discretionary remainder."},{"id":"pathway-feasibility-v1","resource":"/api/v1/evaluate","description":"Three-state constraint evaluation: meets, does not meet, or needs review."},{"id":"credential-demand-v1","resource":"/api/v1/insights/credential-demand","description":"Provider-qualified hiring-record counts associated with normalized occupational credential requirements."},{"id":"municipal-influence-v1","resource":"/api/admin/demand-intelligence","description":"Authenticated decision actions and linked outcomes aggregated by municipality; operational traffic excluded.","access":"admin"}],"operations":{"liveness":"/api/health","trafficReadiness":"/api/readiness","publicServiceReadiness":"/api/public-service-readiness","publicLaunchStatus":"/api/public-launch-status","legacyPublicLaunchAlias":"/api/ready"},"truthStates":{"preview":"Synthetic demonstration records — structurally realistic, never actionable.","snapshot":"Authoritative data published for a stated reporting period; real, dated, and not real-time.","measured_aggregate":"Statistical survey estimates — measurements of a market, not individual actionable records.","mixed":"Derived from inputs of differing strength; inherits the weakest material input.","live":"Current records from a production-backed provider. Read isActionable separately; live evidence can still be observational and non-transactional.","metadata":"Factual self-description of the platform or its governed contracts."},"evidenceContract":{"reasoningRules":[{"id":"hiring-observation-boundary","appliesTo":["job-posting","posting-evidence","hiring-activity-observation"],"instruction":"Treat hiring records as dated evidence of advertised labour demand. They are not OEX application inventory, proof that a vacancy remains open, or proof that a hire occurred.","prohibitedInferences":["OEX application route","current vacancy without freshness evidence","completed hire"]},{"id":"licensed-business-presence","appliesTo":["licensed-business"],"instruction":"A licensed-business record establishes presence in the authorized municipal snapshot only.","prohibitedInferences":["current operating health","employment","ownership","hiring"]},{"id":"business-verification-scope","appliesTo":["business-verified-field"],"instruction":"A business-verified field was confirmed by the participating business under recorded consent; it does not override a stronger independent measurement when the concepts differ.","prohibitedInferences":["independent measurement","legal-registry status outside the verified field"]},{"id":"do-not-sum-unreconciled-populations","appliesTo":["posting-evidence","licensed-business-count"],"instruction":"Do not add posting-evidenced employers to licensed-business counts unless OEX marks the underlying entities reconciled.","prohibitedInferences":["combined business population"]},{"id":"comparison-boundary","appliesTo":["numeric-observation"],"instruction":"Do not compare or combine values whose periods, units, concepts, geographic levels, or boundaries differ unless OEX marks them comparable.","prohibitedInferences":["rankings from mismatched observations","time trends from incompatible vintages"]},{"id":"modelled-opportunity-boundary","appliesTo":["modelled-opportunity","derived-signal"],"instruction":"A modelled opportunity is a hypothesis for validation, not an observed fact or a purchasing commitment.","prohibitedInferences":["observed demand","confirmed buyer","investment recommendation"]}],"comparability":{"requiredMatches":["concept","unit","geographic level and boundary","reference period"],"missingRule":"A missing fact is unknown, never zero or false.","resultRule":"OEX marks a comparison comparable only when every material observation has compatible concepts, units, geography, and periods."},"citations":{"version":"1.0.0","requiredFields":["stable citation id and resolver","canonical entity identity","value and unit","geography","reference period","truth state","confidence","source or provenance","canonical URL and citeAs text"],"instruction":"Read meta.evidence before quoting a result, preserve material qualifications, and cite the canonical URL returned with the resource. Atomic public graph assertions also carry citation.id and citation.resolver; resolve either through /api/v1/citations/{citationId} or resolve_citation instead of reconstructing provenance from display text.","boundary":"The resolver is a projection of the governed graph assertion, not a second truth store or an immutable historical evidence lock. Private, aggregate-only, withdrawn and absent assertions are never disclosed."}},"discovery":{"agentDocumentation":"/use-with-ai","legacyAgentDocumentation":"/agents","agentDocumentationTwin":"/agents.md","agentCapabilityManifest":"/.well-known/agent-capabilities.json","llmsText":"/llms.txt","llmsFullText":"/llms-full.txt","machineIndex":"/index.md","openapi":"/api/v1/openapi.json","jsonCatalog":"/api/v1/catalog","mcp":"/mcp"},"agentNavigation":{"investigate":"POST /api/v1/investigate with { question, entities?, minimumConfidence?, depth?, maxEvidenceCalls? }","resolve":"/api/v1/entities/resolve?q={name, slug, or official code}","context":"/api/v1/entities/context?type={entity type}&id={name, slug, or official code}","graphQuery":"/api/v1/graph/query?entity={name or code}&metric={metric}&predicate={predicate}","citationResolver":"/api/v1/citations/{citationId}","municipalityIndustryFacts":"/api/v1/graph/query?entity={NAICS code}&type=naics-industry&geography={municipality name or SGC}&metric={metric}","municipalEconomicProfile":"/api/v1/graph/query?entity={municipality name or SGC}&bundle=municipal-economic-profile-v1","municipalityComparison":"/api/v1/graph/municipalities/compare?entity={municipality one}&entity={municipality two}","graphStatus":"/api/v1/graph/status","mcpTools":["investigate_economic_question","resolve_entity","get_entity","search_entities","query_knowledge_graph","get_knowledge_graph_status","compare_communities","check_comparability","resolve_citation"],"rule":"Use investigate for prompt-shaped composition, or resolve user language to a canonical identity before joining datasets directly. Investigation plans are deterministic and expose every evidence call; context responses reuse governed entity resources and retain their evidence envelopes.","knowledgeGraph":{"entityKey":"entityType + canonicalScheme + canonicalId","aliasKey":"scheme + normalizedValue","edgeKey":"subjectEntityId + predicate + objectEntityId + sourceId","factKey":"entityId + metric + geographyEntityId + referencePeriod + sourceId + modelVersion","factRule":"Every fact has exactly one typed value, an explicit unit where applicable, reference/observation dates, truth state, confidence, source id, and model version when derived.","missingRule":"A missing fact or edge is unknown, never zero or false. Possible and unresolved relationships are not materialized.","bundles":{"municipal-economic-profile-v1":{"entityType":"municipality","description":"One municipality profile spanning Census scale and growth, business structure, publishable GDP, confidence, and audited fiscal context where available.","metrics":["population","population_change","population_density","private_dwellings_total","private_dwellings_occupied","land_area","businesses_with_employees","businesses_per_1000_residents","industry_concentration_hhi","owner_estimated_dwelling_value_average","owner_estimated_dwelling_value_median","advertised_job_records","advertised_vacancies","advertised_noc_unit_groups","gdp_current_dollars_estimate","gdp_current_dollars_lower_bound","gdp_current_dollars_upper_bound","gdp_per_capita_estimate","confidence_tier","point_estimate_published","municipal_actual_revenue","municipal_actual_expenses","municipal_long_term_debt","municipal_net_financial_position","municipal_tangible_capital_assets"]}}}}}}