{"openapi":"3.1.0","info":{"title":"UK Tender Radar API","version":"0.1.0","description":"UK Tender Radar reads the public Contracts Finder OCDS search (Cabinet Office, England and non-devolved bodies) and the Find a Tender OCDS release packages (above-threshold notices) so a small business or its agent can run a weekly tender check. search_notices filters notices published in a date window by keyword, CPV code, region, value band and SME suitability, notices_closing_soon lists open...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://uk-tender-radar.connectorbay.com/mcp.\n\nDisclaimer: General information only, not legal, tax, accounting or payment advice. UK 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/uk-tender-radar/docs"},"termsOfService":"https://connectorbay.com/uk-tender-radar/terms"},"servers":[{"url":"https://uk-tender-radar.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/uk-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/search_notices":{"post":{"operationId":"search_notices","summary":"Search Contracts Finder notices published in a date window by keyword, CPV code, region, value band and SME suitability.","description":"Search Contracts Finder notices published in a date window by keyword, CPV code, region, value band and SME suitability. Use for \"Which new public-sector tenders for grounds maintenance were published this week?\".","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, CPV description and buyer (any of them), for example 'grounds maintenance, landscaping'","title":"Keywords"},"cpv":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated CPV codes or prefixes (2 to 8 digits), for example '77314100' or '72,4541'","title":"Cpv"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Text matched against the buyer's and delivery addresses (town, region name or postcode area), for example 'Leeds' or 'LS'; at most 200 characters","title":"Region"},"min_value":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Contract value in GBP as a plain decimal such as 25000 (no commas or symbols); notices without a stated value are kept and flagged","title":"Min Value"},"max_value":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Contract value in GBP as a plain decimal such as 25000 (no commas or symbols); notices without a stated value are kept and flagged","title":"Max Value"},"sme_suitable":{"default":false,"description":"Only notices flagged as suitable for SMEs by the buyer","title":"Sme Suitable","type":"boolean"},"stage":{"default":"tender","description":"Notice stage: tender, award or planning","title":"Stage","type":"string"},"published_from":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"First publication date, YYYY-MM-DD (default: 7 days before on_date)","title":"Published From"},"published_to":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Last publication date, YYYY-MM-DD (default: on_date)","title":"Published To"},"open_only":{"default":true,"description":"Tender stage only: hide cancelled notices and notices whose deadline has passed on on_date","title":"Open Only","type":"boolean"},"limit":{"default":25,"description":"Maximum notices returned (1 to 100)","maximum":100,"minimum":1,"title":"Limit","type":"integer"},"max_pages":{"default":5,"description":"Maximum pages of 100 releases to scan from the service (1 to 10); more pages are slower","maximum":10,"minimum":1,"title":"Max Pages","type":"integer"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today in London)","title":"On Date"},"detail":{"default":"summary","description":"'summary' (default): compact rows (id, title, buyer, status, dates, days left, value, CPV code, SME flag, link and its basis; awards add supplier and value; scores add reasons), at most 12 notices, about 10 to 12 KB; 'full': up to limit complete rows with description excerpts, about 30 to 35 KB at 25 and 123 KB at 100 notices","enum":["summary","full"],"title":"Detail","type":"string"}},"title":"search_noticesArguments","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/notices_closing_soon":{"post":{"operationId":"notices_closing_soon","summary":"List open Contracts Finder tenders whose deadline falls in the next N days, soonest first. Use for \"Which tenders for my","description":"List open Contracts Finder tenders whose deadline falls in the next N days, soonest first. Use for \"Which tenders for my sector 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, CPV description and buyer (any of them), for example 'grounds maintenance, landscaping'","title":"Keywords"},"cpv":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated CPV codes or prefixes (2 to 8 digits), for example '77314100' or '72,4541'","title":"Cpv"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Text matched against the buyer's and delivery addresses (town, region name or postcode area), for example 'Leeds' or 'LS'; at most 200 characters","title":"Region"},"published_from":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Scan notices published from this date, YYYY-MM-DD (default: 28 days before on_date, because deadlines usually fall 2 to 6 weeks after publication)","title":"Published From"},"limit":{"default":25,"description":"Maximum notices returned (1 to 100)","maximum":100,"minimum":1,"title":"Limit","type":"integer"},"max_pages":{"default":8,"description":"Maximum pages of 100 releases to scan from the service (1 to 10); more pages are slower","maximum":10,"minimum":1,"title":"Max Pages","type":"integer"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today in London)","title":"On Date"},"detail":{"default":"summary","description":"'summary' (default): compact rows (id, title, buyer, status, dates, days left, value, CPV code, SME flag, link and its basis; awards add supplier and value; scores add reasons), at most 12 notices, about 10 to 12 KB; 'full': up to limit complete rows with description excerpts, about 30 to 35 KB at 25 and 123 KB at 100 notices","enum":["summary","full"],"title":"Detail","type":"string"}},"title":"notices_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/match_sme_profile":{"post":{"operationId":"match_sme_profile","summary":"Score open Contracts Finder tenders against a small business profile of CPV codes, region, contract size and keywords, w","description":"Score open Contracts Finder tenders against a small business profile of CPV codes, region, contract size and keywords, with the reasons for each score. Use for \"Which of this week's tenders fit a small grounds-maintenance firm in Leeds?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cpv_codes":{"description":"The business's CPV codes or prefixes, comma-separated (2 to 8 digits), for example '77314100, 72413000'","title":"Cpv Codes","type":"string"},"regions":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Text matched against the buyer's and delivery addresses (town, region name or postcode area), for example 'Leeds' or 'LS'; at most 200 characters","title":"Regions"},"min_value":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Contract value in GBP as a plain decimal such as 25000 (no commas or symbols); notices without a stated value are kept and flagged","title":"Min Value"},"max_value":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Contract value in GBP as a plain decimal such as 25000 (no commas or symbols); notices without a stated value are kept and flagged","title":"Max Value"},"keywords":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated keywords matched against title, description, CPV description and buyer (any of them), for example 'grounds maintenance, landscaping'","title":"Keywords"},"sme_only":{"default":false,"description":"Only notices the buyer flags as suitable for SMEs","title":"Sme Only","type":"boolean"},"min_score":{"default":1.0,"description":"Hide notices scoring below this (0 to 8; default 1)","maximum":8,"minimum":0,"title":"Min Score","type":"number"},"published_from":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"First publication date, YYYY-MM-DD (default: 7 days before on_date)","title":"Published From"},"limit":{"default":25,"description":"Maximum notices returned (1 to 100)","maximum":100,"minimum":1,"title":"Limit","type":"integer"},"max_pages":{"default":5,"description":"Maximum pages of 100 releases to scan from the service (1 to 10); more pages are slower","maximum":10,"minimum":1,"title":"Max Pages","type":"integer"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today in London)","title":"On Date"},"detail":{"default":"summary","description":"'summary' (default): compact rows (id, title, buyer, status, dates, days left, value, CPV code, SME flag, link and its basis; awards add supplier and value; scores add reasons), at most 12 notices, about 10 to 12 KB; 'full': up to limit complete rows with description excerpts, about 30 to 35 KB at 25 and 123 KB at 100 notices","enum":["summary","full"],"title":"Detail","type":"string"}},"required":["cpv_codes"],"title":"match_sme_profileArguments","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/notice_detail":{"post":{"operationId":"notice_detail","summary":"Fetch one Contracts Finder notice as published (contact-person fields are left out) with a link to it; accepts the GUID ","description":"Fetch one Contracts Finder notice as published (contact-person fields are left out) with a link to it; accepts the GUID or a search result's notice_id with its release suffix. Use for \"Give me the full details of this Contracts Finder notice\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"notice_id":{"description":"Contracts Finder notice GUID, or the notice_id of a search result (the GUID plus a release suffix such as -1), or a full contractsfinder.service.gov.uk/Notice/<GUID> link, for example 8c4ed675-8d90-4220-924c-8846c8f86df6","title":"Notice Id","type":"string"}},"required":["notice_id"],"title":"notice_detailArguments","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/find_a_tender_updates":{"post":{"operationId":"find_a_tender_updates","summary":"List above-threshold Find a Tender notices created or updated since a date, filtered by keyword, CPV, region and value. ","description":"List above-threshold Find a Tender notices created or updated since a date, filtered by keyword, CPV, region and value. Use for \"Which new above-threshold tenders for cloud hosting appeared since Monday?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"updated_from":{"description":"Notices created or updated on or after this date, YYYY-MM-DD, for example 2026-09-22","title":"Updated From","type":"string"},"keywords":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated keywords matched against title, description, CPV description and buyer (any of them), for example 'grounds maintenance, landscaping'","title":"Keywords"},"cpv":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated CPV codes or prefixes (2 to 8 digits), for example '77314100' or '72,4541'","title":"Cpv"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Text matched against the buyer's and delivery addresses (town, region name or postcode area), for example 'Leeds' or 'LS'; at most 200 characters","title":"Region"},"min_value":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Contract value in GBP as a plain decimal such as 25000 (no commas or symbols); notices without a stated value are kept and flagged","title":"Min Value"},"max_value":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Contract value in GBP as a plain decimal such as 25000 (no commas or symbols); notices without a stated value are kept and flagged","title":"Max Value"},"stage":{"default":"tender","description":"tender, award, planning or any","title":"Stage","type":"string"},"limit":{"default":25,"description":"Maximum notices returned (1 to 100)","maximum":100,"minimum":1,"title":"Limit","type":"integer"},"max_pages":{"default":5,"description":"Maximum pages of 100 releases to scan from the service (1 to 10); more pages are slower","maximum":10,"minimum":1,"title":"Max Pages","type":"integer"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today in London)","title":"On Date"},"detail":{"default":"summary","description":"'summary' (default): compact rows (id, title, buyer, status, dates, days left, value, CPV code, SME flag, link and its basis; awards add supplier and value; scores add reasons), at most 12 notices, about 10 to 12 KB; 'full': up to limit complete rows with description excerpts, about 30 to 35 KB at 25 and 123 KB at 100 notices","enum":["summary","full"],"title":"Detail","type":"string"}},"required":["updated_from"],"title":"find_a_tender_updatesArguments","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/buyer_recent_awards":{"post":{"operationId":"buyer_recent_awards","summary":"List recent Contracts Finder award notices of a buyer with the supplier and value awarded, to gauge typical suppliers an","description":"List recent Contracts Finder award notices of a buyer with the supplier and value awarded, to gauge typical suppliers and contract sizes. Use for \"What has this council awarded recently, and to whom?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"buyer":{"description":"Part of the buying organisation's name (3 to 80 characters), for example 'borough council'","title":"Buyer","type":"string"},"published_from":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"First publication date, YYYY-MM-DD (default: 30 days before on_date)","title":"Published From"},"limit":{"default":25,"description":"Maximum notices returned (1 to 100)","maximum":100,"minimum":1,"title":"Limit","type":"integer"},"max_pages":{"default":5,"description":"Maximum pages of 100 releases to scan from the service (1 to 10); more pages are slower","maximum":10,"minimum":1,"title":"Max Pages","type":"integer"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today in London)","title":"On Date"},"detail":{"default":"summary","description":"'summary' (default): compact rows (id, title, buyer, status, dates, days left, value, CPV code, SME flag, link and its basis; awards add supplier and value; scores add reasons), at most 12 notices, about 10 to 12 KB; 'full': up to limit complete rows with description excerpts, about 30 to 35 KB at 25 and 123 KB at 100 notices","enum":["summary","full"],"title":"Detail","type":"string"}},"required":["buyer"],"title":"buyer_recent_awardsArguments","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/deadline_countdown":{"post":{"operationId":"deadline_countdown","summary":"Count the calendar days and working days left to a tender deadline and show the nearest working days around it. Use for ","description":"Count the calendar days and working days left to a tender deadline and show the nearest working days around it. Use for \"How many working days do I have before the tender closes on 6 October?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"deadline":{"description":"Tender deadline as YYYY-MM-DD or an ISO date-time such as 2026-10-06T12:00:00+01:00 (as shown on the notice)","title":"Deadline","type":"string"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The date to treat as today, YYYY-MM-DD (default: today in London)","title":"On Date"},"holidays":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional comma-separated non-working dates YYYY-MM-DD (bank holidays or your own closures); none are applied unless you list them","title":"Holidays"}},"required":["deadline"],"title":"deadline_countdownArguments","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}}}}