# ca.veilpoint/opportunity-exchange: tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/ca.veilpoint%2Fopportunity-exchange/versions/latest)
- Connected to: https://veilpoint.ca/mcp
- Homepage: https://veilpoint.ca/agents
- Scoring rules: v2
- Tools: 72
- Average: 40.2 / 100 (Cloudy)
- Near-identical pairs: 0

This page shows how ca.veilpoint/opportunity-exchange's tool descriptions scored, the issues found and the names of its tools and parameters. The descriptions are the server's own: read them where the copy came from.

Forecall asked the URL this server lists in the official MCP Registry for its tools/list once, on the date above, without calling any tool. The server may have changed since.

## Across the server

- Major: 72 tools. Above 40, models choose less accurately.
- Minor: The server's instructions are 4402 characters. Claude Code reads only the first 2,048 by default (Codex 0.154.0 reads them whole). Put what the server is for first.

## Tools

- `get_business_health_markdown`: 17 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: businessId.
  - Minor: String arguments with no constraint or example: businessId.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: businessId. Name the tool or the place that returns it, or models look it up first.
- `get_emerging_signals`: 17 / 100
  - Major: The description is too short (4 words).
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: limit, offset.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `get_business_health`: 20 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: businessId.
  - Minor: String arguments with no constraint or example: businessId.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: businessId. Name the tool or the place that returns it, or models look it up first.
- `get_health_action_history`: 20 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: businessId, checkId.
  - Minor: String arguments with no constraint or example: businessId, checkId.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: businessId. Name the tool or the place that returns it, or models look it up first.
- `set_website_domain`: 20 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: businessId, domain.
  - Minor: String arguments with no constraint or example: businessId, domain.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: businessId. Name the tool or the place that returns it, or models look it up first.
- `report_health_action_complete`: 23 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: businessId, checkId.
  - Minor: String arguments with no constraint or example: businessId, checkId.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: businessId, checkId. Name the tool or the place that returns it, or models look it up first.
- `start_health_action`: 23 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: businessId, checkId.
  - Minor: String arguments with no constraint or example: businessId, checkId.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: businessId, checkId. Name the tool or the place that returns it, or models look it up first.
- `update_business_record`: 23 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: businessId, name, description, address, category, phone.
  - Minor: String arguments with no constraint or example: businessId, name, description, address, category, phone.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: businessId. Name the tool or the place that returns it, or models look it up first.
- `explain_confidence`: 24 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: confidence.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `get_generated_asset`: 27 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: businessId, assetId.
  - Minor: String arguments with no constraint or example: businessId.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: businessId, assetId. Name the tool or the place that returns it, or models look it up first.
- `get_sector`: 28 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `grant_business_consent`: 30 / 100
  - Major: Arguments without a description: businessId, consentClass.
  - Minor: String arguments with no constraint or example: businessId.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: businessId. Name the tool or the place that returns it, or models look it up first.
- `run_business_study_markdown`: 30 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: businessId.
  - Minor: String arguments with no constraint or example: businessId.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: businessId. Name the tool or the place that returns it, or models look it up first.
- `explain_truth_state`: 31 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: truthState.
  - Minor: No `required` list, so every argument is optional.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `get_entity`: 32 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: type.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `get_role`: 32 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `check_opportunity_readiness`: 33 / 100
  - Minor: Arguments without a description: businessId.
  - Minor: String arguments with no constraint or example: businessId.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: businessId. Name the tool or the place that returns it, or models look it up first.
- `get_evidence`: 34 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `rank_communities`: 34 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `get_entity_context`: 35 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: type.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `traverse_relationships`: 36 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: truthStates, minimumConfidence.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `get_business_evidence`: 37 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `get_community_profile`: 37 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `get_economic_signal`: 37 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `find_connected_entities`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: truthStates, minimumConfidence.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `get_wage_evidence`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `get_wages`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `list_roles`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `list_sectors`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `search_entities`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `compare_outcomes`: 40 / 100
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `get_real_estate`: 40 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `resolve_citation`: 40 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `search_employers`: 41 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `search_hiring_activity`: 41 / 100
  - Minor: String arguments with no constraint or example: region, municipality.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `compare_roles`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: ids. Name the tool or the place that returns it, or models look it up first.
- `get_community_economy`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `get_data_providers`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `get_data_sources`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `get_labour_demand`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `get_trade_overview`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `list_sandbox_businesses`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `search_businesses`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: String arguments with no constraint or example: q.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: municipalityId. Name the tool or the place that returns it, or models look it up first.
- `search_licensed_businesses`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: String arguments with no constraint or example: q.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `investigate_economic_question`: 43 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: entities[].type, entities[].id, minimumConfidence.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `get_rents`: 44 / 100
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `get_source_provenance`: 44 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `recheck_business_health`: 44 / 100
  - Minor: Arguments without a description: businessId.
  - Minor: String arguments with no constraint or example: businessId.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: businessId. Name the tool or the place that returns it, or models look it up first.
- `inspect_procurement_activity`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `summarize_credential_demand`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `assess_workforce_demand`: 47 / 100
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `list_economic_signals`: 47 / 100
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `list_noc_groups`: 47 / 100
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `resolve_entities`: 47 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `compare_communities`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `get_economy_overview`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `get_municipality_evidence_coverage`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `inspect_knowledge_frontier`: 49 / 100
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `create_sandbox_business`: 50 / 100
  - Minor: String arguments with no constraint or example: address, phone.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `list_health_capabilities`: 50 / 100
  - Minor: Says nothing about what it returns.
- `run_business_study`: 50 / 100
  - Minor: Arguments without a description: businessId.
  - Minor: String arguments with no constraint or example: businessId.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: businessId. Name the tool or the place that returns it, or models look it up first.
- `find_potential_customers`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: businessId. Name the tool or the place that returns it, or models look it up first.
- `find_potential_suppliers`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
  - Minor: Required identifiers whose description does not say where the value comes from: businessId. Name the tool or the place that returns it, or models look it up first.
- `get_knowledge_graph_status`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `check_business_health`: 53 / 100
  - Minor: Arguments without a description: address, phone.
  - Minor: String arguments with no constraint or example: name, address, phone.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `check_comparability`: 54 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `query_knowledge_graph`: 54 / 100
  - Minor: Arguments without a description: truthStates, minimumConfidence.
  - Minor: No `required` list, so every argument is optional.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `resolve_entity`: 54 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `compare_municipalities`: 55 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `evaluate_pathways`: 56 / 100
  - Minor: No `required` list, so every argument is optional.
- `assess_procurement_relevance`: 57 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: No constraints, side effects, auth or rate limits described, and no annotations.
- `explain_business_claim`: 62 / 100
  - Minor: No `required` list, so every argument is optional.

Is your server listed here and you would rather it were not? Email support@forecall.dev, and we will take it off within 7 days.

[All scored servers](https://forecall.dev/en/servers)
