For developers & agents

One tool call. Ranked offers. Transparent scoring.

Aggressive.ai exposes a public, JSON HTTP API designed to be wrapped as a tool inside any LLM-agent framework — OpenAI, Anthropic, LangGraph, Vercel AI SDK, custom orchestrators. The same engine powers the web UI; there is no second-tier surface for agents.

POST /api/public/optimize

Run the engine end-to-end
POST /api/public/optimize
Content-Type: application/json

{
  "category": "broadband",
  "location": "Dartford, London",
  "minPerformance": 100,
  "maxMonthly": 35,
  "maxContractMonths": 24,
  "minRating": 4,
  "mode": "aggressive"
}
{
  "taskSpec": { ... },
  "top": {
    "providerName": "Community Fibre",
    "planName": "Full Fibre 150",
    "monthlyPrice": 22,
    "totalCost12mo": 264,
    "performance": { "downloadMbps": 150, "uploadMbps": 150 },
    "reviewRating": 4.6,
    "reviewCount": 6890,
    "friction": { "contractMonths": 24 },
    "score": {
      "price": 94, "performance": 92, "reviews": 88,
      "availability": 90, "frictionPenalty": 12,
      "aggressive": 88,
      "factors": ["Best-in-class price", "Strong review history"]
    },
    "explanation": "Community Fibre — Full Fibre 150 scored 88/100 in aggressive mode..."
  },
  "offers": [ ... ],
  "pluginsUsed": [
    { "id": "live-uk-broadband-index", "ok": true, "ms": 1820, "count": 8 },
    { "id": "uk-broadband-baseline", "ok": true, "ms": 30, "count": 8 }
  ]
}

GET /api/public/plugins

Discover available pricing sources
GET /api/public/plugins

→ {
  "plugins": [ { "id": "live-uk-broadband-index", "category": "broadband", "geography": "UK", ... } ]
}

Tool definition for LLM agents

Drop into your function-calling spec
{
  "name": "get_best_offers",
  "description": "Given user constraints and preferences, returns ranked offers optimized for best price under quality constraints.",
  "input_schema": {
    "type": "object",
    "required": ["location", "category"],
    "properties": {
      "category": { "type": "string", "description": "Free-form: broadband, energy, mobile sim, saas crm, vps hosting, car insurance, gpu compute, etc." },
      "location": { "type": "string", "description": "Postcode or city" },
      "minPerformance": { "type": "number", "description": "e.g. Mbps" },
      "maxMonthly": { "type": "number" },
      "maxContractMonths": { "type": "number" },
      "minRating": { "type": "number", "minimum": 0, "maximum": 5 },
      "mode": { "type": "string", "enum": ["aggressive","balanced","premium"], "default": "aggressive" }
    }
  }
}

Scoring modes

One knob, three behaviors
aggressive
Aggressive savings
Price 55%, reviews 20%, performance 12%, friction -8%.
balanced
Balanced quality
Price 30%, performance 25%, reviews 25%, friction -10%.
premium
Premium performance
Performance 50%, price 15%, reviews 20%, friction -7%.

Resilient inference backend

Multi-key, auto-rotating, observable

Intent parsing and live pricing inference route through a server-side pool of inference keys with automatic round-robin rotation, per-key cooldowns on rate-limit or auth errors, and transparent retries on the next available key. The pool is invisible to callers — you always get a JSON response or a clean error envelope. No client-side key exposure.

Indexable search URLs

Every search becomes a shareable page

Every optimization run produces a stable, SEO-friendly URL at /search/<slug> populated with the ranked shortlist, explanations and JSON-LD structured data. Share it, bookmark it, link to it — the page rebuilds the answer on demand from the slug.