Skip building the index
Search by keyword, status, CPV and delivery region. Get up to 25 matching records per request.
Search Find a Tender by keyword, status and delivery region. Get up to 25 structured results with original source links.
For developers building apps, automations and AI agents.
Build a daily shortlist of cleaning tenders for your team.
Find a Tender only, within our ingested update window. Not all UK contracts or a complete historical archive.
Inspect coverage0.01 USDC per successful request. No subscription.
Paid calls need a wallet-enabled x402 client on Base. Free checks need no wallet.
{
"ocid": "ocds-h6vhtk-06d9a9",
"title": "Printer Paper, Envelopes & Associated Products Framework",
"buyer": {
"id": "GB-PPON-PRVY-7813-WLPG",
"name": "Liverpool City Council"
},
"cpv_codes": [
{
"code": "30197630",
"description": "Printing paper"
}
],
"source_url": "https://www.find-tender.service.gov.uk/Notice/096221-2026"
}Liverpool City Council
CPV 30197630
The Council requires print paper, envelope and associated products suppliers to be appointed to a framework contract for the provision of the above so it can continue to run its internal Printroom service which uses a wide variety of paper products
A dated example, not a live search or a promise that this opportunity is still open.
Try live tender data through MCP. No wallet or API key needed.
In a client that supports remote MCP, choose Add custom server and paste this URL:
https://api.alexstokes.com/mcp
“Check your tender coverage, then find open cleaning contracts. Include deadlines and source links.”
Searches and detail lookups share the allowance per network address. Up to 5 results per search. Resets at midnight UTC. Continue through the same tools with an authorized x402 payment.
MCP setup instructions and limits
Shared service cap: 1,000 data calls/day. Coverage checks do not use the allowance. Paid MCP calls cost 0.01 USDC on Base, with up to 25 search results. Requires an x402-enabled client and an owner-approved spending budget.
Two free calls. Check coverage, then inspect payment terms before connecting a wallet.
Both calls are free and need no wallet. These checks do not connect a wallet or send a payment.
Prefer your own terminal? Use curl or the Node.js example below.
# 1. Check available data (free) curl https://api.alexstokes.com/status # 2. Inspect payment terms (free) curl -i "https://api.alexstokes.com/v1/tenders?q=cleaning&status=open&limit=5"
const base = 'https://api.alexstokes.com';
console.log(await (await fetch(base + '/status')).json());
const res = await fetch(base +
'/v1/tenders?q=cleaning&status=open&limit=5');
console.log('HTTP', res.status);
const header = res.headers.get('payment-required');
if (header) console.log(JSON.parse(
Buffer.from(header, 'base64').toString()
));Node.js 24+. Save as check.mjs and run node check.mjs. No purchase is made.
HTTP 402 · Payment required
Decoded PAYMENT-REQUIRED header, abbreviated. Captured 14 Oct 2026; check current terms before paying.
{
"x402Version": 2,
"accepts": [
{
"scheme": "exact",
"network": "eip155:8453",
"amount": "10000",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0x6180a2F87C9Ac53A3CA527c15c1A81A951B95073",
"maxTimeoutSeconds": 300,
"extra": {
"name": "USD Coin",
"version": "2"
}
}
]
}10000 units = 0.01 USDC. Network eip155:8453 is Base. If data is unavailable, the service may return a readiness error instead.
Run the free checks above. Confirm coverage and freshness, then inspect the price, network and recipient.
Follow the integration guide to configure your wallet signer and x402 client. Fund it with USDC on Base, set a budget and keep keys on your server. Use the Node.js purchase helper for saved-request recovery.
Verify the price and recipient. Save the exact signed request before sending it. A successful purchase returns the records and receipt.
Reuse the saved request. A recorded purchase returns its original result without another payment. Do not create a new signature or pay again.
You can. The source data is public. You pay us for the maintained search service, not exclusive access.
Search by keyword, status, CPV and delivery region. Get up to 25 matching records per request.
We import updates and map notices into consistent fields for buyers, dates, values and categories. Missing fields stay explicit.
Every record includes its original source link. Your users can check the notice before taking action.
The official API already provides OCDS JSON. Our service adds an indexed search and a simpler response structure. Additional result pages remain separate paid requests.
Coverage limit: the ingested update window starts 5 Oct 2026. This is not a complete historical archive; no backfill date is promised.
No subscription.
100 successful requests = 1 USDC.
This is a paid pilot. No uptime or indefinite purchase-retention guarantee is offered.
Run by Alex Stokes.
alex@alexstokes.com
per successful request
Chargeable: successful empty searches and each additional page. Uses real USDC on Base, not test tokens.
For paid calls, fund your buyer wallet with USDC on Base through a provider that supports that network. 1 USDC covers 100 successful requests; provider fees and minimums may add to your starting cost.
Run the free checkNo. We ingest Find a Tender notices within the update window starting 5 Oct 2026. We do not separately ingest Contracts Finder or other procurement portals. Notices published on Find a Tender may also appear elsewhere. Search returns the latest ingested notice per procurement, not a merged history. Check current coverage and freshness before paying.
Yes. It is a JSON API for apps, scheduled workflows and agents. You build the interface or automation; we supply the data. A free remote MCP trial is available: 3 searches/detail lookups per network address per UTC day, up to 5 results per search. Setup: https://api.alexstokes.com/mcp-guide.
You can use the free checks and inspect this example. Paid requests require a buyer wallet funded with USDC on Base and an x402-compatible client. Card billing and API-key subscriptions are not currently offered. Follow the integration guide for the payment requirements.
Keywords use literal, case-insensitive AND matching. Delivery regions describe the work location, not the buyer’s office. Missing or national-only locations can be excluded by regional filters. “Open” does not establish supplier eligibility. Value filters require a currency and do not convert currencies.
This service requires developer integration. Email Alex Stokes to discuss whether it fits your project.
0.01 USDC per successful request, including empty searches and each additional page. Verify the current payment terms before signing. Data coverage is limited and source records can be incomplete. No uptime or indefinite purchase-retention guarantee is offered.
For lost responses, recover the exact saved request; do not sign a new payment while settlement is uncertain. Contact alex@alexstokes.com for payment investigation or refund enquiries. Refunds are not automatic.
The landing page has no advertising trackers or analytics scripts. It requests public coverage data when loaded. Hosting and network providers process requests to deliver the service. Application logs record request IDs, routes, status codes and response times; IP-derived information is used for rate limiting. Daily MCP tool and outcome totals are retained for 90 days to measure usage; these totals contain no search text or visitor identifiers. Existing purchase records are used to count paid and repeat usage.
Paid requests create purchase and recovery records, including payment proofs, responses and receipts. Database backups are stored separately. Blockchain payments are public. Never send private keys or recovery phrases. For privacy questions or requests, contact alex@alexstokes.com.