Live Minneapolis construction permit leads, contractor permit history and website audits as clean JSON for AI agents. Pay per call in USDC on Base via x402: no API key, no signup, from $0.10.
Each paid route returns HTTP 402 with an x402 v2 payment requirement; your agent pays in USDC on Base mainnet (eip155:8453) and retries. Bulk/batch routes are the volume tier: lower cost per record. Listed in the Coinbase CDP x402 Bazaar.
| Endpoint | Price (USDC) | Input | What you get |
|---|---|---|---|
GET /report | $0.05 | none | Agentic Commerce Report: current practical notes on x402 agent payments (USDC on Base) and pricing guidance for paid agent APIs. Returns JSON. |
POST /analyze | $0.25 | JSON {"query": string (required), "context": object (optional)} | Custom Analysis: ask a question about agent commerce, x402 monetization, API pricing or lead-gen; returns a JSON recommendation. |
GET /leads | $0.25 | query: city=minneapolis, type (Res|Commercial|Plumbing|Mechanical|Wrecking|Site), since=YYYY-MM-DD, status, minValue, q (scope keyword), limit<=100 | Metro Permit Leads: live Minneapolis construction permits (City open data) with job value, scope, address and the contractor who pulled it. Great for contractor/supplier sales prospecting. |
GET /contractor | $0.15 | query: name (required, partial match), since=YYYY-MM-DD | Contractor Permit History: a Minneapolis contractor's live permit count, total job value by trade, last permit and 10 most recent jobs (City open data). Vet or size a contractor. |
GET /audit | $0.10 | query: url (required) | Website & Local Presence Audit: fetches a business site live and returns a 0-100 score, issue list and checks (HTTPS, speed, title/meta, mobile, LocalBusiness schema, tap-to-call, Google Maps/Business Profile link, sitemap, security headers). |
GET /leads/bulk | $1.00 | same query as /leads, limit<=500 (default 500, since defaults to 30 days ago) | Bulk tier: up to 500 live Minneapolis permit leads in one call (about $0.002/lead vs $0.0025 at /leads). |
POST /contractor/batch | $1.00 | JSON {"names": string[1-10], "since"?: "YYYY-MM-DD"} | Batch tier: permit history for up to 10 contractors in one call ($0.10/name vs $0.15). |
POST /audit/batch | $0.75 | JSON {"urls": string[1-10]} | Batch tier: website & local presence audits for up to 10 sites in one call ($0.075/site vs $0.10). |
GET /premium | $0.01 | none | Cheapest paid call: a tiny JSON payload. Use it to test your x402 client end to end on Base mainnet for one cent. |
curl -i https://flinttech-x402.onrender.com/premium # 402 + payment requirements
curl -i 'https://flinttech-x402.onrender.com/leads?type=Res&q=roof&limit=10'
curl -i 'https://flinttech-x402.onrender.com/contractor?name=Lucky%20Construction'
curl -i 'https://flinttech-x402.onrender.com/audit?url=example.com'
curl -i 'https://flinttech-x402.onrender.com/leads/bulk?type=Res&limit=500'
curl -i -X POST https://flinttech-x402.onrender.com/audit/batch -H 'content-type: application/json' -d '{"urls":["example.com","example.org"]}'
curl -i -X POST https://flinttech-x402.onrender.com/analyze -H 'content-type: application/json' -d '{"query":"How should I price a paid agent API?"}'
import { x402Client, wrapFetchWithPayment } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY);
const client = new x402Client().register("eip155:8453", new ExactEvmScheme(account));
const fetchWithPay = wrapFetchWithPayment(fetch, client);
const res = await fetchWithPay("https://flinttech-x402.onrender.com/analyze", {
method: "POST", headers: { "content-type": "application/json" },
body: JSON.stringify({ query: "Best price point for an x402 endpoint?" }),
});
console.log(await res.json());
Refunds: Calls are final once paid; a call that fails due to our error is refunded to the paying wallet if you email the tx hash to f1intt3ch@gmail.com within 7 days.
Payments settle to 0x328c4Dbb5B9E0811835E7d8c58295857b4F7f7E5.