# Stipple > Stipple finds the government tenders that fit what a business does, tells you who holds > the work now, and prepares the bid. Coverage: Australia and New Zealand. Tender and grant search, > contract awards, buyer rollups and signals are free and open; the supplier or incumbent > NAME is shown to a signed-in caller and withheld from an anonymous one, with > `withheld_reason` carrying the sentence to relay. Links to other sites - a tender's or > grant's original portal, a contract award's or a plan's notice - are returned only to an > API key or a signed-in account. Every answer is a signal with its evidence, never a verdict > (a tender's `score` is relative fit, never a chance of winning), and every intelligence > payload carries `computed_at` — say the date when you quote a figure. Use the `www.` > host (a POST through the apex redirect 405s). **What it does.** Three questions carry the tender work, in this order: *what open tenders fit this company?* (`find_tenders` for the search, `match_tenders` to rank against the company's own website with `why[]` and `gaps[]`), *who buys this, what do they pay, and who holds it now?* (`buyer_awards` — the nightly rollup, contracts ending within 12 months with the incumbent, planned procurements, the suppliers who win from them), and *what is expiring or planned?* (`find_signals` — contract expiries, planned procurements, recurring tenders, each with its window and evidence). Grants ride the same search with value and eligibility as published. Company standing is one more call (`POST /v1/companies/resolve`) — one account, one quota. ## Tools Web pages for people. Tender browsing is a free GET and is also a REST endpoint and an MCP tool (below). - [Find tenders](https://www.stipple.sh/tenders): open Australian and New Zealand tenders, free to browse and to save as a daily email alert; ranked against what a company's website says it does. Each tender's drawer shows its buyer's intelligence: contracts awarded, ending within 12 months (the incumbent after sign-in), and planned procurements. - [Grants](https://www.stipple.sh/grants): open GrantConnect rounds with value and eligibility as published, the live count and value open, and a grants watch by email. - Tenders by state, with live blocks: `https://www.stipple.sh/resources/-tenders` for nsw, vic, qld, wa, sa, tas, act and nt — contracts ending, planned procurements, open tenders and the most active buyers, nightly and dated, beside the frozen research figures. **API.** Base URL: `https://www.stipple.sh`. Anonymous: **20 free checks/week per IP**. With a free API key (sign in at https://www.stipple.sh/login, then create it at https://www.stipple.sh/bidline/settings → `Authorization: Bearer stp_...`): **100 free checks/week** on your own quota, metered via `GET /v1/usage`. Every tool is free within the cap; the only priced feature on the platform is preparing a bid, a flat fee per tender (`GET /v1/pricing`). Burst guard ~10 at a time. Every response carries `RateLimit-Limit`/`RateLimit-Remaining`/`RateLimit-Reset`. Add `?sandbox=true` (or header `Stp-Sandbox: true`) to `POST /v1/tenders/match` for a free, deterministic `"sandbox": true` fixture that doesn't spend quota — ideal for wiring up an integration. Send an `Idempotency-Key` header on a POST to make retries safe (same key + different body → `422`). The machine-readable contract is at `https://www.stipple.sh/openapi.json`. Tenders, grants and buyer intelligence — free GETs, no key (`jurisdiction` is one of AU, NZ, AU-NSW, AU-VIC, AU-QLD, AU-WA, AU-SA, AU-TAS, AU-ACT, AU-NT): - `GET https://www.stipple.sh/v1/tenders` — **FREE, no key.** Open tenders across Australia and New Zealand (federal, national, state, council, university, health). Filters `jurisdiction`, `tier`, `source` (`grantconnect` for grants), `category`, `buyer` (exact, as published), `closing_before`, `closing_within_days`, `changed_within_days`, `q`, `first_seen_after`, `limit`, `offset`. Returns `{total, results[], coverage}`. `coverage` names the sources searched AND the ones that returned nothing — an empty result means no match in what we searched, not that no such tender exists. Signed-in users can save a search, a company profile, a buyer, a signal filter or a grants search as a FREE daily email (`POST https://www.stipple.sh/v1/tenders/watch`; `GET` lists, `DELETE https://www.stipple.sh/v1/tenders/watch/{id}` removes; `https://www.stipple.sh/v1/tenders/unsubscribe` is the one-click stop link in every email) - `GET https://www.stipple.sh/v1/tenders/strip` — **FREE.** Three counts of open tenders for the search page's quick views: `closing_48h` (closing today or tomorrow), `dates_changed_7d` and `new_7d`; each equals the `total` of the matching search - `GET https://www.stipple.sh/v1/tenders/{page_key}` — **FREE.** One tender, open or closed, by the `page_key` every search result carries (32 hex, or `f` + 32 hex): the search result's shape plus `open`, `key_dates` (question cut-off, site briefing, closing time, read by fixed rules from the tender's text, each with its status, zone and source sentence), `dates_checked`, `extended_from` and `absent_since`. An Australian tender's public page is `https://www.stipple.sh/tenders/au/-` - `GET https://www.stipple.sh/v1/tenders/{page_key}/context` — **FREE.** The tender page's one read: its buyer's rollup with 5 recent contract awards and 5 ending soonest, `similar` (title `keywords` by a labelled heuristic, the contract awards carrying them with count, value range and median as published, and up to 5 open tenders like it by `page_key`) and `sources`; supplier names after sign-in - `GET https://www.stipple.sh/v1/tenders/{page_key}/portal` — **a key or a signed-in session.** The link to the tender's or grant's original portal, `{url, portal_name, link_is_listing}`; `401` without a key or a session, `404` when we hold no link. Every link to another site on the other routes and MCP tools - `link`, `url`, `listing_url`, `source_url` on tenders and sources, `url` on contract awards, `evidence_url` on signals and planned procurements - is likewise returned only to a key or a signed-in account - `GET https://www.stipple.sh/v1/tenders/sources` — **FREE.** The source registry and each source's last-run status, including the ones behind login walls and the ones robots.txt refuses us - `POST https://www.stipple.sh/v1/tenders/match` — rank open tenders against what a company does, read from its website. JSON `{"url"}` (bare domain fine) or `{"example":"civil"|"it"|"facilities"}`. Returns `{profile, matched, shown, withheld, degraded, matches[], coverage}`; each match has `score`, `band`, `why[]` (their own stated capabilities the tender needs) and `gaps[]` (what it asks for that their site does not mention). `score` is RELATIVE FIT within these results, NOT a probability of winning - `GET https://www.stipple.sh/v1/awards` — contract awards as published (AusTender, Queensland contract disclosure): `buyer`, `buyer_key`, `supplier`, `supplier_key`, `q`, `jurisdiction`, `since`, `source` (intelligence source ID; unknown IDs return 400), paging. `{total, results[], computed_at, sources, withheld, withheld_reason}`; values as published, never converted; the supplier's name and ABN after sign-in - `GET https://www.stipple.sh/v1/awards/buyers?country=AU&order=count|value` — the buyer cohort (every buyer with a public page at `https://www.stipple.sh/buyers/au/-`: 20+ awards in the window or 5+ open tenders), ranked by award count or `value_total`; `GET https://www.stipple.sh/v1/awards/buyers/new?since=&country=` — how many buyers were first seen in an award on or after that date; `GET https://www.stipple.sh/v1/awards/buyers/lookup?name=&jurisdiction=` — a buyer by the name a tender publishes; `GET https://www.stipple.sh/v1/awards/buyers/{buyer_key}` — the nightly rollup (`award_count`, `median_value`, `p25_value`, `p75_value`, `median_response_days`, `expiring_12m`, `planned_12m`), `expiring[]`, `planned[]`, `recent_awards[]`, `top_suppliers[]`, `open_tenders[]`, `computed_at`, `sources` - `GET https://www.stipple.sh/v1/awards/suppliers/{identifier}` — the entity behind an ABN (or a `scheme:id` key): contracts, the buyers it wins from, categories, registry standing. The site's supplier page is for signed-in people only; this route is the same entity - `GET https://www.stipple.sh/v1/signals` — `kind` ∈ `contract_expiry` (with its incumbent) · `planned_procurement` (quarter and spend band as published) · `recurring_tender` (derived, labelled); filters `jurisdiction`, `buyer`, `q`, `window_before`, `window_after` (the window has not ended by that date; a window with no end date is kept), `first_seen_after`, `source` (intelligence source ID; unknown IDs return 400). Each carries `confidence` (`published`|`derived`), a window that is never invented, `evidence_ref`, `status` (the source's own word for a plan, such as `As Published` or `To Market`; empty where the source gives none), `released` (true when the plan is marked `To Market`), and `evidence_url` with a key or a signed-in account; a plan its agency withdrew is never returned - `GET https://www.stipple.sh/v1/intelligence/planned` — planned procurements, optional `source` (intelligence source ID; unknown IDs return 400), `buyer_key`, `quarter` (an id like `2026Q4` from `by_quarter`, `later` or `ended`; a well-formed id outside the current five answers an empty list), `window_after` (YYYY-MM-DD; a window with no end date is kept), `sort` (`soon` or `buyer`) and `exact=1` (that `jurisdiction` code alone); a withdrawn plan is never returned and each row carries `status` and `released`; unfiltered facets `by_jurisdiction`, `figures`, `by_quarter`, `top_buyers`, `top_categories`; `GET https://www.stipple.sh/v1/intelligence/planned/{id}/context` — one plan's buyer summary and that buyer's own contract awards for similar work (counts, a labelled keyword heuristic); `GET https://www.stipple.sh/v1/intelligence/{jurisdiction}` — a state's live block (contracts ending, planned this quarter, open tenders, most active buyers, `region_basis`); `GET https://www.stipple.sh/v1/intelligence/summary` — the front page's one payload (`open_now`, `new_this_week`, `expiring_12m`, `planned_quarter`, `buyers_month`, `grants_open`, `by_jurisdiction`, `previews`); `GET https://www.stipple.sh/v1/grants/summary` — open grant rounds, closing this month, value open with `with_value` coverage - `GET https://www.stipple.sh/v1/intelligence/trades` — every trade and Australian state with its market page's figures and whether the page exists; `GET https://www.stipple.sh/v1/intelligence/trades/{trade}/{state}` — one trade in one state: open tenders, contracts ending by month, planned this quarter, recurring (derived), the last complete year's largest buyers and supplier concentration, each figure with the jurisdictions it `covers`. A trade is a labelled heuristic (whole words of title and category, UNSPSC families); `/v1/tenders` takes it as `trade`. Names and the re-tender calendar after sign-in - Until the intelligence store has loaded (pulled at boot, in the background) the awards, signals and intelligence routes answer `503 {"ready": false}`; retry in a moment Company standing and feedback: - `POST https://www.stipple.sh/v1/companies/resolve` — which Australian company a name or number refers to, and whether it is in good standing. JSON `{"query"}` (a name, or an ABN/ACN/NZBN). Returns `{status, selected, candidates[], coverage, resolved_because}`. `status` is `resolved` | `ambiguous` (several real companies match — `selected` is null on purpose) | `not_found` (every register answered) | `inconclusive` (a register could not be read, so absence proves nothing) | `invalid_query` (a check digit failed). An identifier resolves directly; a name only ranks candidates. `selected.asic` gives ASIC registration standing with `as_of` and `age_days` — **an active ABN does not mean the company is registered**, and standing is as of `as_of` (our copy is no longer refreshed). No directors. NZ identifiers return `inconclusive` — no NZ adapter yet - `POST https://www.stipple.sh/v1/feedback` — thumbs up/down on a tender match (`{"tool":"tender_match","verdict":"up"|"down"}`) - `POST https://www.stipple.sh/v1/keys` — create a free API key (send a signed-in session; the body may be `{}`; the key is returned ONCE); `GET https://www.stipple.sh/v1/keys` lists a signed-in account's keys, `DELETE https://www.stipple.sh/v1/keys/{key_id}` revokes one - `GET https://www.stipple.sh/v1/usage` — metered usage for your key (send `Authorization: Bearer stp_...`); `GET https://www.stipple.sh/v1/pricing` — the free caps and the one price, live - `GET https://www.stipple.sh/health` — liveness + engine version (`/healthz` the same, `/livez` bare) **MCP server (for agents and developers).** **One server, every tender tool**: `https://www.stipple.sh/mcp` (Model Context Protocol, Streamable HTTP). Any MCP-capable client (Claude Desktop, Claude Code, Cursor, your own agent) gets every tool with one install. Hosted, same engine + rate limits: - `find_tenders(q, jurisdiction, tier, source, category, closing_before, first_seen_after, kind, limit)` — FREE. Search open tenders across Australia and New Zealand; `kind="grant"` for grants. Returns `{total, results[], coverage}`. A saved search becomes a free daily email via `POST /v1/tenders/watch` (signed-in) - `match_tenders(company_url | example, jurisdiction, closing_before)` — rank open tenders against what a company does, read from its own site. Each match carries `why[]` and `gaps[]`. The score is RELATIVE FIT within the results, never a chance of winning - `buyer_awards(buyer | buyer_key)` — FREE. What a buyer has awarded, what is ending within 12 months (with the incumbent, after sign-in), what they plan, the suppliers who win from them, and their open tenders; `computed_at` is the night the figures are true for - `find_signals(kind, jurisdiction, buyer, q, window_before, limit)` — FREE. Contract expiries, planned procurements and recurring tenders, each with `confidence` (`published`|`derived`), its window and its evidence - `tender_sources()` — FREE. Where the data comes from, and why a search came back empty Add it with `claude mcp add --transport http stipple https://www.stipple.sh/mcp`, or `{"mcpServers":{"stipple":{"type":"http","url":"https://www.stipple.sh/mcp"}}}`. (The scoped server `/mcp-tenders` serves the same five tools for a narrower install.) Agents and automation should use a free API key (sign in at https://www.stipple.sh/login, then create it at https://www.stipple.sh/bidline/settings) — an individual free weekly check cap of your own. Human visitors can instead sign in with Google on the website for the same cap. Anonymous use keeps its own free weekly checks per IP — no signup required. Costs: `GET https://www.stipple.sh/v1/pricing`. Full setup and the tool reference are in the agent guide. ## Research Tenders, measured — who publishes, when, how long you get, and each state's market. Every state page carries a live block (contracts ending, planned procurements, open tenders, the most active buyers; nightly, dated) beside the frozen research figures: - [Who buys government work](https://www.stipple.sh/resources/government-tender-buyers), [when tenders are released](https://www.stipple.sh/resources/when-tenders-are-released), [how long you get to respond](https://www.stipple.sh/resources/tender-response-times), [government IT tenders](https://www.stipple.sh/resources/government-it-tenders). - By state and territory, at `https://www.stipple.sh/resources/-tenders`: [NSW](https://www.stipple.sh/resources/nsw-tenders), [VIC](https://www.stipple.sh/resources/vic-tenders), [QLD](https://www.stipple.sh/resources/qld-tenders), [WA](https://www.stipple.sh/resources/wa-tenders), [SA](https://www.stipple.sh/resources/sa-tenders), [TAS](https://www.stipple.sh/resources/tas-tenders), [ACT](https://www.stipple.sh/resources/act-tenders), [NT](https://www.stipple.sh/resources/nt-tenders). - [Every tender platform compared](https://www.stipple.sh/resources/best-tender-software-australia): the coverage numbers we lose on, stated first. - [Buyers](https://www.stipple.sh/buyers/au), one page per buyer above the threshold at `https://www.stipple.sh/buyers/au/-`, [planned procurements](https://www.stipple.sh/planned-procurement/au) by quarter and state, and [buyers by total value](https://www.stipple.sh/insights/au). ## For agents - [Connect an MCP server to ChatGPT and Claude](https://www.stipple.sh/resources/connect-mcp-server-chatgpt-claude): setup per client, and which tools work with and without an account. - [Government tender search from an AI agent](https://www.stipple.sh/resources/government-tender-search-ai-agent): the tender and intelligence tools, free, coverage first. ## Docs - [Agent guide](https://www.stipple.sh/agents.md): full endpoint reference, a which-tool-for-which-question table, rate limits, and etiquette. - [OpenAPI spec](https://www.stipple.sh/openapi.json): the machine-readable REST contract — generate a client or import it into your tooling. - [Quickstart](https://www.stipple.sh/docs): a first call in a minute; then [authentication](https://www.stipple.sh/docs/authentication), [errors](https://www.stipple.sh/docs/errors), and [MCP setup](https://www.stipple.sh/docs/mcp). - [Pricing](https://www.stipple.sh/pricing): what every activity costs. - [Use cases](https://www.stipple.sh/use-cases): who uses which tool, and how.