Developers
API, MCP tool & webhooks
Three ways to consume recompete predictions: a JSON API, an MCP tool your agents call directly, and webhook push on a watchlist.
REST API
Auth with ?key= or x-api-key header. Anonymous = free tier (summary sample).
# Expiring recompetes + predicted winners in a NAICS curl "https://recompete.dropwatchhq.com/api/recompetes?naics=541330&minDays=90&maxDays=180" # Predict the winner of one expiring contract (best: pass the award gid) curl "https://recompete.dropwatchhq.com/api/predict?gid=CONT_AWD_..." # Or predict from NAICS + incumbent curl "https://recompete.dropwatchhq.com/api/predict?naics=541512&incumbent=LEIDOS" # The competitor field for a lane curl "https://recompete.dropwatchhq.com/api/competitors?naics=541330"
MCP — predict_recompete
Point your agent (Claude, etc.) at https://recompete.dropwatchhq.com/mcp (streamable-HTTP JSON-RPC 2.0). Tools:
predict_recompete, expiring_recompetes, lane_competitors.
curl -X POST "https://recompete.dropwatchhq.com/mcp" -H "content-type: application/json" -d '{
"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"predict_recompete","arguments":{"naics":"541330","incumbent":"LEIDOS"}}
}'
Response shape
{
"contract": { "recipient": "...", "naics": "541330", "agency": "...", "end": "2026-12-31" },
"prediction": {
"predictedWinner": "...", "confidence": "high|medium|low",
"incumbentRate": 0.66, "incumbentRateAdjustments": ["..."],
"candidates": [ { "recipient":"...", "role":"incumbent", "probability":0.66, "n":5, "basis":"..." }, ... ],
"baseRate": { "central":0.62, "band":[0.55,0.78], "source":"..." },
"laneSample": { "totalAwards": 40, "distinctWinners": 22 },
"disclaimer": "Probabilistic estimate from public USAspending data — not insider info."
}
}
Every prediction ships with the base rate, the adjustments applied, sample size n, and a confidence band. We do not fake precision.