{"openapi":"3.1.0","info":{"title":"Canada Tender Radar API","version":"0.1.0","description":"Canada Tender Radar reads the public CanadaBuys open-data CSV files (Public Services and Procurement Canada, Open Government Licence - Canada) so a small business or its agent can run a weekly tender check. new_tenders_since lists federal notices published since a date, search_open_tenders filters the open notices by keyword, UNSPSC or GSIN code, region, category and closing window, and...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://ca-tender-radar.connectorbay.com/mcp.\n\nDisclaimer: General information only, not legal, tax, accounting or payment advice. Canada Tender Radar is an independent tool: it is not affiliated with, endorsed by or operated by any government body, central bank, standards body or scheme operator. Rates, thresholds and rules change; check the cited official source and confirm with a qualified professional before you rely on a result.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/ca-tender-radar/docs"},"termsOfService":"https://connectorbay.com/ca-tender-radar/terms"},"servers":[{"url":"https://ca-tender-radar.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/ca-tender-radar/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/new_tenders_since":{"post":{"operationId":"new_tenders_since","summary":"List federal tender notices published on CanadaBuys since a date, optionally filtered. Default answer about 10 KB (detai","description":"List federal tender notices published on CanadaBuys since a date, optionally filtered. Default answer about 10 KB (detail=summary, at most 12 compact notices); detail=full returns up to limit complete notices, about 55 KB at 50. Use for \"Which new federal tenders for snow removal were published since Monday?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"since":{"description":"Notices published on or after this date, YYYY-MM-DD, for example 2026-09-22","title":"Since","type":"string"},"keywords":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated keywords matched against title, description and category text (any of them), for example 'snow removal, janitorial'","title":"Keywords"},"unspsc":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated UNSPSC code prefixes (2 to 8 digits), for example '72,8111'","title":"Unspsc"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Region of delivery: a province or territory name or two-letter code, for example 'Ontario' or 'BC'","title":"Region"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"goods, services or construction (text match on the procurement category)","title":"Category"},"feed":{"default":"open","description":"'open' (all open notices, default) or 'new' (the two-hourly new-notices file)","title":"Feed","type":"string"},"limit":{"default":50,"description":"Maximum notices returned (1 to 100)","maximum":100,"minimum":1,"title":"Limit","type":"integer"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today in Toronto)","title":"On Date"},"detail":{"default":"summary","description":"'summary' (default): compact rows (reference, title, status, dates, category, regions, entity, link, matched terms), at most 12 notices, about 10 KB; 'full': up to limit complete rows with description excerpts, about 30 KB at 25 and 55 KB at 50 notices","enum":["summary","full"],"title":"Detail","type":"string"}},"required":["since"],"title":"new_tenders_sinceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_open_tenders":{"post":{"operationId":"search_open_tenders","summary":"Search the open federal tender notices by keyword, UNSPSC or GSIN code, region, category, closing window and publication","description":"Search the open federal tender notices by keyword, UNSPSC or GSIN code, region, category, closing window and publication window. Default answer about 10 KB (detail=summary, at most 12 compact notices); detail=full returns up to limit complete notices, about 30 KB at 25. Use for \"Which open federal tenders for laptops deliver to British Columbia?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"keywords":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated keywords matched against title, description and category text (any of them), for example 'snow removal, janitorial'","title":"Keywords"},"unspsc":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated UNSPSC code prefixes (2 to 8 digits), for example '72,8111'","title":"Unspsc"},"gsin":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated GSIN code prefixes (1 to 6 letters or digits), for example 'N7'","title":"Gsin"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Region of delivery: a province or territory name or two-letter code, for example 'Ontario' or 'BC'","title":"Region"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"goods, services or construction (text match on the procurement category)","title":"Category"},"closes_from":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Only notices closing on or after this date, YYYY-MM-DD (default: on_date)","title":"Closes From"},"closes_to":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Only notices closing on or before this date, YYYY-MM-DD","title":"Closes To"},"published_from":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Only notices published on or after this date, YYYY-MM-DD (the publicationDate column of the file; none by default)","title":"Published From"},"published_to":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Only notices published on or before this date, YYYY-MM-DD","title":"Published To"},"limit":{"default":25,"description":"Maximum notices returned (1 to 100)","maximum":100,"minimum":1,"title":"Limit","type":"integer"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today in Toronto)","title":"On Date"},"detail":{"default":"summary","description":"'summary' (default): compact rows (reference, title, status, dates, category, regions, entity, link, matched terms), at most 12 notices, about 10 KB; 'full': up to limit complete rows with description excerpts, about 30 KB at 25 and 55 KB at 50 notices","enum":["summary","full"],"title":"Detail","type":"string"}},"title":"search_open_tendersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/closing_soon":{"post":{"operationId":"closing_soon","summary":"List open federal tenders whose closing date falls in the next N days, soonest first. Default answer about 10 KB (detail","description":"List open federal tenders whose closing date falls in the next N days, soonest first. Default answer about 10 KB (detail=summary, at most 12 compact notices); detail=full returns up to limit complete notices, about 29 KB at 25. Use for \"Which open tenders matching my keywords close in the next 7 days?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"days":{"default":7,"description":"Window in days from on_date, inclusive (1 to 90)","maximum":90,"minimum":1,"title":"Days","type":"integer"},"keywords":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated keywords matched against title, description and category text (any of them), for example 'snow removal, janitorial'","title":"Keywords"},"unspsc":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated UNSPSC code prefixes (2 to 8 digits), for example '72,8111'","title":"Unspsc"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Region of delivery: a province or territory name or two-letter code, for example 'Ontario' or 'BC'","title":"Region"},"limit":{"default":25,"description":"Maximum notices returned (1 to 100)","maximum":100,"minimum":1,"title":"Limit","type":"integer"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today in Toronto)","title":"On Date"},"detail":{"default":"summary","description":"'summary' (default): compact rows (reference, title, status, dates, category, regions, entity, link, matched terms), at most 12 notices, about 10 KB; 'full': up to limit complete rows with description excerpts, about 30 KB at 25 and 55 KB at 50 notices","enum":["summary","full"],"title":"Detail","type":"string"}},"title":"closing_soonArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/tender_details":{"post":{"operationId":"tender_details","summary":"Return every published field of one tender notice (contact-person columns are left out), looked up by reference number. ","description":"Return every published field of one tender notice (contact-person columns are left out), looked up by reference number. Use for \"Give me all the details of tender notice <reference number>\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"reference_number":{"description":"The CanadaBuys reference number of the notice, as shown in search results","title":"Reference Number","type":"string"}},"required":["reference_number"],"title":"tender_detailsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/award_history_lookup":{"post":{"operationId":"award_history_lookup","summary":"Search a fiscal year's CanadaBuys award notices for a business name, category or contracting entity. Use for \"Has this s","description":"Search a fiscal year's CanadaBuys award notices for a business name, category or contracting entity. Use for \"Has this supplier won federal contracts, and for how much?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Words that must all appear in an award notice (business name, category or entity), for example 'snow removal'","title":"Query","type":"string"},"fiscal_year":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Federal fiscal year file, for example 2026-2027 (default: the year of on_date; 2022-2023 to 2026-2027 exist)","title":"Fiscal Year"},"limit":{"default":20,"description":"Maximum notices returned (1 to 100)","maximum":100,"minimum":1,"title":"Limit","type":"integer"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today in Toronto)","title":"On Date"}},"required":["query"],"title":"award_history_lookupArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/tender_columns":{"post":{"operationId":"tender_columns","summary":"Show the actual columns of a CanadaBuys file, how each maps to this connector's fields, and where the official data dict","description":"Show the actual columns of a CanadaBuys file, how each maps to this connector's fields, and where the official data dictionary is. Use for \"What do the columns of the CanadaBuys tender file mean?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"feed":{"default":"open","description":"'open' or 'new' tender file, or 'award' for the current fiscal-year award file","title":"Feed","type":"string"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today in Toronto)","title":"On Date"}},"title":"tender_columnsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}