Skip to main content
Glama

Search procurement opportunities

search_opportunities
Read-only

Search every open CanadaBuys and Alberta Purchasing Connection notice for any business. Results are not limited to steel, lumber, aluminum, or construction. Pass description or profile to rank by a TypeSafe Jev supply-fit classification (yes, partial, or no) after a commodity-code prefilter. Keyword-only searches stay lexical. When configured, search terms or business capabilities may be sent to Cohere to select commodity filters. See /privacy. When a business description is present and TypeSafe is configured, notice text and that description are sent to TypeSafe for supply-fit classification. See /privacy.

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum combined results (default 20, max 50)
sourceNoall, federal, or albertaall
profileNoInline business profile used for this call only. Overrides any saved profile. On the shared public endpoint without a subscriber key, this is the way to describe your business.
categoryNoOptional category or sector words. Federal search treats this as free text across the full notice, including UNSPSC and GSIN descriptions. Alberta maps services, goods, and construction to APC codes and still searches other words.
keywordsNoSearch words or phrase
locationNoWhere the business works, such as Red Deer, Alberta.
provinceNoOptional province or delivery region filter
descriptionNoWhat the business does, in plain language. When set, fit classification runs before keyword ranking.
company_nameNoOptional company name.

Output Schema

NameRequiredDescriptionDefault
kindNo
countNo
warningsNo
opportunitiesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, open-world, and non-destructive semantics, so the description goes beyond them by disclosing third-party data flows: search terms or capabilities may be sent to Cohere for commodity filter selection and notice text plus the business description to TypeSafe for supply-fit classification, each with a /privacy pointer. This is meaningful behavioral context an agent would not otherwise have, though result caps and pagination (beyond the limit parameter) are not described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the scope statement and the out-of-scope exclusion first, and each subsequent sentence covers a distinct mode (ranking, keyword-only, Cohere, TypeSafe). The repeated 'See /privacy.' after two sentences adds minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given nine optional parameters, a nested profile object, an output schema, and full schema coverage, the description supplies the missing pieces: what gets searched, how ranking is triggered, and what is transmitted externally. Return shapes are covered by the output schema, so remaining gaps are minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 genuine semantics the schema lacks: description/profile trigger fit classification that runs before keyword ranking, keyword-only queries remain lexical, and capability terms may be forwarded to Cohere. That clarifies the interaction between keywords, category, description, and profile rather than restating field docs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and resource (open CanadaBuys and Alberta Purchasing Connection notices), and explicitly denies a narrow scope ('Results are not limited to steel, lumber, aluminum, or construction'). It does not name or differentiate itself from close siblings such as find_opportunities, search_alberta_opportunities, or find_matching_opportunities, leaving the agent to infer boundaries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains the internal mode switch well: 'Pass description or profile to rank by a TypeSafe Jev supply-fit classification... Keyword-only searches stay lexical.' However, it never says when to choose this tool over the many sibling search/find tools, so the when-to-use guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.