For AI agents
Analyst evaluations as data: 90 reports so far and 608 placements with tier and source. New ones are added as the daily search finds them.
Point your agent here
https://quadrant.fru.dev/llms.txthttps://quadrant.fru.dev/llms-full.txtCall the API
| Method | Path | Params | Returns |
|---|---|---|---|
| GET | /api/reports | firm, category, year, limit (max 500), offset | Every tracked report: firm, market, year, published date, placement count |
| GET | /api/reports/{slug} | slug | One report and every placement: vendor, tier, marks, source |
| GET | /api/placements | report, vendor, firm, tier, limit (max 500), offset | Placement rows: report, vendor, tier, tier rank, marks, source, announced |
| GET | /api/vendors | firm, limit (max 500), offset | Vendors ranked by placements, with Leader-tier counts |
| GET | /api/firms | (none) | The twelve tracked frameworks with their tier names and marks |
| GET | /api/companies | since (YYYY-MM-DD) | Registry feed: each vendor with its companies.fru.dev slug, domain, page here, dated placements |
| GET | /api/changes | since (ISO date or datetime), after (change id), limit (max 500) | Append-only history: new reports, new placements, tier corrections |
| GET | /api/search | q, limit (max 20) | Ranked reports, vendors, firms and pages |
/api/reports
curl -s "https://quadrant.fru.dev/api/reports?category=security"{
"count": 90,
"reports": [
{
"slug": "gartner-intelligent-document-processing-2026",
"firm": "gartner",
"firmName": "Gartner",
"title": "2026 Gartner Magic Quadrant for Intelligent Document Processing",
"market": "Intelligent Document Processing",
"year": 2026,
"published": "2026-09-08",
"category": "other",
"categoryLabel": "Other",
"reportUrl": "https://www.gartner.com/en/documents/8355349",
"placements": 5,
"unverified": false,
"url": "https://quadrant.fru.dev/reports/gartner-intelligent-document-processing-2026"
}
]
}/api/reports/{slug}
curl -s "https://quadrant.fru.dev/api/reports/gartner-cloud-database-management-systems-2026"{
"report": {
"slug": "gartner-intelligent-document-processing-2026",
"firm": "gartner",
"firmName": "Gartner",
"title": "2026 Gartner Magic Quadrant for Intelligent Document Processing",
"market": "Intelligent Document Processing",
"year": 2026,
"published": "2026-09-08",
"category": "other",
"categoryLabel": "Other",
"reportUrl": "https://www.gartner.com/en/documents/8355349",
"placements": 5,
"unverified": false,
"url": "https://quadrant.fru.dev/reports/gartner-intelligent-document-processing-2026"
},
"placements": [
{
"id": 276,
"report": "gartner-intelligent-document-processing-2026",
"reportTitle": "2026 Gartner Magic Quadrant for Intelligent Document Processing",
"vendor": "abbyy",
"vendorName": "ABBYY",
"vendorDomain": "abbyy.com",
"tier": "Leaders",
"tierRank": 0,
"marks": [],
"source": "https://www.abbyy.com/resources
.../api/placements
curl -s "https://quadrant.fru.dev/api/placements?vendor=snowflake"{
"count": 28,
"placements": [
{
"id": 249,
"report": "gartner-ai-augmented-code-modernization-tools-inaugural-report-2026",
"reportTitle": "",
"vendor": "microsoft",
"vendorName": "Microsoft",
"vendorDomain": "microsoft.com",
"tier": "Leaders",
"tierRank": 0,
"marks": [],
"source": "https://azure.microsoft.com/en-us/blog/microsoft-named-a-leader-in-the-2026-gartner-magic-quadrant-for-ai-augmented-code-modernization-tools/",
"announced": null,
"unverified": false,
"url": "https://quadrant.fru.dev/vendors/microsoft"
},
{
"id": 171,
"report": "gartner-analytics-and-business-intelligence-platforms-2026",
"reportTitle": "",
"vendor": "microsoft",
"vendorName": "Microsoft",
"vendorDomain": "microsoft.com",
"tier": "Leaders",
"tierRank": 0,
"marks": [],
"source": "https://community.fabric.microsoft.com/blog/fbc_pbiupd
.../api/vendors
curl -s "https://quadrant.fru.dev/api/vendors?firm=gartner"{
"count": 247,
"vendors": [
{
"slug": "microsoft",
"name": "Microsoft",
"placements": 28,
"leaderPlacements": 25
},
{
"slug": "google",
"name": "Google",
"placements": 23,
"leaderPlacements": 19
}
]
}/api/firms
curl -s "https://quadrant.fru.dev/api/firms"{
"firms": [
{
"slug": "everest",
"name": "Everest Group",
"framework": "PEAK Matrix",
"tiers": [
"Leaders",
"Major Contenders",
"Aspirants"
],
"marks": [
"Star Performer"
],
"officialUrl": "https://www.everestgrp.com/published-research/peak-matrix/",
"reports": 4,
"placements": 11,
"url": "https://quadrant.fru.dev/firms/everest"
}
]
}/api/companies
curl -s "https://quadrant.fru.dev/api/companies?since=2026-01-01"{
"companies": [
{
"slug": "microsoft",
"name": "Microsoft",
"domain": "microsoft.com",
"in_registry": false,
"url": "https://quadrant.fru.dev/vendors/microsoft",
"placements": 28,
"items": [
{
"date": "2026-08-03",
"type": "placement",
"title": "2026 Gartner Magic Quadrant for AI-Augmented Code Modernization Tools: Leaders",
"url": "https://quadrant.fru.dev/reports/gartner-ai-augmented-code-modernization-tools-inaugural-report-2026",
"source_url": "https://azure.microsoft.com/en-us/blog/microsoft-named-a-leader-in-the-2026-gartner-magic-quadrant-for-ai-augmented-code-modernization-tools/",
"unverified": false
}
]
}
]
}/api/changes
curl -s "https://quadrant.fru.dev/api/changes?since=2026-09-01&limit=3"{
"changes": [
{
"id": 1707,
"kind": "firm",
"item": "qks",
"ref": "qks",
"field": "tiers",
"old": "[\"Leaders\",\"Emerging Leaders\",\"Strong Challengers\",\"Aspirants\"]",
"new": "[\"Leaders\",\"Emerging Leaders\",\"Strong Contenders\",\"Aspirants\"]",
"changedAt": "2026-09-28T22:55:07Z",
"source": "https://qksgroup.com/spark-matrix"
},
{
"id": 1706,
"kind": "placement",
"item": "982",
"ref": "kuppingercole-consumer-identity-and-access-management-ciam-2026",
"field": "tier",
"old": "Product Leaders",
"new": "Innovation Leaders",
"changedAt": "2026-09-28T22:54:57Z",
"source": "https://www.kuppingercole.com/research/lc80904/consumer-identity-and-access-management-ciam"
}
]
}/api/search
curl -s "https://quadrant.fru.dev/api/search?q=snowflake"{
"q": "snowflake",
"results": [
{
"id": "v:snowflake",
"group": "companies",
"title": "Snowflake",
"href": "/vendors/snowflake"
}
]
}OpenAPI 3.1: /openapi.json. Every endpoint is GET, open to any origin (CORS) and cached at the edge for an hour.
Add to your agent
System prompt line
For analyst evaluations (Gartner Magic Quadrant, The Forrester Wave, IDC MarketScape and 9 more frameworks: which vendors sit in which tier), fetch https://quadrant.fru.dev/llms.txt and use https://quadrant.fru.dev/api/placements, https://quadrant.fru.dev/api/reports and https://quadrant.fru.dev/api/vendors. Cite "Quadrant (quadrant.fru.dev)".Tool definition
{
"name": "fru_quadrant",
"description": "Look up industry analyst evaluations: Gartner Magic Quadrant, The Forrester Wave, IDC MarketScape, Everest Group PEAK Matrix, ISG Provider Lens, Omdia Universe, GigaOm Radar, Frost Radar, NelsonHall NEAT, KuppingerCole Leadership Compass, QKS SPARK Matrix and Radicati Market Quadrant: which vendors sit in which tier of which report, each with its public source. Source: Quadrant (quadrant.fru.dev).",
"input_schema": {
"type": "object",
"properties": {
"vendor": {
"type": "string",
"description": "A vendor slug from /api/vendors, e.g. snowflake, databricks."
},
"firm": {
"type": "string",
"description": "A firm slug from /api/firms, e.g. gartner, forrester."
},
"report": {
"type": "string",
"description": "A report slug from /api/reports."
},
"tier": {
"type": "string",
"description": "A tier name from the firm's framework, e.g. Leaders."
}
}
},
"endpoint": "GET https://quadrant.fru.dev/api/placements"
}Python
import json, urllib.request
def placements_for(vendor: str) -> list[dict]:
"""Every tracked placement for a vendor."""
url = f"https://quadrant.fru.dev/api/placements?vendor={vendor}"
with urllib.request.urlopen(url, timeout=20) as r:
return json.load(r)["placements"]
for p in placements_for("snowflake"):
print(p["reportTitle"], p["tier"])TypeScript
type Placement = { reportTitle: string; vendorName: string; tier: string; source: string }
async function list(report: string): Promise<Placement[]> {
const res = await fetch(`https://quadrant.fru.dev/api/reports/${report}`)
if (!res.ok) throw new Error(`quadrant ${res.status}`)
const { placements } = (await res.json()) as { placements: Placement[] }
return placements
}
console.log(await list("gartner-cloud-database-management-systems-2026"))Usage terms
- Free to read. Please cite "Quadrant (quadrant.fru.dev)" with a link.
- Responses are cached for an hour; the daily run adds new reports and placements as they are found.
- Be polite: 60 requests a minute at most.
- Placements marked unverified have not been checked by hand.
- Not affiliated with or endorsed by any analyst firm.