Tolca: Québec contractor check
Server Details
Check Québec construction contractors against official registries in one call: active RBQ licence, RENA public-contract ban and environmental penalties. Clear verdict with dated sources. Free, read-only, no account.
- Status
- Healthy
- Uptime
- 99.9% over 23 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- Tolca
TDQS
Scored across 3 tools
The three tools have largely distinct roles: company_profile is broad business research, qc_contractor_check is a deep four-source Québec verdict, and qc_licence is a fast single-source RBQ status lookup. There is some overlap because company_profile also mentions 'official screening (contractor licences, sanctions)', which could tempt an agent to use it instead of the dedicated Québec tools, but the descriptions explicitly direct agents to the right tool for RENA/environmental checks.
All names are snake_case noun phrases, and the two Québec-specific tools share a clear qc_ prefix, giving a readable, predictable scheme. The only minor deviation is that company_profile lacks the qc_ prefix and uses a different noun ordering, but the convention is still easy to follow.
Three tools is on the lean side, but each earns its place by covering a distinct depth/speed trade-off (broad profile, deep multi-registry verdict, quick licence lookup). The surface is well-scoped for a targeted Québec contractor-checking service.
The core lifecycle is covered: identify a company, verify RBQ licence, and screen against RENA, environmental penalties, and SEAO contracts with a verdict. Minor gaps exist — no batch/multi-contractor operation, no way to search or resolve a name to NEQ, and no historical or renewal tracking — but these are workarounds rather than dead ends.
Available Tools
3 toolscompany_profileCompany profile from a website or nameARead-onlyIdempotentInspect
Get a company's profile in one call, read live from its own website plus official registries: what it does, industry, services, service area, address, phones and emails published by the company (each with the page it came from), social links, and official screening (company registries, contractor licences, US, UK, EU and Canadian sanctions lists). Use when the user asks who a company is, how to contact it, or wants to research a prospect, supplier or partner. Provide domain (preferred) or name, optional city and country. Businesses only, no personal data. Free with a shared daily quota.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| lang | No | ||
| name | No | Company name, used to find the website when no domain is given | |
| domain | No | Company website or domain, e.g. acme.com | |
| country | No | ISO 3166 alpha-2, e.g. CA, US |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive and open-world, so the safety profile is covered; the description adds genuinely new behavioral facts on top: a free tier governed by a shared daily quota and provenance per contact field (each value carries the page it came from). It also discloses data sourcing (live website plus official registries) and the businesses-only personal-data restriction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense paragraph, but the output contents are front-loaded before usage and input guidance, so the reader hits the highest-value information first. It is on the long side and could be split, yet nearly every clause carries distinct information (outputs, triggers, inputs, scope, quota).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of describing what comes back, including provenance for contact data and the screening sources, which is exactly what an agent needs. The gap is the undocumented lang enum parameter, which appears in neither the schema descriptions nor the prose, and no note on result size for companies with sparse web presence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%: name, domain and country are documented in the schema, while city and lang are not. The description compensates by stating that domain is preferred over name and that city and country are optional, which is real selection guidance beyond the schema. The lang parameter remains unexplained in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ("Get a company's profile") and enumerates the concrete contents of the profile: what it does, industry, services, address, phones/emails with source pages, social links, and official registry/licence/sanctions screening. This is far more than a restatement of the name and lets an agent distinguish it from the Quebec-specific siblings qc_contractor_check and qc_licence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names clear triggers ("when the user asks who a company is, how to contact it, or wants to research a prospect, supplier or partner") and gives the input preference ("domain (preferred) or name, optional city and country") plus a scope exclusion ("Businesses only, no personal data"). What it lacks is an explicit routing statement versus the sibling tools, so an agent must infer why to pick this over qc_licence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qc_contractor_checkQuébec contractor checkARead-onlyIdempotentInspect
Check a Québec construction contractor against four official public data sources in one call: active RBQ licence (status, restrictions, bond, authorized work categories), RENA (businesses barred from public contracts and public subcontracts), environmental administrative penalties (MELCCFP) and public contracts awarded on SEAO (count, total amount, main public buyers, last 12 months). Returns a verdict ok / review / blocking / not_found with reasons, sources and extraction dates. Use when the user asks whether a Québec contractor, subcontractor or renovation company is licensed, trustworthy or eligible for public contracts. Provide neq, licence or name.
| Name | Required | Description | Default |
|---|---|---|---|
| neq | No | Québec enterprise number (NEQ), 10 digits | |
| lang | No | Answer language, default fr | |
| name | No | Business name, exact or partial | |
| licence | No | RBQ licence number, e.g. 8315-8105-31 |
Output Schema
| Name | Required | Description |
|---|---|---|
| rbq | Yes | RBQ licence record: licence, neq, name, status, restriction, bond, municipality, subcategory_labels, candidates |
| rena | Yes | Matching RENA entries (public-contract ban) |
| query | Yes | What was searched and how it matched |
| notice | No | |
| reasons | Yes | Plain-language reasons for the verdict |
| sources | Yes | Official sources with extraction dates |
| verdict | Yes | ok = active licence, no RENA, no penalty; review = something to look at; blocking = RENA listing or no active licence; not_found = no match |
| verdict_label | Yes | |
| public_contracts | No | Public contracts awarded on SEAO in the last 12 months: contracts, total_cad, first_award, last_award, buyers, by_category, recent (up to 5), matched_by |
| environmental_penalties | Yes | Matching environmental administrative penalties |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world and non-destructive behavior, so the bar is lower; the description still adds real value by naming the four sources queried, the 12-month contract window, and that extraction dates accompany the verdict. It does not mention latency, rate limits, or what happens when no source matches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded with the key facts (sources first, then when-to-use and inputs). The first sentence is clause-dense, but no sentence is wasted or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not needed, and the description still summarizes the verdict model. Sources, trigger conditions, identifier options and freshness are all covered, which is complete for an agent deciding whether and how to call this multi-source lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds a disjunction not expressed in the schema (zero required params): the caller must supply neq, licence or name. It does not explain acceptable name-matching fuzziness or the effect of lang, though the schema documents both.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (check) plus resource (Québec construction contractor) and enumerates the four data sources and their scope. It clearly differentiates itself from the sibling qc_licence by covering RBQ licence plus RENA, MELCCFP penalties and SEAO contracts in one call, and names the verdict values returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use when the user asks whether a Québec contractor, subcontractor or renovation company is licensed, trustworthy or eligible for public contracts') and tells the agent which identifier to supply. It does not state when to prefer the sibling qc_licence over this broader check, so the alternative-route guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qc_licenceQuébec RBQ licence lookupARead-onlyIdempotentInspect
Fast lookup: does this Québec business hold an ACTIVE RBQ (Régie du bâtiment du Québec) construction licence right now? Returns active true/false, licence number, legal name, NEQ, municipality, restriction flag and authorized work categories. Good for checking several contractors one after another. For the RENA public-contract ban and environmental penalties, use qc_contractor_check. Provide neq, licence or name.
| Name | Required | Description | Default |
|---|---|---|---|
| neq | No | Québec enterprise number (NEQ), 10 digits | |
| lang | No | Answer language, default fr | |
| name | No | Business name, exact or partial | |
| licence | No | RBQ licence number, e.g. 8315-8105-31 |
Output Schema
| Name | Required | Description |
|---|---|---|
| neq | Yes | |
| name | Yes | |
| note | No | |
| query | Yes | |
| active | Yes | true if an ACTIVE RBQ licence was found |
| source | Yes | |
| licence | Yes | |
| candidates | Yes | Other possible matches when the name is ambiguous |
| categories | Yes | Authorized RBQ work subcategories |
| restricted | No | |
| municipality | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely non-structured behavior: the result reflects current status ('right now', ACTIVE), which implies a live external lookup rather than a cached record, and enumerates the returned fields including the restriction flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences with the core capability, return shape, batch hint, sibling exclusion and parameter guidance front-loaded in that order. No filler and nothing repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup with an output schema, an alternative sibling and 100% parameter coverage, the description supplies everything needed: what it answers, what comes back, which identifier to pass, and when to prefer the other tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3. The closing 'Provide neq, licence or name' adds meaning the schema does not: despite zero required parameters, at least one identifier must be supplied, and any of the three is acceptable. That is useful disambiguation beyond the per-field descriptions, though it does not explain precedence when several are supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('does this Québec business hold an ACTIVE RBQ construction licence right now'), plus the exact return payload. It also names the sibling it is not for (RENA ban / environmental penalties), so an agent can distinguish it from qc_contractor_check without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: use this for live RBQ licence status, use qc_contractor_check for the RENA public-contract ban and environmental penalties. It also flags the batch use case ('good for checking several contractors one after another'), which is exactly the kind of when-to-use context that is otherwise invisible.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Added
company_profile
1 tool update
- Changed
qc_contractor_check1 field changed- added
Output schema / properties / public_contractsAdded value: +{ + "additionalProperties": {}, + "description": "Public contracts awarded on SEAO in the last 12 months: contracts, total_cad, first_award, last_award, buyers, by_category, recent (up to 5), matched_by", + "propertyNames": { + "type": "string" + }, + "type": "object" +}
2 tool updates
- First observed
qc_contractor_check - First observed
qc_licence
Publisher details
- Operator
- Tolca · Publisher source
- Operator website
- https://tolca.tonbot.ca · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://tolca.tonbot.ca/llms.txt · Publisher source
- Trust center
- Not available
- Restrictions
- Free and read-only, no account. Daily quota: 10 contractor checks per day. · Publisher source
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityCmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs115 npm58 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1623 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.