1<!DOCTYPE html><html lang="en" class="scroll-smooth motion-reduce:scroll-auto"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/70434a467ac4a08b-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/b8a2dcd8ba053f45-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/d2c053a71c898a63-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/cd428ce74986782b.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/b74d54f76d8ddaab.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/ee72f46acea55a45.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/4219530aa38316a6.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-05cc7f187e27992e.js"/>
1<script src="/_next/static/chunks/74a98e8c-ea88652f783f62c4.js" async=""></script>
1<script src="/_next/static/chunks/1556-dcb12c3b85f7c3f2.js" async=""></script>
1<script src="/_next/static/chunks/main-app-72a969b75c2d646a.js" async=""></script>
1<script src="/_next/static/chunks/1053-65a70fcc3f29a6f5.js" async=""></script>
1<script src="/_next/static/chunks/6110-aff7b10f18926ab5.js" async=""></script>
1<script src="/_next/static/chunks/6157-b2626ebf50ccfcd9.js" async=""></script>
1<script src="/_next/static/chunks/7215-6f98d9182f431eb0.js" async=""></script>
1<script src="/_next/static/chunks/2304-4b69d0f2ac423303.js" async=""></script>
1<script src="/_next/static/chunks/app/(main)/ai/page-482acd218ae5f74a.js" async=""></script>
1<script src="/_next/static/chunks/493ff4cd-77e620077ac13dbd.js" async=""></script>
1<script src="/_next/static/chunks/2746-3e1363444428a138.js" async=""></script>
1<script src="/_next/static/chunks/7366-bef5e65148b521e4.js" async=""></script>
1<script src="/_next/static/chunks/1256-868c78ba28cc61ba.js" async=""></script>
1<script src="/_next/static/chunks/4522-3763116ec593f9f3.js" async=""></script>
1<script src="/_next/static/chunks/8961-52d4b0e3e966b720.js" async=""></script>
1<script src="/_next/static/chunks/5522-6092c777cd8cf294.js" async=""></script>
1<script src="/_next/static/chunks/app/(main)/layout-a145693c4134fecc.js" async=""></script>
1<script src="/_next/static/chunks/app/layout-fd983fd69f95a7ab.js" async=""></script>
1<script src="/_next/static/chunks/app/not-found-d6c36f0d815ce273.js" async=""></script>
1<link rel="preload" href="https://www.googletagmanager.com/gtag/js?id=UA-44373548-16" as="script"/><title>GraphQL for AI Agents, MCP, and LLM Tools | GraphQL</title><meta name="description" content="How AI agents use GraphQL: schema introspection for tool discovery, typed inputs and outputs, and field selection that keeps responses to what was asked for."/><meta name="application-name" content="GraphQL.ORG"/><meta name="keywords" content="GraphQL"/><link rel="canonical" href="https://graphql.org/ai/"/><meta property="og:title" content="GraphQL for AI Agents, MCP, and LLM Tools"/><meta property="og:description" content="How AI agents use GraphQL: schema introspection for tool discovery, typed inputs and outputs, and field selection that keeps responses to what was asked for."/><meta property="og:url" content="https://graphql.org/ai/"/><meta property="og:image" content="https://graphql.org/img/og-image.png"/><meta property="og:type" content="article"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="@graphql"/><meta name="twitter:title" content="GraphQL for AI Agents, MCP, and LLM Tools"/><meta name="twitter:description" content="How AI agents use GraphQL: schema introspection for tool discovery, typed inputs and outputs, and field selection that keeps responses to what was asked for."/><meta name="twitter:image" content="https://graphql.org/img/og-image.png"/><link rel="icon" href="/icon.svg?38f42ab34b981180" type="image/svg+xml" sizes="any"/><meta name="next-size-adjust"/><style>html { scroll-padding-top: 5rem }</style>
1<script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script>
1</head><body class="bg-neu-0"><style> 2html { 3 --font-sans: '__hostGrotesk_4b1926', '__hostGrotesk_Fallback_4b1926'; 4 --font-mono: '__commitMono_9d2e4e', '__commitMono_Fallback_9d2e4e'; 5}</style>
5<script>((e,t,r,n,o,i,l,a)=>{let s=document.documentElement,u=["light","dark"];function c(t){(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&i?o.map(e=>i[e]||e):o;r?(s.classList.remove(...n),s.classList.add(i&&i[t]?i[t]:t)):s.setAttribute(e,t)}),a&&u.includes(t)&&(s.style.colorScheme=t)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=l&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("class","theme","system",null,["light","dark"],null,true,true)</script>
5<div class="nextra-nav-container sticky top-0 z-20 w-full bg-transparent print:hidden"><div class="pointer-events-none absolute inset-0 -z-10 h-[200%] backdrop-blur-[6.4px]" style="mask-image:linear-gradient(to bottom, #000 0% 50%, transparent 50% 100%);-webkit-mask-image:linear-gradient(to bottom, #000 0% 50%, transparent 50% 100%);background:linear-gradient(to bottom,rgb(var(--nextra-bg),.97) 0%, rgb(var(--nextra-bg),.5) 50% 100%)"></div><div class="pointer-events-none absolute inset-0 h-full translate-y-full bg-white/10" style="backdrop-filter:blur(8px) brightness(120%) saturate(113%);mask-image:linear-gradient(to bottom, black 0, black 1px, transparent 1px);-webkit-mask-image:linear-gradient(to bottom, black 0, black 1px, transparent 1px)"></div><nav class="mx-auto flex h-[var(--nextra-navbar-height)] max-w-[120rem] items-center justify-end pl-[max(env(safe-area-inset-left),1.5rem)] pr-[max(env(safe-area-inset-right),1.5rem)]"><a class="nextra-focus flex items-center hover:opacity-75" href="/"><svg xmlns="http://www.w3.org/2000/svg" style="fill:color(display-p3 .8824 0 .5961)" viewBox="0 0 367 100" class="nextra-logo h-6" title="GraphQL"><path fill-rule="evenodd" d="m50 6.468 37.7 21.766v43.532L50 93.532 12.3 71.766V28.234zM16.53 30.676v31.976l27.692-47.964zM50 13.14 18.078 68.43h63.844zm27.692 59.52H22.308L50 88.648zm5.778-10.008L55.778 14.688 83.47 30.676z" clip-rule="evenodd"></path><circle cx="14.41" cy="29.45" r="8.91"></circle><circle cx="14.41" cy="70.545" r="8.91"></circle><circle cx="50" cy="91.09" r="8.91"></circle><circle cx="85.585" cy="70.545" r="8.91"></circle><circle cx="85.585" cy="29.455" r="8.91"></circle><circle cx="50" cy="8.91" r="8.91"></circle><path d="M138.875 71.625q-7.812 0-12.125-4.5t-4.562-12.062q-.063-1.876-.063-5.938t.063-5.937q.25-7.563 4.562-12.063t12.125-4.5q5.313 0 8.938 2 3.624 2 5.375 4.75 1.812 2.688 1.937 4.813v.124q0 .501-.375.813-.375.313-.938.313h-1.374q-.562 0-.813-.25t-.5-1q-1.062-3.313-4.125-5.563-3-2.25-8.125-2.25-5.812 0-9.187 3.188-3.313 3.187-3.563 9.937-.062 1.875-.062 5.625t.062 5.625q.25 6.75 3.563 9.938 3.375 3.186 9.187 3.187 5.813 0 9.375-3.312 3.562-3.314 3.562-9.813v-3.187h-10.874q-.625 0-1-.376a1.58 1.58 0 0 1-.375-1.062v-.875q0-.625.375-1 .375-.437 1-.437h13.374q.688 0 1.063.374.375.376.375 1.063v5.5q0 4.999-2 8.813-2 3.811-5.812 5.937-3.813 2.125-9.063 2.125M165.941 71q-.625 0-1-.375t-.375-1V39.938q0-.625.375-1 .375-.438 1-.438h1q.625 0 1 .438.438.375.438 1v2.874q2.25-4.312 8.5-4.312h2.312q.625 0 1 .375t.375 1v.875q0 .625-.375 1t-1 .375h-2.687q-3.75 0-5.938 2.188-2.187 2.187-2.187 5.937v19.375q0 .625-.438 1-.375.375-1 .375zM194.557 71.625q-3 0-5.563-1.25T184.869 67q-1.5-2.126-1.5-4.687 0-4.125 3.313-6.75 3.374-2.625 9.062-3.376l9.875-1.374v-2.188q0-3.438-2.125-5.25-2.063-1.875-6.375-1.875-3.188 0-5.25 1.25-2 1.25-2.562 3-.25.75-.625 1.063-.313.25-.875.25h-.875q-.563 0-1-.376a1.5 1.5 0 0 1-.375-1q0-1.374 1.25-3.187 1.25-1.875 3.875-3.25t6.437-1.375q6.687 0 9.5 3.188 2.813 3.187 2.813 7.75v20.812q0 .625-.375 1-.376.375-1 .375h-1.063q-.625 0-1-.375t-.375-1v-2.937q-1.375 2.061-4.062 3.5-2.626 1.437-7 1.437m.625-3.625q4.561 0 7.5-3 2.937-3 2.937-8.625V54.25l-8.062 1.125q-5.125.687-7.75 2.375T187.182 62q0 2.875 2.375 4.438Q191.994 68 195.182 68M220.752 82.875q-.624 0-1-.375-.375-.375-.375-1V39.875q0-.625.375-1 .376-.375 1-.375h1.063q.625 0 1 .375t.375 1v2.938q3.626-4.938 10.5-4.938 6.75 0 9.937 4.313 3.25 4.25 3.438 10.5.063.624.062 2.062 0 1.437-.062 2.063-.187 6.25-3.438 10.562-3.187 4.25-9.937 4.25-6.813 0-10.5-4.937V81.5q0 .625-.375 1t-1 .375zM233.315 68q5.062 0 7.375-3.187 2.375-3.25 2.562-8.313.063-.625.063-1.75 0-5.813-2.25-9.5-2.25-3.75-7.75-3.75-4.938 0-7.438 3.313-2.5 3.25-2.687 7.687l-.063 2.438.063 2.437a12.8 12.8 0 0 0 1.187 5.125q1.125 2.375 3.375 3.938Q230.002 68 233.315 68M257.068 71q-.625 0-1-.375t-.375-1V28q0-.625.375-1t1-.375h1.063q.625 0 1 .375t.375 1v14.813q1.875-2.439 4.25-3.688 2.437-1.25 6.25-1.25 6.125 0 9.437 3.938 3.313 3.874 3.313 10.062v17.75q0 .625-.375 1t-1 .375h-1.063q-.625 0-1-.375t-.375-1V52.188q0-5.063-2.5-7.876-2.437-2.812-7.062-2.812-4.5 0-7.188 2.875-2.687 2.813-2.687 7.813v17.437q0 .625-.375 1t-1 .375zM321.682 75.063q-.938 0-2-1.438l-2.75-3.812q-3.75 1.812-8.75 1.812-16.062 0-16.5-17.25-.062-1.875-.062-5.25t.062-5.25q.25-8.5 4.625-12.875t11.875-4.375T320.057 31t4.625 12.875q.125 3.75.125 5.25t-.125 5.25q-.312 8.937-4.562 13.125l4 5.625q.187.376.187.688a1.2 1.2 0 0 1-.375.874 1.2
51.2 0 0 1-.875.376zm-13.5-7.188q5.625 0 8.938-3.375 3.375-3.437 3.625-10.437.125-3.75.125-4.938t-.125-4.937q-.25-7-3.625-10.376-3.375-3.437-8.938-3.437-5.562 0-8.937 3.438-3.375 3.375-3.625 10.374-.063 1.875-.063 4.938t.063 4.938q.25 6.999 3.562 10.437 3.375 3.375 9 3.375M336.126 71q-.625 0-1-.375t-.375-1v-41q0-.625.375-1t1-.375h1.188q.625 0 1 .375t.375 1V67.25h21.562q.688 0 1.063.375t.375 1.063v.937q0 .625-.438 1-.375.375-1 .375z"></path></svg></a><div class="flex-1"></div><nav class="-mx-2 flex overflow-x-auto px-2 py-1.5 xl:absolute xl:left-1/2 xl:-translate-x-1/2"><ul aria-orientation="horizontal" class="flex w-full items-center gap-2"><li class="max-md:hidden"><a class="typography-menu flex items-center text-neu-900 px-3 py-1 nextra-focus [text-box:trim-both_cap_alphabetic] leading-none hover:underline underline-offset-2 md:py-5 whitespace-nowrap max-md:hidden" aria-current="false" href="/learn/">Learn</a></li><li class="max-md:hidden"><button type="button" aria-disabled="false" tabindex="0" aria-expanded="false" data-base-ui-navigation-menu-trigger="" class="typography-menu flex items-center text-neu-900 px-3 py-1 nextra-focus [text-box:trim-both_cap_alphabetic] leading-none hover:underline underline-offset-2 md:py-5 focus-visible:nextra-focusable flex items-center gap-1.5 whitespace-nowrap data-[popup-open]:underline max-md:hidden">Resource Hub</button></li><li class="max-md:hidden"><button type="button" aria-disabled="false" tabindex="0" aria-expanded="false" data-base-ui-navigation-menu-trigger="" class="typography-menu flex items-center text-neu-900 px-3 py-1 nextra-focus [text-box:trim-both_cap_alphabetic] leading-none hover:underline underline-offset-2 md:py-5 focus-visible:nextra-focusable flex items-center gap-1.5 whitespace-nowrap data-[popup-open]:underline max-md:hidden">Community</button></li><li class="max-md:hidden"><a class="typography-menu flex items-center text-neu-900 px-3 py-1 nextra-focus [text-box:trim-both_cap_alphabetic] leading-none hover:underline underline-offset-2 md:py-5 whitespace-nowrap max-md:hidden" aria-current="false" href="/blog/">Blog</a></li><li class="max-md:hidden"><a class="typography-menu flex items-center text-neu-900 px-3 py-1 nextra-focus [text-box:trim-both_cap_alphabetic] leading-none hover:underline underline-offset-2 md:py-5 whitespace-nowrap max-md:hidden underline" aria-current="true" href="/ai/"><span class="relative block rounded-full bg-pri-base/15 px-2 py-0.5 text-[0.7rem] font-bold uppercase tracking-wide text-pri-dark dark:bg-pri-light/20 dark:text-pri-light [a:has(>&)]:no-underline">AI</span></a></li><li class="max-md:hidden"><a class="typography-menu flex items-center text-neu-900 px-3 py-1 nextra-focus [text-box:trim-both_cap_alphabetic] leading-none hover:underline underline-offset-2 md:py-5 whitespace-nowrap max-md:hidden" aria-current="false" href="/conf/2026/"><span class="relative block before:absolute before:-inset-x-3 before:-inset-y-1 before:border before:border-current [a:has(>&)]:text-pri-base dark:[a:has(>&)]:text-pri-light [a:hover:has(>&)]:no-underline [a:hover_&]:before:border-transparent">GraphQLConf<span class="max-xl:hidden"> 2026</span></span></a></li><li class="max-md:hidden"><a class="typography-menu flex items-center text-neu-900 px-3 py-1 nextra-focus [text-box:trim-both_cap_alphabetic] leading-none hover:underline underline-offset-2 md:py-5 whitespace-nowrap max-md:hidden" aria-current="false" href="/day/"><span class="relative block before:absolute before:-inset-x-3 before:-inset-y-1 before:border before:border-current [a:has(>&)]:text-emerald-600 dark:[a:has(>&)]:text-emerald-400 [a:hover:has(>&)]:no-underline [a:hover_&]:before:border-transparent">GraphQL Days</span></a></li><li class="max-md:hidden"><a class="typography-menu flex items-center text-neu-900 px-3 py-1 nextra-focus [text-box:trim-both_cap_alphabetic] leading-none hover:underline underline-offset-2 md:py-5 whitespace-nowrap max-md:hidden" aria-current="false" href="/graphql-js/">GraphQL.JS Tutorial</a></li></ul></nav><div class="not-prose relative flex items-center text-neu-900 block select-none text-sm max-md:hidden [&>input::placeholder]:text-neu-700 [&>input]:bg-neu-0/[.55] [&>input]:text-neu-900"><input spellCheck="false" class="px-3 py-2 transition-colors w-full md:w-64 text-base leading-tight md:text-sm bg-black/[.05] dark:bg-neu-100/10 placeholder:text-neu-500 contrast-more:border
5contrast-more:border-current [&::-webkit-search-cancel-button]:_appearance-none" autoComplete="off" placeholder="Search..." id="headlessui-combobox-input-:R5n4d9ukq:" role="combobox" type="search" aria-expanded="false" aria-autocomplete="list" data-headlessui-state="" value=""/></div><button type="button" tabindex="0" role="combobox" aria-expanded="false" aria-haspopup="listbox" aria-label="Change theme" title="Change theme" class="gql-focus-visible relative cursor-pointer text-neu-800 transition-colors before:absolute before:-inset-2 hover:bg-neu-100 hover:text-neu-900 focus-visible:outline-offset-4 dark:text-neu-700 dark:hover:bg-neu-50/50 max-lg:hidden [&_span]:hidden"><div class="flex items-center gap-2 border border-transparent p-[5px] [[aria-expanded=true]>&]:border-neu-300 [[aria-expanded=true]>&]:bg-neu-0 [[aria-expanded=true]>&]:dark:border-neu-100"><svg fill="currentColor" viewBox="0 0 14 14" height="16"><path fill-rule="evenodd" d="M7.583 0H6.417v2.333h1.166zM0 6.417v1.166h2.333V6.417zm11.667 0H14v1.166h-2.333zM7.583 14H6.417v-2.333h1.166zM4.667 3.5h4.666v1.167H4.667zm0 5.833H3.5V4.667h1.167zm0 0V10.5h4.666V9.333H10.5V4.667H9.333v4.666zm7-8.166h1.166v1.166h-1.166zm0 1.166V3.5H10.5V2.333zm1.166 10.5h-1.166v-1.166h1.166zm-1.166-1.166H10.5V10.5h1.167zm-9.334-10.5H1.167v1.166h1.166V3.5H3.5V2.333H2.333zM1.167 12.833h1.166v-1.166H3.5V10.5H2.333v1.167H1.167z" clip-rule="evenodd"></path></svg><span class="text-sm capitalize leading-none sr-only">light</span></div></button><input style="clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;position:fixed;top:0;left:0;border:0;padding:0;width:1px;height:1px;margin:-1px" tabindex="-1" aria-hidden="true" value="light"/><button class="_transition nextra-hamburger p-2 text-pri-base md:hidden" aria-label="Menu" type="button" data-headlessui-state=""><svg fill="currentColor" viewBox="0 0 24 24" class="size-5"><path d="M4 6h16v2H4zm0 5h16v2H4zm16 5H4v2h16z"></path></svg></button></nav></div><div class="[transition:background-color_1.5s_ease] bg-transparent"></div><aside class="nextra-sidebar-container flex flex-col motion-reduce:transform-none motion-reduce:transition-none md:top-16 md:shrink-0 [.resizing_&]:transition-none transition-gpu duration-300 ease-in-out print:hidden md:w-64 md:hidden max-md:[transform:translate3d(0,-100%,0)]"><div class="px-4 pt-4 md:hidden"><div class="not-prose relative flex items-center text-neu-900 block select-none text-sm text-neu-500"><input spellCheck="false" class="px-3 py-2 transition-colors w-full md:w-64 text-base leading-tight md:text-sm bg-black/[.05] dark:bg-neu-100/10 placeholder:text-neu-500 contrast-more:border contrast-more:border-current [&::-webkit-search-cancel-button]:_appearance-none" autoComplete="off" placeholder="Search..." id="headlessui-combobox-input-:R2rel9ukq:" role="combobox" type="search" aria-expanded="false" aria-autocomplete="list" data-headlessui-state="" value=""/></div></div><div class="overflow-y-auto grow p-4 md:h-[calc(100vh-var(--nextra-navbar-height)-var(--nextra-menu-height))] xl:pl-0 nextra-scrollbar"></div><div class="nextra-sidebar-footer sticky bottom-0 mx-3 flex items-center gap-2 px-1 py-4 xl:ml-0.5 xl:mr-0 xl:px-0"><div class="flex grow flex-col"><button type="button" tabindex="0" role="combobox" aria-expanded="false" aria-haspopup="listbox" aria-label="Change theme" title="Change theme" class="gql-focus-visible relative cursor-pointer text-neu-800 transition-colors before:absolute before:-inset-2 hover:bg-neu-100 hover:text-neu-900 focus-visible:outline-offset-4 dark:text-neu-700 dark:hover:bg-neu-50/50"><div class="flex items-center gap-2 border border-transparent p-[5px] [[aria-expanded=true]>&]:border-neu-300 [[aria-expanded=true]>&]:bg-neu-0 [[aria-expanded=true]>&]:dark:border-neu-100"><svg fill="currentColor" viewBox="0 0 14 14" height="16"><path fill-rule="evenodd" d="M7.583 0H6.417v2.333h1.166zM0 6.417v1.166h2.333V6.417zm11.667 0H14v1.166h-2.333zM7.583 14H6.417v-2.333h1.166zM4.667 3.5h4.666v1.167H4.667zm0 5.833H3.5V4.667h1.167zm0 0V10.5h4.666V9.333H10.5V4.667H9.333v4.666zm7-8.166h1.166v1.166h-1.166zm0 1.166V3.5H10.5V2.333zm1.166 10.5h-1.166v-1.166h1.166zm-1.166-1.166H10.5V10.5h1.167zm-9.334-10.5H1.167v1.166h1.166V3.5H3.5V2.333H2.333zM1.167 12.833h1.166v-1.166H3.5V10.5H2.333v1.167H1.167z" clip-rule="evenodd"></path></svg><span class="text-sm capitalize leading-none text-neu-800">light</span></div></button><input style="clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;position:fixed;top:0;left:0;border:0;padding:0;width:1px;height:1px;margin:-1px" tabindex="-1" aria-hidden="true" value="light"/></div><button class="_transition p-2 text-neu-800 hover:bg-neu-100 hover:text-neu-900 dark:hover:bg-neu-500/5 max-md:hidden" title="Hide sidebar" type="button" data-headlessui-state=""><svg width="32" height="32" fill="currentColor" viewBox="0 0 32 32" class="size-5"><path d="M8 26.667H5.333V5.333H8zm10.667-4H16V20h2.667zm-2.667-8h10.667v2.666H16V20h-2.667v-2.667h-2.666v-2.666h2.666V12H16zM18.667 12H16V9.333h2.667z"></path></svg></button></div></aside><div class="isolate bg-neu-0 text-neu-900 antialiased"><main class="gql-all-anchors-focusable bg-neu-0"><style>.nextra-nav-container.sticky { position: fixed }</style><div class="relative overflow-hidden bg-pri-dark text-white dark:bg-pri-darker"><div aria-hidden="true" class="pointer-events-none absolute inset-0" style="mask-image:url(/_next/static/media/blur-bean.1cb38553.webp);-webkit-mask-image:url(/_next/static/media/blur-bean.1cb38553.webp);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center top;-webkit-mask-position:center top;mask-size:cover;-webkit-mask-size:cover"><div class="absolute inset-0 bg-[linear-gradient(180deg,hsl(var(--color-pri-light)/.5)_0%,transparent_100%)] dark:bg-[linear-gradient(180deg,hsl(var(--color-pri-light)/0.25)_0%,transparent_100%)]" style="--stripe-width:8px;--angle:90deg;mask-image:repeating-linear-gradient(var(--angle), transparent, transparent var(--stripe-width), black var(--stripe-width), black calc(var(--stripe-width) * 2));-webkit-mask-image:repeating-linear-gradient(var(--angle), transparent, transparent var(--stripe-width), black var(--stripe-width), black calc(var(--stripe-width) * 2))"></div><div class="absolute inset-0 bg-[linear-gradient(180deg,hsl(var(--color-pri-dark)/0.15)_0%,transparent_100%)] dark:bg-[linear-gradient(180deg,hsl(var(--color-neu-0)/0.12)_0%,transparent_100%)]" style="--stripe-width:8px;--angle:90deg;mask-image:repeating-linear-gradient(var(--angle), black, black var(--stripe-width), transparent var(--stripe-width), transparent calc(var(--stripe-width) * 2));-webkit-mask-image:repeating-linear-gradient(var(--angle), black, black var(--stripe-width), transparent var(--stripe-width), transparent calc(var(--stripe-width) * 2))"></div></div><canvas aria-hidden="true" class="pointer-events-none absolute inset-0 z-0 opacity-60"></canvas><div class="gql-container relative"><div class="flex flex-col items-center px-4 pb-16 pt-24 text-center lg:min-h-[640px] lg:justify-center lg:pb-24 lg:pt-32 xl:min-h-[720px] xl:px-24 xl:pt-40">
5<a href="https://github.com/graphql/ai-wg/" class="mb-8 inline-flex items-center gap-2 border border-sec-light/30 bg-sec-light/10 px-3 py-1 backdrop-blur-sm transition-colors hover:bg-sec-light/20 hover:duration-0"><span class="relative flex size-2"><span class="absolute inline-flex size-2 animate-ping rounded-full bg-sec-base opacity-75 motion-reduce:animate-none"></span><span class="relative inline-flex size-2 rounded-full bg-sec-base"></span></span><span class="typography-body-sm font-medium text-sec-light">GraphQL AI Working Group · open to all</span></a><h1 class="typography-h1 max-w-4xl text-balance leading-[1.05]">The API language<br/><span class="text-sec-light">for humans and agents</span></h1><p class="typography-body-lg mt-6 max-w-2xl text-pretty text-white/80">An agent that can reach a GraphQL endpoint can read its types, its field arguments and its documentation, then ask for exactly the fields it needs. Nothing to publish alongside it and keep in sync.</p><ul class="mt-8 flex max-w-2xl flex-wrap justify-center gap-x-8 gap-y-2"><li class="flex items-start gap-1.5"><svg width="24" height="24" fill="currentColor" viewBox="0 0 24 24" class="mt-0.5 size-4 shrink-0 text-sec-base"><path d="M10 18H8v-2h2zm-2-2H6v-2h2zm4-2v2h-2v-2zm-6 0H4v-2h2zm8 0h-2v-2h2zm2-2h-2v-2h2zm2-2h-2V8h2zm2-2h-2V6h2z"></path></svg><span class="typography-body-sm text-white/80">Self-describing schemas let agents discover your API</span></li><li class="flex items-start gap-1.5"><svg width="24" height="24" fill="currentColor" viewBox="0 0 24 24" class="mt-0.5 size-4 shrink-0 text-sec-base"><path d="M10 18H8v-2h2zm-2-2H6v-2h2zm4-2v2h-2v-2zm-6 0H4v-2h2zm8 0h-2v-2h2zm2-2h-2v-2h2zm2-2h-2V8h2zm2-2h-2V6h2z"></path></svg><span class="typography-body-sm text-white/80">Invalid queries fail validation before they execute</span></li><li class="flex items-start gap-1.5"><svg width="24" height="24" fill="currentColor" viewBox="0 0 24 24" class="mt-0.5 size-4 shrink-0 text-sec-base"><path d="M10 18H8v-2h2zm-2-2H6v-2h2zm4-2v2h-2v-2zm-6 0H4v-2h2zm8 0h-2v-2h2zm2-2h-2v-2h2zm2-2h-2V8h2zm2-2h-2V6h2z"></path></svg><span class="typography-body-sm text-white/80">Field selection keeps responses to what the query asked for</span></li></ul><div class="mt-10 flex flex-wrap items-center justify-center gap-4"><a class="relative flex items-center justify-center gap-2.5 font-normal text-base/none text-neu-0 bg-neu-900 hover:bg-neu-800 active:bg-neu-700 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 dark:data-[variant=secondary]:bg-neu-100/80 dark:data-[variant=secondary]:hover:bg-neu-200/50 data-[variant=secondary]:text-neu-900 data-[variant=secondary]:hover:bg-neu-200/75 data-[variant=secondary]:active:bg-neu-200/90 data-[variant=tertiary]:bg-neu-100 data-[variant=tertiary]:text-neu-900 data-[variant=tertiary]:hover:bg-neu-200 data-[variant=tertiary]:active:bg-neu-300 gql-focus-visible [aria-disabled]:bg-neu-800 aria-disabled:pointer-events-none dark:data-[variant=tertiary]:bg-neu-900/10 dark:data-[variant=tertiary]:text-neu-900 dark:data-[variant=tertiary]:hover:bg-neu-900/[.125] dark:data-[variant=tertiary]:active:bg-neu-800/20 dark:data-[variant=tertiary]:ring-1 dark:data-[variant=tertiary]:ring-inset dark:data-[variant=tertiary]:ring-neu-900/20" data-variant="primary" href="#interactive-demo" variant="primary">Try the live demo<svg width="40" height="40" fill="currentColor" viewBox="0 0 40 40" class="size-5 shrink-0 text-neu-0"><path fill-rule="evenodd" d="M18.333 6.667h3.334v20H25V30h-3.333v3.333h-3.334V30H15v-3.334h3.333zm-6.666 16.666v3.334H15v-3.334zm0 0V20H8.333v3.333zm16.666 0v3.334H25v-3.334zm0 0V20h3.334v3.333z" clip-rule="evenodd"></path></svg></a><a class="relative flex items-center justify-center gap-2.5 font-normal text-base/none text-neu-0 bg-neu-900 hover:bg-neu-800 active:bg-neu-700 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 dark:data-[variant=secondary]:bg-neu-100/80 dark:data-[variant=secondary]:hover:bg-neu-200/50 data-[variant=secondary]:text-neu-900 data-[variant=secondary]:hover:bg-neu-200/75 data-[variant=secondary]:active:bg-neu-200/90 data-[variant=tertiary]:bg-neu-100 data-[variant=tertiary]:text-neu-900 data-[variant=tertiary]:h
5over:bg-neu-200 data-[variant=tertiary]:active:bg-neu-300 gql-focus-visible [aria-disabled]:bg-neu-800 aria-disabled:pointer-events-none dark:data-[variant=tertiary]:bg-neu-900/10 dark:data-[variant=tertiary]:text-neu-900 dark:data-[variant=tertiary]:hover:bg-neu-900/[.125] dark:data-[variant=tertiary]:active:bg-neu-800/20 dark:data-[variant=tertiary]:ring-1 dark:data-[variant=tertiary]:ring-inset dark:data-[variant=tertiary]:ring-neu-900/20" data-variant="secondary" variant="secondary" href="/blog/2025-07-03-graphql-supercharging-ai/">Read the blog post</a><a class="relative flex items-center justify-center gap-2.5 font-normal text-base/none text-neu-0 bg-neu-900 hover:bg-neu-800 active:bg-neu-700 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 dark:data-[variant=secondary]:bg-neu-100/80 dark:data-[variant=secondary]:hover:bg-neu-200/50 data-[variant=secondary]:text-neu-900 data-[variant=secondary]:hover:bg-neu-200/75 data-[variant=secondary]:active:bg-neu-200/90 data-[variant=tertiary]:bg-neu-100 data-[variant=tertiary]:text-neu-900 data-[variant=tertiary]:hover:bg-neu-200 data-[variant=tertiary]:active:bg-neu-300 gql-focus-visible [aria-disabled]:bg-neu-800 aria-disabled:pointer-events-none dark:data-[variant=tertiary]:bg-neu-900/10 dark:data-[variant=tertiary]:text-neu-900 dark:data-[variant=tertiary]:hover:bg-neu-900/[.125] dark:data-[variant=tertiary]:active:bg-neu-800/20 dark:data-[variant=tertiary]:ring-1 dark:data-[variant=tertiary]:ring-inset dark:data-[variant=tertiary]:ring-neu-900/20" data-variant="tertiary" variant="tertiary" href="/resources/ai/">Explore AI resources</a></div></div></div></div><section class="gql-container gql-section lg:py-16 xl:py-24"><span class="flex shrink-0 items-center gap-1 self-start whitespace-nowrap font-mono text-sm/none font-normal uppercase text-pri-base dark:text-pri-light mb-6"><svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" class="shrink-0 translate-y-[-0.5px]"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.66666 13.3332H5.33333V2.6665H6.66666V3.99984H7.99999V5.99984H9.33333V7.33317H10.6667V8.6665H9.33333V9.99984H7.99999V11.9998H6.66666V13.3332Z"></path></svg>Why GraphQL for AI</span><h2 class="typography-h2 mb-2 lg:mb-4">Built for machines<br/>to understand</h2><p class="typography-body-lg mb-8 max-w-2xl text-pretty text-neu-800 lg:mb-16">GraphQL was designed from day one to be machine-readable. Its introspection system, type safety and composability were built for tooling and clients, and they turn out to be what an agent needs to work out what an API offers and ask for part of it.</p><div class="grid gap-px bg-neu-200 dark:bg-neu-100 lg:grid-cols-3"><div class="flex flex-col bg-neu-0 p-6 lg:px-8 lg:py-0 lg:first:pl-0 lg:last:pr-0 xl:px-10"><span class="typography-menu flex items-center gap-1 text-pri-base dark:text-pri-light"><svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" class="size-4 translate-x-[0.5px]"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.66666 13.3332H5.33333V2.6665H6.66666V3.99984H7.99999V5.99984H9.33333V7.33317H10.6667V8.6665H9.33333V9.99984H7.99999V11.9998H6.66666V13.3332Z"></path></svg>Introspection</span><div class="mt-4 flex items-center gap-3"><svg width="40" height="40" fill="currentColor" viewBox="0 0 40 40" class="size-6 text-pri-base"><path d="M36.666 36.667h-3.334v-3.334h3.334zm-3.334-3.334h-3.333V30h3.333zm-10-3.333H9.999v-3.333h13.333zm6.667 0h-3.333v-3.333h3.333zm-20-3.333H6.666v-3.334h3.333zm16.667 0h-3.334v-3.334h3.334zm-20-3.334H3.332V10h3.334zm23.333 0h-3.333V10h3.333zM9.999 10H6.666V6.667h3.333zm16.667 0h-3.334V6.667h3.334zm-3.334-3.333H9.999V3.333h13.333z"></path></svg><h3 class="typography-h3">Self-describing</h3></div><p class="typography-body-md mt-4 text-pretty text-neu-800">Every GraphQL API ships with a built-in type system. AI agents query `__schema` and immediately understand what data is available, what arguments each field accepts, and how types relate â no hand-written tool descriptions needed.</p><div class="mt-5"><div class="pre_pre__do0AT relative"><div class="pre_label__ZLpTs flex items-center gap-1.5 px-4 py-2 text-sm text-neu-800 rounded-t-md border border-b-0 border-neu-200 bg-neu-0/[.64] backdrop-blur-[6px] dark:border-neu-50"><svg viewBox="0 0 24 24" fill="currentColor" class="_h-4 _w-auto _max-w-6 _shrink-0"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 1.65674L20.9575 6.82836V17.1716L12 22.3432L3.04248 17.1716V6.82836L12 1.65674ZM4.04753 7.40863V15.006L10.6271 3.60994L4.04753 7.40863ZM12 3.24206L4.4154 16.379H19.5846L12 3.24206ZM18.5796 17.384H5.42045L12 21.1827L18.5796 17.384ZM19.9525 15.006L13.3729 3.60994L19.9525 7.40863V15.006Z"></path><path d="M12 4.35381C13.1691 4.35381 14.1168 3.40609 14.1168 2.23701C14.1168 1.06793 13.1691 0.120209 12 0.120209C10.8309 0.120209 9.88319 1.06793 9.88319 2.23701C9.88319 3.40609 10.8309 4.35381 12 4.35381Z"></path><path d="M20.455 9.23532C21.6241 9.23532 22.5718 8.2876 22.5718 7.11852C22.5718 5.94945 21.6241 5.00172 20.455 5.00172C19.2859 5.00172 18.3382 5.94945 18.3382 7.11852C18.3382 8.2876 19.2859 9.23532 20.45
55 9.23532Z"></path><path d="M20.455 18.9983C21.6241 18.9983 22.5718 18.0506 22.5718 16.8815C22.5718 15.7124 21.6241 14.7647 20.455 14.7647C19.2859 14.7647 18.3382 15.7124 18.3382 16.8815C18.3382 18.0506 19.2859 18.9983 20.455 18.9983Z"></path><path d="M12 23.8798C13.1691 23.8798 14.1168 22.9321 14.1168 21.763C14.1168 20.5939 13.1691 19.6462 12 19.6462C10.8309 19.6462 9.88319 20.5939 9.88319 21.763C9.88319 22.9321 10.8309 23.8798 12 23.8798Z"></path><path d="M3.54382 18.9983C4.71289 18.9983 5.66062 18.0506 5.66062 16.8815C5.66062 15.7124 4.71289 14.7647 3.54382 14.7647C2.37474 14.7647 1.42702 15.7124 1.42702 16.8815C1.42702 18.0506 2.37474 18.9983 3.54382 18.9983Z"></path><path d="M3.54382 9.23532C4.71289 9.23532 5.66062 8.2876 5.66062 7.11852C5.66062 5.94945 4.71289 5.00172 3.54382 5.00172C2.37474 5.00172 1.42702 5.94945 1.42702 7.11852C1.42702 8.2876 2.37474 9.23532 3.54382 9.23532Z"></path></svg><span class="_truncate">Agent introspects your API</span></div><pre class="overflow-x-auto border border-neu-200 py-4 subpixel-antialiased focus-visible:gql-focus-outline contrast-more:contrast-150 dark:border-neu-50 rounded-b-md" tabindex="0"><code class="nextra-code" dir="ltr"><span><span style="--shiki-light:#990069;--shiki-dark:#C2F653">query</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 6<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> __schema</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 7<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> types</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 8<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span></span> 9<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> fields</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 10<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span></span> 11<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 12<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 13<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 14<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span></code></pre><div class="_opacity-0 _transition [div:hover>&]:_opacity-100 focus-within:_opacity-100 _flex _gap-1 _absolute _right-4 _top-14"><button class="_transition _border _border-gray-300 dark:_border-neutral-700 contrast-more:_border-gray-900 contrast-more:dark:_border-gray-50 _rounded-md _p-1.5 md:_hidden" title="Toggle word wrap" type="button" data-headlessui-state=""><svg viewBox="0 0 24 24" fill="currentColor" height="16"><path d="M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"></path></svg></button></div></div></div><ul class="typography-body-sm flex flex-col gap-2 pt-5"><li class="flex items-start gap-1.5"><svg width="24" height="24" fill="currentColor" viewBox="0 0 24 24" class="mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter"><path d="M10 18H8v-2h2zm-2-2H6v-2h2zm4-2v2h-2v-2zm-6 0H4v-2h2zm8 0h-2v-2h2zm2-2h-2v-2h2zm2-2h-2V8h2zm2-2h-2V6h2z"></path></svg><span class="text-neu-700">Auto-generated tool definitions for LLMs</span></li><li class="flex items-start gap-1.5"><svg width="24" height="24" fill="currentColor" viewBox="0 0 24 24" class="mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter"><path d="M10 18H8v-2h2zm-2-2H6v-2h2zm4-2v2h-2v-2zm-6 0H4v-2h2zm8 0h-2v-2h2zm2-2h-2v-2h2zm2-2h-2V8h2zm2-2h-2V6h2z"></path></svg><span class="text-neu-700">Agents discover capabilities at runtime</span></li><li class="flex items-start gap-1.5"><svg width="24" height="24" fill="currentColor" viewBox="0 0 24 24" class="mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter"><path d="M10 18H8v-2h2zm-2-2H6v-2h2zm4-2v2h-2v-2zm-6 0H4v-2h2zm8 0h-2v-2h2zm2-2h-2v-2h2zm2-2h-2V8h2zm2-2h-2V6h2z"></path></svg><span class="text-neu-700">Generate an MCP server from the schema, not beside it</span></li></ul></div><div class="flex flex-col bg-neu-0 p-6 lg:px-8 lg:py-0 lg:first:pl-0 lg:last:pr-0 xl:px-10"><span class="typography-menu flex items-center gap-1 text-pri-base dark:text-pri-light">
14<svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" class="size-4 translate-x-[0.5px]"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.66666 13.3332H5.33333V2.6665H6.66666V3.99984H7.99999V5.99984H9.33333V7.33317H10.6667V8.6665H9.33333V9.99984H7.99999V11.9998H6.66666V13.3332Z"></path></svg>Type Safety</span><div class="mt-4 flex items-center gap-3"><svg width="40" height="40" fill="currentColor" viewBox="0 0 40 40" class="size-6 text-pri-base"><path d="M6.666 21.667h13.333v10h3.333V35h-3.333v3.333h-3.333V25H3.332v-6.667h3.334zm20 10h-3.334v-3.334h3.334zm3.333-3.334h-3.333V25h3.333zM33.332 25h-3.333v-3.333h3.333zm-10-10h13.334v6.667h-3.334v-3.334H19.999v-10h-3.333V5h3.333V1.667h3.333zM9.999 18.333H6.666V15h3.333zM13.332 15H9.999v-3.333h3.333zm3.334-3.333h-3.334V8.333h3.334z"></path></svg><h3 class="typography-h3">Strongly typed</h3></div><p class="typography-body-md mt-4 text-pretty text-neu-800">Every field has a known, validated type. LLMs can reason about inputs and outputs with confidence. A wrong guess comes back as a named validation error the agent can correct, rather than a 200 with the wrong data in it.</p><div class="mt-5"><div class="pre_pre__do0AT relative"><div class="pre_label__ZLpTs flex items-center gap-1.5 px-4 py-2 text-sm text-neu-800 rounded-t-md border border-b-0 border-neu-200 bg-neu-0/[.64] backdrop-blur-[6px] dark:border-neu-50"><svg viewBox="0 0 24 24" fill="currentColor" class="_h-4 _w-auto _max-w-6 _shrink-0"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 1.65674L20.9575 6.82836V17.1716L12 22.3432L3.04248 17.1716V6.82836L12 1.65674ZM4.04753 7.40863V15.006L10.6271 3.60994L4.04753 7.40863ZM12 3.24206L4.4154 16.379H19.5846L12 3.24206ZM18.5796 17.384H5.42045L12 21.1827L18.5796 17.384ZM19.9525 15.006L13.3729 3.60994L19.9525 7.40863V15.006Z"></path><path d="M12 4.35381C13.1691 4.35381 14.1168 3.40609 14.1168 2.23701C14.1168 1.06793 13.1691 0.120209 12 0.120209C10.8309 0.120209 9.88319 1.06793 9.88319 2.23701C9.88319 3.40609 10.8309 4.35381 12 4.35381Z"></path><path d="M20.455 9.23532C21.6241 9.23532 22.5718 8.2876 22.5718 7.11852C22.5718 5.94945 21.6241 5.00172 20.455 5.00172C19.2859 5.00172 18.3382 5.94945 18.3382 7.11852C18.3382 8.2876 19.2859 9.23532 20.455 9.23532Z"></path><path d="M20.455 18.9983C21.6241 18.9983 22.5718 18.0506 22.5718 16.8815C22.5718 15.7124 21.6241 14.7647 20.455 14.7647C19.2859 14.7647 18.3382 15.7124 18.3382 16.8815C18.3382 18.0506 19.2859 18.9983 20.455 18.9983Z"></path><path d="M12 23.8798C13.1691 23.8798 14.1168 22.9321 14.1168 21.763C14.1168 20.5939 13.1691 19.6462 12 19.6462C10.8309 19.6462 9.88319 20.5939 9.88319 21.763C9.88319 22.9321 10.8309 23.8798 12 23.8798Z"></path><path d="M3.54382 18.9983C4.71289 18.9983 5.66062 18.0506 5.66062 16.8815C5.66062 15.7124 4.71289 14.7647 3.54382 14.7647C2.37474 14.7647 1.42702 15.7124 1.42702 16.8815C1.42702 18.0506 2.37474 18.9983 3.54382 18.9983Z"></path><path d="M3.54382 9.23532C4.71289 9.23532 5.66062 8.2876 5.66062 7.11852C5.66062 5.94945 4.71289 5.00172 3.54382 5.00172C2.37474 5.00172 1.42702 5.94945 1.42702 7.11852C1.42702 8.2876 2.37474 9.23532 3.54382 9.23532Z"></path></svg><span class="_truncate">Every field has a known type</span></div><pre class="overflow-x-auto border border-neu-200 py-4 subpixel-antialiased focus-visible:gql-focus-outline contrast-more:contrast-150 dark:border-neu-50 rounded-b-md" tabindex="0"><code class="nextra-code" dir="ltr"><span><span style="--shiki-light:#990069;--shiki-dark:#C2F653">type</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Query</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 15<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> human</span><span style="--shiki-light:#24292EFF;--shiki-dark:#CFD3C5">(</span><span style="--shiki-light:#0E0F0B;--shiki-dark:#F3F4F0">id</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> ID</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span><span style="--shiki-light:#24292EFF;--shiki-dark:#CFD3C5">)</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Human</span></span> 16<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span> 17<span><span style="--shiki-light:#990069;--shiki-dark:#C2F653">type</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Human</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 18<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> String</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span></span> 19<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> height</span><span style="--shiki-light:#24292EFF;--shiki-dark:#CFD3C5">(</span><span style="--shiki-light:#0E0F0B;--shiki-dark:#F3F4F0">unit</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Unit</span><span style="--shiki-light:#24292EFF;--shiki-dark:#CFD3C5">)</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Float</span></span> 20<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span></code></pre><div class="_opacity-0 _transition [div:hover>&]:_opacity-100 focus-within:_opacity-100 _flex _gap-1 _absolute _right-4 _top-14"><button class="_transition _border _border-gray-300 dark:_border-neutral-700 contrast-more:_border-gray-900 contrast-more:dark:_border-gray-50 _rounded-md _p-1.5 md:_hidden" title="Toggle word wrap" type="button" data-headlessui-state=""><svg viewBox="0 0 24 24" fill="currentColor" height="16"><path d="M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"></path></svg></button></div></div></div><ul class="typography-body-sm flex flex-col gap-2 pt-5"><li class="flex items-start gap-1.5"><svg width="24" height="24" fill="currentColor" viewBox="0 0 24 24" class="mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter"><path d="M10 18H8v-2h2zm-2-2H6v-2h2zm4-2v2h-2v-2zm-6 0H4v-2h2zm8 0h-2v-2h2zm2-2h-2v-2h2zm2-2h-2V8h2zm2-2h-2V6h2z"></path></svg><span class="text-neu-700">LLMs understand data shapes natively</span></li><li class="flex items-start gap-1.5"><svg width="24" height="24" fill="currentColor" viewBox="0 0 24 24" class="mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter"><path d="M10 18H8v-2h2zm-2-2H6v-2h2zm4-2v2h-2v-2zm-6 0H4v-2h2zm8 0h-2v-2h2zm2-2h-2v-2h2zm2-2h-2V8h2zm2-2h-2V6h2z"></path></svg><span class="text-neu-700">Validated responses prevent parsing errors</span></li><li class="flex items-start gap-1.5"><svg width="24" height="24" fill="currentColor" viewBox="0 0 24 24" class="mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter"><path d="M10 18H8v-2h2zm-2-2H6v-2h2zm4-2v2h-2v-2zm-6 0H4v-2h2zm8 0h-2v-2h2zm2-2h-2v-2h2zm2-2h-2V8h2zm2-2h-2V6h2z"></path></svg><span class="text-neu-700">Type system reduces hallucinated API interactions</span></li></ul></div><div class="flex flex-col bg-neu-0 p-6 lg:px-8 lg:py-0 lg:first:pl-0 lg:last:pr-0 xl:px-10"><span class="typography-menu flex items-center gap-1 text-pri-base dark:text-pri-light">
20<svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" class="size-4 translate-x-[0.5px]"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.66666 13.3332H5.33333V2.6665H6.66666V3.99984H7.99999V5.99984H9.33333V7.33317H10.6667V8.6665H9.33333V9.99984H7.99999V11.9998H6.66666V13.3332Z"></path></svg>Flexibility</span><div class="mt-4 flex items-center gap-3"><svg fill="none" viewBox="0 0 24 24" class="size-6 text-pri-base"><path fill="currentColor" d="M17 4h2v10h-2zm0 12h-2v2h2v2h2v-2h2v-2zm-4-6h-2v10h2zm-8 2H3v2h2v6h2v-6h2v-2zm8-8h-2v2H9v2h6V6h-2zM5 4h2v6H5z"></path></svg><h3 class="typography-h3">Composable</h3></div><p class="typography-body-md mt-4 text-pretty text-neu-800">Request exactly what you need, nothing more. GraphQL lets AI agents compose precise queries on the fly â requesting nested data, using aliases, and applying filters. One endpoint serves any data access pattern without client-side stitching.</p><div class="mt-5"><div class="pre_pre__do0AT relative"><div class="pre_label__ZLpTs flex items-center gap-1.5 px-4 py-2 text-sm text-neu-800 rounded-t-md border border-b-0 border-neu-200 bg-neu-0/[.64] backdrop-blur-[6px] dark:border-neu-50"><svg viewBox="0 0 24 24" fill="currentColor" class="_h-4 _w-auto _max-w-6 _shrink-0"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 1.65674L20.9575 6.82836V17.1716L12 22.3432L3.04248 17.1716V6.82836L12 1.65674ZM4.04753 7.40863V15.006L10.6271 3.60994L4.04753 7.40863ZM12 3.24206L4.4154 16.379H19.5846L12 3.24206ZM18.5796 17.384H5.42045L12 21.1827L18.5796 17.384ZM19.9525 15.006L13.3729 3.60994L19.9525 7.40863V15.006Z"></path><path d="M12 4.35381C13.1691 4.35381 14.1168 3.40609 14.1168 2.23701C14.1168 1.06793 13.1691 0.120209 12 0.120209C10.8309 0.120209 9.88319 1.06793 9.88319 2.23701C9.88319 3.40609 10.8309 4.35381 12 4.35381Z"></path><path d="M20.455 9.23532C21.6241 9.23532 22.5718 8.2876 22.5718 7.11852C22.5718 5.94945 21.6241 5.00172 20.455 5.00172C19.2859 5.00172 18.3382 5.94945 18.3382 7.11852C18.3382 8.2876 19.2859 9.23532 20.455 9.23532Z"></path><path d="M20.455 18.9983C21.6241 18.9983 22.5718 18.0506 22.5718 16.8815C22.5718 15.7124 21.6241 14.7647 20.455 14.7647C19.2859 14.7647 18.3382 15.7124 18.3382 16.8815C18.3382 18.0506 19.2859 18.9983 20.455 18.9983Z"></path><path d="M12 23.8798C13.1691 23.8798 14.1168 22.9321 14.1168 21.763C14.1168 20.5939 13.1691 19.6462 12 19.6462C10.8309 19.6462 9.88319 20.5939 9.88319 21.763C9.88319 22.9321 10.8309 23.8798 12 23.8798Z"></path><path d="M3.54382 18.9983C4.71289 18.9983 5.66062 18.0506 5.66062 16.8815C5.66062 15.7124 4.71289 14.7647 3.54382 14.7647C2.37474 14.7647 1.42702 15.7124 1.42702 16.8815C1.42702 18.0506 2.37474 18.9983 3.54382 18.9983Z"></path><path d="M3.54382 9.23532C4.71289 9.23532 5.66062 8.2876 5.66062 7.11852C5.66062 5.94945 4.71289 5.00172 3.54382 5.00172C2.37474 5.00172 1.42702 5.94945 1.42702 7.11852C1.42702 8.2876 2.37474 9.23532 3.54382 9.23532Z"></path></svg><span class="_truncate">Agent fetches related data in one call</span></div><pre class="overflow-x-auto border border-neu-200 py-4 subpixel-antialiased focus-visible:gql-focus-outline contrast-more:contrast-150 dark:border-neu-50 rounded-b-md" tabindex="0"><code class="nextra-code" dir="ltr"><span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">{</span></span> 21<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> human</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">(</span><span style="--shiki-light:#0E0F0B;--shiki-dark:#F3F4F0">id</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">: </span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">1000</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">) {</span></span> 22<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span></span> 23<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> friends</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 24<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span></span> 25<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> starships</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 26<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span></span> 27<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 28<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 29<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 30<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span></code></pre><div class="_opacity-0 _transition [div:hover>&]:_opacity-100 focus-within:_opacity-100 _flex _gap-1 _absolute _right-4 _top-14"><button class="_transition _border _border-gray-300 dark:_border-neutral-700 contrast-more:_border-gray-900 contrast-more:dark:_border-gray-50 _rounded-md _p-1.5 md:_hidden" title="Toggle word wrap" type="button" data-headlessui-state=""><svg viewBox="0 0 24 24" fill="currentColor" height="16"><path d="M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"></path></svg></button></div></div></div><ul class="typography-body-sm flex flex-col gap-2 pt-5"><li class="flex items-start gap-1.5"><svg width="24" height="24" fill="currentColor" viewBox="0 0 24 24" class="mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter"><path d="M10 18H8v-2h2zm-2-2H6v-2h2zm4-2v2h-2v-2zm-6 0H4v-2h2zm8 0h-2v-2h2zm2-2h-2v-2h2zm2-2h-2V8h2zm2-2h-2V6h2z"></path></svg><span class="text-neu-700">Response size tracks the query, not the endpoint</span></li><li class="flex items-start gap-1.5"><svg width="24" height="24" fill="currentColor" viewBox="0 0 24 24" class="mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter"><path d="M10 18H8v-2h2zm-2-2H6v-2h2zm4-2v2h-2v-2zm-6 0H4v-2h2zm8 0h-2v-2h2zm2-2h-2v-2h2zm2-2h-2V8h2zm2-2h-2V6h2z"></path></svg><span class="text-neu-700">Dynamic query composition by AI agents</span></li><li class="flex items-start gap-1.5"><svg width="24" height="24" fill="currentColor" viewBox="0 0 24 24" class="mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter"><path d="M10 18H8v-2h2zm-2-2H6v-2h2zm4-2v2h-2v-2zm-6 0H4v-2h2zm8 0h-2v-2h2zm2-2h-2v-2h2zm2-2h-2V8h2zm2-2h-2V6h2z"></path></svg><span class="text-neu-700">One endpoint serves any access pattern the schema allows</span></li></ul></div></div></section><section class="gql-container gql-section lg:py-12 xl:py-16"><span class="flex shrink-0 items-center gap-1 self-start whitespace-nowrap font-mono text-sm/none font-normal uppercase text-pri-base dark:text-pri-light mb-6">
30<svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" class="shrink-0 translate-y-[-0.5px]"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.66666 13.3332H5.33333V2.6665H6.66666V3.99984H7.99999V5.99984H9.33333V7.33317H10.6667V8.6665H9.33333V9.99984H7.99999V11.9998H6.66666V13.3332Z"></path></svg>GraphQL and REST</span><h2 class="typography-h2 mb-2 lg:mb-4">What changes when the API describes itself</h2><p class="typography-body-lg mb-6 max-w-2xl text-pretty text-neu-800">Both can be typed and both can be documented. The difference is where that description lives, and how much of it an agent has to carry.</p><div class="overflow-x-auto"><table class="w-full border-collapse text-left"><thead class="max-md:sr-only"><tr class="border-b border-neu-200 dark:border-neu-100"><th class="typography-body-xs px-4 py-3 font-medium uppercase tracking-wider text-neu-700">Property</th><th class="typography-body-xs px-4 py-3 font-medium uppercase tracking-wider text-sec-darker dark:text-sec-light">GraphQL</th><th class="typography-body-xs px-4 py-3 font-medium uppercase tracking-wider text-neu-700">REST + OpenAPI</th><th class="typography-body-xs px-4 py-3 font-medium uppercase tracking-wider text-neu-700">Why</th></tr></thead><tbody class="max-md:block"><tr class="border-b border-neu-200 align-top dark:border-neu-100 max-md:block max-md:py-3"><th scope="row" class="typography-body-sm px-4 py-3 text-left font-medium text-neu-900 max-md:block max-md:py-0 md:whitespace-nowrap">Discovery</th><td class="typography-body-sm px-4 py-3 font-medium text-sec-darker dark:text-sec-light max-md:block max-md:py-0 md:whitespace-nowrap"><span class="typography-body-xs mr-1 uppercase tracking-wider text-neu-700 md:hidden">GraphQL</span>Introspection<span class="typography-body-xs text-neu-700 max-md:ml-1 md:mt-0.5 md:block">from the endpoint itself</span></td><td class="typography-body-sm px-4 py-3 text-neu-800 max-md:block max-md:py-0 md:whitespace-nowrap"><span class="typography-body-xs mr-1 uppercase tracking-wider text-neu-700 md:hidden">REST</span>OpenAPI document<span class="typography-body-xs text-neu-700 max-md:ml-1 md:mt-0.5 md:block">published alongside</span></td><td class="typography-body-sm text-pretty px-4 py-3 text-neu-800 max-md:block max-md:pt-1">Most REST frameworks generate an OpenAPI document from the code, so this is not about hand-writing a schema. The difference is that introspection is part of the GraphQL spec and answers on the same endpoint the agent already calls, with no second artifact to locate or keep in sync.</td></tr><tr class="border-b border-neu-200 align-top dark:border-neu-100 max-md:block max-md:py-3"><th scope="row" class="typography-body-sm px-4 py-3 text-left font-medium text-neu-900 max-md:block max-md:py-0 md:whitespace-nowrap">Response shape</th><td class="typography-body-sm px-4 py-3 font-medium text-sec-darker dark:text-sec-light max-md:block max-md:py-0 md:whitespace-nowrap"><span class="typography-body-xs mr-1 uppercase tracking-wider text-neu-700 md:hidden">GraphQL</span>The query names the fields<span class="typography-body-xs text-neu-700 max-md:ml-1 md:mt-0.5 md:block">caller decides</span></td><td class="typography-body-sm px-4 py-3 text-neu-800 max-md:block max-md:py-0 md:whitespace-nowrap"><span class="typography-body-xs mr-1 uppercase tracking-wider text-neu-700 md:hidden">REST</span>The endpoint decides<span class="typography-body-xs text-neu-700 max-md:ml-1 md:mt-0.5 md:block">sparse fieldsets optional</span></td><td class="typography-body-sm text-pretty px-4 py-3 text-neu-800 max-md:block max-md:pt-1">A GraphQL response contains the fields the query asked for. A REST endpoint returns its payload, and narrowing it means a sparse-fieldset convention or another endpoint. An agent pays for the difference in context window.</td></tr><tr class="border-b border-neu-200 align-top dark:border-neu-100 max-md:block max-md:py-3"><th scope="row" class="typography-body-sm px-4 py-3 text-left font-medium text-neu-900 max-md:block max-md:py-0 md:whitespace-nowrap">Traversal</th><td class="typography-body-sm px-4 py-3 font-medium text-sec-darker dark:text-sec-light max-md:block max-md:py-0 md:whitespace-nowrap"><span class="typography-body-xs mr-1 uppercase tracking-wider text-neu-700 md:hidden">GraphQL</span>One query, many types<span class="typography-body-xs text-neu-700 max-md:ml-1 md:mt-0.5 md:block">follows relationships</span></td><td class="typography-body-sm px-4 py-3 text-neu-800 max-md:block max-md:py-0 md:whitespace-nowrap"><span class="typography-body-xs mr-1 uppercase tracking-wider text-neu-700 md:hidden">REST</span>One endpoint per resource<span class="typography-body-xs text-neu-700 max-md:ml-1 md:mt-0.5 md:block">client stitches</span></td><td class="typography-body-sm text-pretty px-4 py-3 text-neu-800 max-md:block max-md:pt-1">A GraphQL query walks relationships across types, so the agent never has to hold the whole type graph in context at once. With REST the relationships live in the agent's head, and it composes the result itself.</td></tr><tr class="border-b border-neu-200 align-top dark:border-neu-100 max-md:block max-md:py-3"><th scope="row" class="typography-body-sm px-4 py-3 text-left font-medium text-neu-900 max-md:block max-md:py-0 md:whitespace-nowrap">Documentation</th><td class="typography-body-sm px-4 py-3 font-medium text-sec-darker dark:text-sec-light max-md:block max-md:py-0 md:whitespace-nowrap"><span class="typography-body-xs mr-1 uppercase tracking-wider text-neu-700 md:hidden">GraphQL</span>On types and fields<span class="typography-body-xs text-neu-700 max-md:ml-1 md:mt-0.5 md:block">returned by introspection</span></td><td class="typography-body-sm px-4 py-3 text-neu-800 max-md:block max-md:py-0 md:whitespace-nowrap"><span class="typography-body-xs mr-1 uppercase tracking-wider text-neu-700 md:hidden">REST</span>In the spec document<span class="typography-body-xs text-neu-700 max-md:ml-1 md:mt-0.5 md:block">plus an instructions file</span></td><td class="typography-body-sm text-pretty px-4 py-3 text-neu-800 max-md:block max-md:pt-1">Descriptions attach to the type, every field and every argument, and come back through the same introspection call. There is no separate docs file to point the agent at.</td></tr></tbody></table></div><p class="typography-body-xs mt-3 text-neu-700">Both protocols are typed, and both can describe themselves. The gap is in traversal and discoverability, not in
30whether types exist. Where a task maps cleanly onto one purpose-built endpoint, REST is the simpler thing for an agent to call.</p><div class="mt-6 border-l-2 border-neu-200 pl-4 dark:border-neu-100"><p class="typography-body-sm max-w-3xl text-pretty text-neu-700">The public numbers we can point at come from Apollo, who report<!-- --> <a rel="noopener noreferrer" target="_blank" href="https://www.apollographql.com/blog/smart-schema-discovery-how-apollo-mcp-server-maximizes-ai-context-efficiency" class="underline">around 40% less schema context and 40â75% fewer tool calls</a> <!-- -->when an MCP server exposes a curated set of operations instead of a whole schema. Those are Apollo's own measurements of their own server, not an independent benchmark, and they describe tool selection rather than GraphQL against REST.</p><p class="typography-body-sm mt-2 max-w-3xl text-pretty text-neu-700">If you have reproducible figures for agents against a GraphQL API, the<!-- --> <a rel="noopener noreferrer" target="_blank" href="https://github.com/graphql/ai-wg" class="underline">AI Working Group</a> <!-- -->would like to see them, and this page will cite them.</p></div><div class="mt-10"><h3 class="typography-h3 mb-2">Docs live in the schema â and agents can query them</h3><p class="typography-body-md mb-6 max-w-3xl text-pretty text-neu-700">Descriptions written with<!-- --> <code class="rounded bg-neu-100 px-1 py-0.5 font-mono text-sm text-neu-800 dark:bg-neu-100/80">"""</code> <!-- -->are stored on the type and every field. An agent reads them back with the built-in<!-- --> <code class="rounded bg-neu-100 px-1 py-0.5 font-mono text-sm text-neu-800 dark:bg-neu-100/80">__type</code> <!-- -->introspection query â no separate docs file or AGENT.md to point it to.</p><div class="grid gap-4 lg:grid-cols-3"><div class="pre_pre__do0AT relative"><div class="pre_label__ZLpTs flex items-center gap-1.5 px-4 py-2 text-sm text-neu-800 rounded-t-md border border-b-0 border-neu-200 bg-neu-0/[.64] backdrop-blur-[6px] dark:border-neu-50"><svg viewBox="0 0 24 24" fill="currentColor" class="_h-4 _w-auto _max-w-6 _shrink-0"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 1.65674L20.9575 6.82836V17.1716L12 22.3432L3.04248 17.1716V6.82836L12 1.65674ZM4.04753 7.40863V15.006L10.6271 3.60994L4.04753 7.40863ZM12 3.24206L4.4154 16.379H19.5846L12 3.24206ZM18.5796 17.384H5.42045L12 21.1827L18.5796 17.384ZM19.9525 15.006L13.3729 3.60994L19.9525 7.40863V15.006Z"></path><path d="M12 4.35381C13.1691 4.35381 14.1168 3.40609 14.1168 2.23701C14.1168 1.06793 13.1691 0.120209 12 0.120209C10.8309 0.120209 9.88319 1.06793 9.88319 2.23701C9.88319 3.40609 10.8309 4.35381 12 4.35381Z"></path><path d="M20.455 9.23532C21.6241 9.23532 22.5718 8.2876 22.5718 7.11852C22.5718 5.94945 21.6241 5.00172 20.455 5.00172C19.2859 5.00172 18.3382 5.94945 18.3382 7.11852C18.3382 8.2876 19.2859 9.23532 20.455 9.23532Z"></path><path d="M20.455 18.9983C21.6241 18.9983 22.5718 18.0506 22.5718 16.8815C22.5718 15.7124 21.6241 14.7647 20.455 14.7647C19.2859 14.7647 18.3382 15.7124 18.3382 16.8815C18.3382 18.0506 19.2859 18.9983 20.455 18.9983Z"></path><path d="M12 23.8798C13.1691 23.8798 14.1168 22.9321 14.1168 21.763C14.1168 20.5939 13.1691 19.6462 12 19.6462C10.8309 19.6462 9.88319 20.5939 9.88319 21.763C9.88319 22.9321 10.8309 23.8798 12 23.8798Z"></path><path d="M3.54382 18.9983C4.71289 18.9983 5.66062 18.0506 5.66062 16.8815C5.66062 15.7124 4.71289 14.7647 3.54382 14.7647C2.37474 14.7647 1.42702 15.7124 1.42702 16.8815C1.42702 18.0506 2.37474 18.9983 3.54382 18.9983Z"></path><path d="M3.54382 9.23532C4.71289 9.23532 5.66062 8.2876 5.66062 7.11852C5.66062 5.94945 4.71289 5.00172 3.54382 5.00172C2.37474 5.00172 1.42702 5.94945 1.42702 7.11852C1.42702 8.2876 2.37474 9.23532 3.54382 9.23532Z"></path></svg><span class="_truncate">Schema (with embedded docs)</span></div><pre class="overflow-x-auto border border-neu-200 py-4 subpixel-antialiased focus-visible:gql-focus-outline contrast-more:contrast-150 dark:border-neu-50 rounded-b-md" tabindex="0"><code class="nextra-code" dir="ltr"><span><span style="--shiki-light:#6E7557;--shiki-light-font-style:italic;--shiki-dark:#6E7557;--shiki-dark-font-style:inherit">"""</span><span style="--shiki-light:#9FA88A;--shiki-light-font-style:italic;--shiki-dark:#737373;--shiki-dark-font-style:inherit">A product in the catalog."""</span></span> 31<span><span style="--shiki-light:#990069;--shiki-dark:#C2F653">type</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Product</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 32<span><span style="--shiki-light:#6E7557;--shiki-light-font-style:italic;--shiki-dark:#6E7557;--shiki-dark-font-style:inherit"> """</span><span style="--shiki-light:#9FA88A;--shiki-light-font-style:italic;--shiki-dark:#737373;--shiki-dark-font-style:inherit">Human-readable display name."""</span></span> 33<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> String</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span></span> 34<span> </span> 35<span><span style="--shiki-light:#6E7557;--shiki-light-font-style:italic;--shiki-dark:#6E7557;--shiki-dark-font-style:inherit"> """</span><span style="--shiki-light:#9FA88A;--shiki-light-font-style:italic;--shiki-dark:#737373;--shiki-dark-font-style:inherit">Price in minor units (cents)."""</span></span> 36<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> price</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Int</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span></span> 37<span> </span> 38<span><span style="--shiki-light:#6E7557;--shiki-light-font-style:italic;--shiki-dark:#6E7557;--shiki-dark-font-style:inherit"> """</span><span style="--shiki-light:#9FA88A;--shiki-light-font-style:italic;--shiki-dark:#737373;--shiki-dark-font-style:inherit">Units in stock. 0 means unavailable."""</span></span> 39<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> stock</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Int</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span></span> 40<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span> 41<span> </span> 42<span><span style="--shiki-light:#990069;--shiki-dark:#C2F653">type</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Query</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 43<span><span style="--shiki-light:#6E7557;--shiki-light-font-style:italic;--shiki-dark:#6E7557;--shiki-dark-font-style:inherit"> """</span><span style="--shiki-light:#9FA88A;--shiki-light-font-style:italic;--shiki-dark:#737373;--shiki-dark-font-style:inherit">Full-text search across the catalog."""</span></span> 44<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> products</span><span style="--shiki-light:#24292EFF;--shiki-dark:#CFD3C5">(</span><span style="--shiki-light:#0E0F0B;--shiki-dark:#F3F4F0">query</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> String</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span><span style="--shiki-light:#24292EFF;--shiki-dark:#CFD3C5">)</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#24292EFF;--shiki-dark:#CFD3C5"> [</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0">Product</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span><span style="--shiki-light:#24292EFF;--shiki-dark:#CFD3C5">]</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span></span> 45<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span></code></pre><div class="_opacity-0 _transition [div:hover>&]:_opacity-100 focus-within:_opacity-100 _flex _gap-1 _absolute _right-4 _top-14"><button class="_transition _border _border-gray-300 dark:_border-neutral-700 contrast-more:_border-gray-900 contrast-more:dark:_border-gray-50 _rounded-md _p-1.5 md:_hidden" title="Toggle word wrap" type="button" data-headlessui-state=""><svg viewBox="0 0 24 24" fill="currentColor" height="16"><path d="M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"></path></svg></button></div></div><div class="pre_pre__do0AT relative"><div class="pre_label__ZLpTs flex items-center gap-1.5 px-4 py-2 text-sm text-neu-800 rounded-t-md border border-b-0 border-neu-200 bg-neu-0/[.64] backdrop-blur-[6px] dark:border-neu-50"><svg viewBox="0 0 24 24" fill="currentColor" class="_h-4 _w-auto _max-w-6 _shrink-0"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 1.65674L20.9575 6.82836V17.1716L12 22.3432L3.04248 17.1716V6.82836L12 1.65674ZM4.04753 7.40863V15.006L10.6271 3.60994L4.04753 7.40863ZM12 3.24206L4.4154 16.379H19.5846L12 3.24206ZM18.5796 17.384H5.42045L12 21.1827L18.5796 17.384ZM19.9525 15.006L13.3729 3.60994L19.9525 7.40863V15.006Z"></path><path d="M12 4.35381C13.1691 4.35381 14.1168 3.40609 14.1168 2.23701C14.1168 1.06793 13.1691 0.120209 12 0.120209C10.8309 0.120209 9.88319 1.06793 9.88319 2.23701C9.88319 3.40609 10.8309 4.35381 12 4.35381Z"></path><path d="M20.455 9.23532C21.6241 9.23532 22.5718 8.2876 22.5718 7.11852C22.5718 5.94945 21.6241 5.00172 20.455 5.00172C19.2859 5.00172 18.3382 5.94945 18.3382 7.11852C18.3382 8.2876 19.2859 9.23532 20.45
455 9.23532Z"></path><path d="M20.455 18.9983C21.6241 18.9983 22.5718 18.0506 22.5718 16.8815C22.5718 15.7124 21.6241 14.7647 20.455 14.7647C19.2859 14.7647 18.3382 15.7124 18.3382 16.8815C18.3382 18.0506 19.2859 18.9983 20.455 18.9983Z"></path><path d="M12 23.8798C13.1691 23.8798 14.1168 22.9321 14.1168 21.763C14.1168 20.5939 13.1691 19.6462 12 19.6462C10.8309 19.6462 9.88319 20.5939 9.88319 21.763C9.88319 22.9321 10.8309 23.8798 12 23.8798Z"></path><path d="M3.54382 18.9983C4.71289 18.9983 5.66062 18.0506 5.66062 16.8815C5.66062 15.7124 4.71289 14.7647 3.54382 14.7647C2.37474 14.7647 1.42702 15.7124 1.42702 16.8815C1.42702 18.0506 2.37474 18.9983 3.54382 18.9983Z"></path><path d="M3.54382 9.23532C4.71289 9.23532 5.66062 8.2876 5.66062 7.11852C5.66062 5.94945 4.71289 5.00172 3.54382 5.00172C2.37474 5.00172 1.42702 5.94945 1.42702 7.11852C1.42702 8.2876 2.37474 9.23532 3.54382 9.23532Z"></path></svg><span class="_truncate">Introspection query</span></div><pre class="overflow-x-auto border border-neu-200 py-4 subpixel-antialiased focus-visible:gql-focus-outline contrast-more:contrast-150 dark:border-neu-50 rounded-b-md" tabindex="0"><code class="nextra-code" dir="ltr"><span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">{</span></span> 46<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> __type</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">(</span><span style="--shiki-light:#0E0F0B;--shiki-dark:#F3F4F0">name</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">: </span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">Product</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">) {</span></span> 47<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> description</span></span> 48<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> fields</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 49<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span></span> 50<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> description</span></span> 51<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 52<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 53<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span></code></pre><div class="_opacity-0 _transition [div:hover>&]:_opacity-100 focus-within:_opacity-100 _flex _gap-1 _absolute _right-4 _top-14"><button class="_transition _border _border-gray-300 dark:_border-neutral-700 contrast-more:_border-gray-900 contrast-more:dark:_border-gray-50 _rounded-md _p-1.5 md:_hidden" title="Toggle word wrap" type="button" data-headlessui-state=""><svg viewBox="0 0 24 24" fill="currentColor" height="16"><path d="M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"></path></svg></button></div></div><div class="pre_pre__do0AT relative"><div class="pre_label__ZLpTs flex items-center gap-1.5 px-4 py-2 text-sm text-neu-800 rounded-t-md border border-b-0 border-neu-200 bg-neu-0/[.64] backdrop-blur-[6px] dark:border-neu-50"><span class="_truncate">Response (docs returned)</span></div><pre class="overflow-x-auto border border-neu-200 py-4 subpixel-antialiased focus-visible:gql-focus-outline contrast-more:contrast-150 dark:border-neu-50 rounded-b-md" tabindex="0"><code class="nextra-code" dir="ltr"><span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">{</span></span> 54<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">__type</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 55<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">description</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF"> "</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">A product in the catalog.</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">,</span></span> 56<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">fields</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> [</span></span> 57<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">name</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF"> "</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">name</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">,</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">description</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF"> "</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">Human-readable display name.</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> },</span></span> 58<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">name</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF"> "</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">price</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">,</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">description</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF"> "</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">Price in minor units (cents).</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> },</span></span> 59<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">name</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF"> "</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">stock</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">,</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">description</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF"> "</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">Units in stock. 0 means unavailable.</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 60<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> ]</span></span> 61<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 62<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span></code></pre><div class="_opacity-0 _transition [div:hover>&]:_opacity-100 focus-within:_opacity-100 _flex _gap-1 _absolute _right-4 _top-14"><button class="_transition _border _border-gray-300 dark:_border-neutral-700 contrast-more:_border-gray-900 contrast-more:dark:_border-gray-50 _rounded-md _p-1.5 md:_hidden" title="Toggle word wrap" type="button" data-headlessui-state=""><svg viewBox="0 0 24 24" fill="currentColor" height="16"><path d="M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"></path></svg></button></div></div></div></div></section><section id="interactive-demo" class="overflow-hidden bg-neu-50 dark:bg-neu-50/25"><div class="gql-container gql-section lg:py-16 xl:py-24"><span class="flex shrink-0 items-center gap-1 self-start whitespace-nowrap font-mono text-sm/none font-normal uppercase text-pri-base dark:text-pri-light mb-6">
62<svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" class="shrink-0 translate-y-[-0.5px]"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.66666 13.3332H5.33333V2.6665H6.66666V3.99984H7.99999V5.99984H9.33333V7.33317H10.6667V8.6665H9.33333V9.99984H7.99999V11.9998H6.66666V13.3332Z"></path></svg>Interactive Demo</span><h2 class="typography-h2 mb-2 lg:mb-4">See GraphQL + AI in action</h2><p class="typography-body-lg mb-8 max-w-3xl text-pretty text-neu-800 lg:mb-12">Pick a question an agent might get, and see the query it composes against the Star Wars schema. The editor is live: change the query and the response updates.</p><div class="gap-8 lg:flex lg:items-stretch"><div class="lg:w-[380px] lg:shrink-0 xl:w-[440px]"><ul class="flex list-none flex-col gap-2 p-0"><li><button type="button" aria-pressed="true" class="gql-focus-visible flex w-full items-start gap-3 border p-3.5 text-left transition-colors border-pri-base bg-pri-lightest/40 dark:bg-pri-darker/30"><svg fill="none" viewBox="0 0 24 24" aria-hidden="true" class="mt-0.5 size-5 shrink-0 text-pri-base"><path fill="currentColor" d="M11 0H5v2H3v6h2v2h6V8H5V2h6zm0 2h2v6h-2zM0 14h2v4h12v2H0zm2 0h12v-2H2zm14 0h-2v6h2zM15 0h4v2h-4zm4 8h-4v2h4zm0-6h2v6h-2zm5 12h-2v4h-4v2h6zm-6-2h4v2h-4z"></path></svg><span class="min-w-0"><span class="typography-body-sm block font-medium text-pri-dark dark:text-pri-light">Find all Star Wars characters</span><span class="typography-body-xs mt-0.5 block text-neu-700">Human · Droid · Starship</span></span></button></li><li><button type="button" aria-pressed="false" class="gql-focus-visible flex w-full items-start gap-3 border p-3.5 text-left transition-colors border-neu-200 bg-neu-0 hover:border-pri-base/40 hover:bg-pri-lightest/20 dark:border-neu-100 dark:hover:bg-pri-darker/15"><svg fill="none" viewBox="0 0 24 24" aria-hidden="true" class="mt-0.5 size-5 shrink-0 text-neu-500"><path fill="currentColor" d="M10 2h4v4h-4zM3 7h18v2H3zm6 2h2v7H9zm4 0h2v7h-2zm-4 7h2v6H9zm4 0h2v6h-2zm-2-2h2v2h-2z"></path></svg><span class="min-w-0"><span class="typography-body-sm block font-medium text-neu-900">Show me Luke's friends and their starships</span><span class="typography-body-xs mt-0.5 block text-neu-700">Human · Character · Starship</span></span></button></li><li><button type="button" aria-pressed="false" class="gql-focus-visible flex w-full items-start gap-3 border p-3.5 text-left transition-colors border-neu-200 bg-neu-0 hover:border-pri-base/40 hover:bg-pri-lightest/20 dark:border-neu-100 dark:hover:bg-pri-darker/15"><svg fill="none" viewBox="0 0 24 24" aria-hidden="true" class="mt-0.5 size-5 shrink-0 text-neu-500"><path fill="currentColor" d="M5 7h14v2H5zm0 12h14v2H5zM3 9h2v10H3zm16 0h2v10h-2zM1 13h2v2H1zm20 0h2v2h-2zM11 5h2v2h-2zM7 3h4v2H7zm1 9h2v4H8zm6 0h2v4h-2z"></path></svg><span class="min-w-0"><span class="typography-body-sm block font-medium text-neu-900">What movies did R2-D2 and C-3PO appear in?</span><span class="typography-body-xs mt-0.5 block text-neu-700">Droid · Episode</span></span></button></li><li><button type="button" aria-pressed="false" class="gql-focus-visible flex w-full items-start gap-3 border p-3.5 text-left transition-colors border-neu-200 bg-neu-0 hover:border-pri-base/40 hover:bg-pri-lightest/20 dark:border-neu-100 dark:hover:bg-pri-darker/15"><svg fill="none" viewBox="0 0 24 24" aria-hidden="true" class="mt-0.5 size-5 shrink-0 text-neu-500"><path fill="currentColor" d="M13 9h2v2h-2zm2-2h2v2h-2zm2-2h2v2h-2zm2-2h2v8h-2z"></path><path fill="currentColor" d="M13 3h8v2h-8zm-2 12H9v-2h2zm-2 2H7v-2h2zm-2 2H5v-2h2zm-2 2H3v-8h2z"></path><path fill="currentColor" d="M11 21H3v-2h8z"></path></svg><span class="min-w-0"><span class="typography-body-sm block font-medium text-neu-900">Find the tallest Star Wars character</span><span class="typography-body-xs mt-0.5 block text-neu-700">Human · Droid · Starship</span></span></button></li><li><button type="button" aria-pressed="false" class="gql-focus-visible flex w-full items-start gap-3 border p-3.5 text-left transition-colors border-neu-200 bg-neu-0 hover:border-pri-base/40 hover:bg-pri-lightest/20 dark:border-neu-100 dar
62k:hover:bg-pri-darker/15"><svg fill="none" viewBox="0 0 24 24" aria-hidden="true" class="mt-0.5 size-5 shrink-0 text-neu-500"><path fill="currentColor" d="M14 8h2v2h-2zm4 8h2v2h-2zM8 4h2v4H8z"></path><path fill="currentColor" d="M6 6h8v2H6zm-4 4h20v2H2zm18 2h2v4h-2zM2 12h2v6H2zm4-4h2v2H6z"></path><path fill="currentColor" d="M0 16h4v2H0zm4 2h4v2H4zm4-2h4v2H8zm4 2h4v2h-4zm4-2h4v2h-4zm4 2h4v2h-4z"></path></svg><span class="min-w-0"><span class="typography-body-sm block font-medium text-neu-900">Compare starship lengths in meters and feet</span><span class="typography-body-xs mt-0.5 block text-neu-700">Starship · SearchResult</span></span></button></li><li><button type="button" aria-pressed="false" class="gql-focus-visible flex w-full items-start gap-3 border p-3.5 text-left transition-colors border-neu-200 bg-neu-0 hover:border-pri-base/40 hover:bg-pri-lightest/20 dark:border-neu-100 dark:hover:bg-pri-darker/15"><svg fill="none" viewBox="0 0 24 24" aria-hidden="true" class="mt-0.5 size-5 shrink-0 text-neu-500"><path fill="currentColor" d="M11 2h2v2h-2zM9 4h2v12H9zm4 0h2v12h-2zM7 16h10v2H7zm4 2h2v4h-2z"></path></svg><span class="min-w-0"><span class="typography-body-sm block font-medium text-neu-900">Show me the hero of each episode and their friends</span><span class="typography-body-xs mt-0.5 block text-neu-700">Character · Episode</span></span></button></li></ul><a rel="noopener noreferrer" target="_blank" class="relative flex items-center justify-center gap-2.5 font-normal text-base/none text-neu-0 bg-neu-900 hover:bg-neu-800 active:bg-neu-700 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 dark:data-[variant=secondary]:bg-neu-100/80 dark:data-[variant=secondary]:hover:bg-neu-200/50 data-[variant=secondary]:text-neu-900 data-[variant=secondary]:hover:bg-neu-200/75 data-[variant=secondary]:active:bg-neu-200/90 data-[variant=tertiary]:bg-neu-100 data-[variant=tertiary]:text-neu-900 data-[variant=tertiary]:hover:bg-neu-200 data-[variant=tertiary]:active:bg-neu-300 gql-focus-visible [aria-disabled]:bg-neu-800 aria-disabled:pointer-events-none dark:data-[variant=tertiary]:bg-neu-900/10 dark:data-[variant=tertiary]:text-neu-900 dark:data-[variant=tertiary]:hover:bg-neu-900/[.125] dark:data-[variant=tertiary]:active:bg-neu-800/20 dark:data-[variant=tertiary]:ring-1 dark:data-[variant=tertiary]:ring-inset dark:data-[variant=tertiary]:ring-neu-900/20 mt-4 w-full" data-size="md" data-variant="secondary" href="https://graphql.org/swapi-graphql" variant="secondary">Open the full API in GraphiQL</a></div><div class="relative mt-8 min-h-[280px] flex-1 lg:mt-0 lg:min-h-0"></div></div><p class="typography-body-sm mt-4 text-pretty text-neu-700 lg:ml-[calc(380px+2rem)] xl:ml-[calc(440px+2rem)]">One query, three inline fragments. `search` returns a union, so each member of the result is matched against the fragments and only the fields named there come back.</p></div></section><section id="how-it-works" class="overflow-hidden bg-neu-50 dark:bg-neu-50/25"><div class="gql-container gql-section pb-0 lg:pb-0 lg:pt-16 xl:pb-0 xl:pt-24"><span class="flex shrink-0 items-center gap-1 self-start whitespace-nowrap font-mono text-sm/none font-normal uppercase text-pri-base dark:text-pri-light mb-6"><svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" class="shrink-0 translate-y-[-0.5px]"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.66666 13.3332H5.33333V2.6665H6.66666V3.99984H7.99999V5.99984H9.33333V7.33317H10.6667V8.6665H9.33333V9.99984H7.99999V11.9998H6.66666V13.3332Z"></path></svg>How it works</span><h2 class="typography-h2 mb-2 lg:mb-4">From natural language<br/>to structured data</h2><p class="typography-body-lg mb-8 max-w-2xl text-pretty text-neu-800 lg:mb-16">Here's what happens when an AI agent uses a GraphQL API to answer a real business question â from initial request to typed response.</p></div><div class="border-y border-neu-200 dark:border-neu-50"><div class="gql-container px-4 lg:px-12 xl:px-24 3xl:px-[240px]"><div class="grid grid-cols-1 gap-x-px border-x border-neu-200 bg-neu-200 dark:border-neu-50 dark:bg-neu-50 sm:grid-cols-2 xl:grid-cols-4"><div class="row-span-4 grid min-w-0 grid-cols-1 grid-rows-subgrid overflow-hidden bg-neu-50 dark:bg-[#181914] border-b border-neu-200 dark:border-neu-50 lg:border-b-0"><div class="flex items-center justify-between gap-3 px-4 pt-5 sm:px-5"><span class="typography-d1 font-bold leading-none text-pri-base/15 dark:text-pri-base/20">01</span><svg width="12" height="12" fill="currentColor" viewBox="0 0 12 12" class="size-6 shrink-0 text-pri-base dark:text-pri-light"><path fill-rule="evenodd" d="M5 10H4V2h1v1h1v1.5h1v1h1v1H7v1H6V9H5z" clip-rule="evenodd"></path></svg></div><h3 class="typography-h4 text-balance px-4 pt-3 sm:px-5">Agent receives a task</h3><p class="typography-body-sm text-pretty px-4 pb-4 pt-2 text-neu-700 sm:px-5">A user gives an AI agent a natural language instruction â "Show me Q4 revenue by region." The agent needs to access business data through an API to fulfill this request.</p><div class="min-w-0 *:bg-neu-0 [&>div>div:first-child]:rounded-none [&>div>div:first-child]:border-x-0 [&_.pre]:rounded-none [&_code]:text-xs [&_pre]:rounded-none [&_pre]:border-x-0 [&_pre]:text-xs lg:flex lg:h-full lg:flex-col lg:[&>div]:flex lg:[&>
62div]:min-h-0 lg:[&>div]:flex-1 lg:[&>div]:flex-col lg:[&_pre]:min-h-0 lg:[&_pre]:flex-1"><div class="pre_pre__do0AT relative"><div class="pre_label__ZLpTs flex items-center gap-1.5 px-4 py-2 text-sm text-neu-800 rounded-t-md border border-b-0 border-neu-200 bg-neu-0/[.64] backdrop-blur-[6px] dark:border-neu-50"><span class="_truncate">User prompt</span></div><pre class="overflow-x-auto border border-neu-200 py-4 subpixel-antialiased focus-visible:gql-focus-outline contrast-more:contrast-150 dark:border-neu-50 rounded-b-md" tabindex="0"><code class="nextra-code" dir="ltr"><span><span>Show me Q4 revenue broken down by region</span></span> 63<span><span>for the top 5 performing product categories</span></span></code></pre><div class="_opacity-0 _transition [div:hover>&]:_opacity-100 focus-within:_opacity-100 _flex _gap-1 _absolute _right-4 _top-14"><button class="_transition _border _border-gray-300 dark:_border-neutral-700 contrast-more:_border-gray-900 contrast-more:dark:_border-gray-50 _rounded-md _p-1.5 md:_hidden" title="Toggle word wrap" type="button" data-headlessui-state=""><svg viewBox="0 0 24 24" fill="currentColor" height="16"><path d="M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"></path></svg></button></div></div></div></div><div class="row-span-4 grid min-w-0 grid-cols-1 grid-rows-subgrid overflow-hidden bg-neu-50 dark:bg-[#181914] border-b border-neu-200 dark:border-neu-50 lg:border-b-0"><div class="flex items-center justify-between gap-3 px-4 pt-5 sm:px-5"><span class="typography-d1 font-bold leading-none text-pri-base/15 dark:text-pri-base/20">02</span><svg width="40" height="40" fill="currentColor" viewBox="0 0 40 40" class="size-6 shrink-0 text-pri-base dark:text-pri-light"><path d="M36.666 36.667h-3.334v-3.334h3.334zm-3.334-3.334h-3.333V30h3.333zm-10-3.333H9.999v-3.333h13.333zm6.667 0h-3.333v-3.333h3.333zm-20-3.333H6.666v-3.334h3.333zm16.667 0h-3.334v-3.334h3.334zm-20-3.334H3.332V10h3.334zm23.333 0h-3.333V10h3.333zM9.999 10H6.666V6.667h3.333zm16.667 0h-3.334V6.667h3.334zm-3.334-3.333H9.999V3.333h13.333z"></path></svg></div><h3 class="typography-h4 text-balance px-4 pt-3 sm:px-5">Agent introspects the API</h3><p class="typography-body-sm text-pretty px-4 pb-4 pt-2 text-neu-700 sm:px-5">Using GraphQL introspection, the agent queries `__schema` and discovers the available types: `Product`, `Order`, `Region`, `RevenueMetrics`. It learns field names, arguments, and relationships automatically.</p><div class="min-w-0 *:bg-neu-0 [&>div>div:first-child]:rounded-none [&>div>div:first-child]:border-x-0 [&_.pre]:rounded-none [&_code]:text-xs [&_pre]:rounded-none [&_pre]:border-x-0 [&_pre]:text-xs lg:flex lg:h-full lg:flex-col lg:[&>div]:flex lg:[&>
63div]:min-h-0 lg:[&>div]:flex-1 lg:[&>div]:flex-col lg:[&_pre]:min-h-0 lg:[&_pre]:flex-1"><div class="pre_pre__do0AT relative"><div class="pre_label__ZLpTs flex items-center gap-1.5 px-4 py-2 text-sm text-neu-800 rounded-t-md border border-b-0 border-neu-200 bg-neu-0/[.64] backdrop-blur-[6px] dark:border-neu-50"><svg viewBox="0 0 24 24" fill="currentColor" class="_h-4 _w-auto _max-w-6 _shrink-0"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 1.65674L20.9575 6.82836V17.1716L12 22.3432L3.04248 17.1716V6.82836L12 1.65674ZM4.04753 7.40863V15.006L10.6271 3.60994L4.04753 7.40863ZM12 3.24206L4.4154 16.379H19.5846L12 3.24206ZM18.5796 17.384H5.42045L12 21.1827L18.5796 17.384ZM19.9525 15.006L13.3729 3.60994L19.9525 7.40863V15.006Z"></path><path d="M12 4.35381C13.1691 4.35381 14.1168 3.40609 14.1168 2.23701C14.1168 1.06793 13.1691 0.120209 12 0.120209C10.8309 0.120209 9.88319 1.06793 9.88319 2.23701C9.88319 3.40609 10.8309 4.35381 12 4.35381Z"></path><path d="M20.455 9.23532C21.6241 9.23532 22.5718 8.2876 22.5718 7.11852C22.5718 5.94945 21.6241 5.00172 20.455 5.00172C19.2859 5.00172 18.3382 5.94945 18.3382 7.11852C18.3382 8.2876 19.2859 9.23532 20.455 9.23532Z"></path><path d="M20.455 18.9983C21.6241 18.9983 22.5718 18.0506 22.5718 16.8815C22.5718 15.7124 21.6241 14.7647 20.455 14.7647C19.2859 14.7647 18.3382 15.7124 18.3382 16.8815C18.3382 18.0506 19.2859 18.9983 20.455 18.9983Z"></path><path d="M12 23.8798C13.1691 23.8798 14.1168 22.9321 14.1168 21.763C14.1168 20.5939 13.1691 19.6462 12 19.6462C10.8309 19.6462 9.88319 20.5939 9.88319 21.763C9.88319 22.9321 10.8309 23.8798 12 23.8798Z"></path><path d="M3.54382 18.9983C4.71289 18.9983 5.66062 18.0506 5.66062 16.8815C5.66062 15.7124 4.71289 14.7647 3.54382 14.7647C2.37474 14.7647 1.42702 15.7124 1.42702 16.8815C1.42702 18.0506 2.37474 18.9983 3.54382 18.9983Z"></path><path d="M3.54382 9.23532C4.71289 9.23532 5.66062 8.2876 5.66062 7.11852C5.66062 5.94945 4.71289 5.00172 3.54382 5.00172C2.37474 5.00172 1.42702 5.94945 1.42702 7.11852C1.42702 8.2876 2.37474 9.23532 3.54382 9.23532Z"></path></svg><span class="_truncate">Introspection result â discovered types</span></div><pre class="overflow-x-auto border border-neu-200 py-4 subpixel-antialiased focus-visible:gql-focus-outline contrast-more:contrast-150 dark:border-neu-50 rounded-b-md" tabindex="0"><code class="nextra-code" dir="ltr"><span><span style="--shiki-light:#990069;--shiki-dark:#C2F653">type</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Product</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 64<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> String</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span></span> 65<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> category</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Category</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span></span> 66<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span> 67<span><span style="--shiki-light:#990069;--shiki-dark:#C2F653">type</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> RevenueMetrics</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 68<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> amount</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Float</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span></span> 69<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> region</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Region</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span></span> 70<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span> 71<span><span style="--shiki-light:#990069;--shiki-dark:#C2F653">type</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Order</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 72<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> product</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Product</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span></span> 73<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">
73 revenue</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> RevenueMetrics</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span></span> 74<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span> 75<span><span style="--shiki-light:#990069;--shiki-dark:#C2F653">type</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Query</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 76<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> orders</span><span style="--shiki-light:#24292EFF;--shiki-dark:#CFD3C5">(</span><span style="--shiki-light:#0E0F0B;--shiki-dark:#F3F4F0">from</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Date</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">,</span><span style="--shiki-light:#0E0F0B;--shiki-dark:#F3F4F0"> to</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0"> Date</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span><span style="--shiki-light:#24292EFF;--shiki-dark:#CFD3C5">)</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#24292EFF;--shiki-dark:#CFD3C5"> [</span><span style="--shiki-light:#1976D2;--shiki-dark:#FF99E0">Order</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span><span style="--shiki-light:#24292EFF;--shiki-dark:#CFD3C5">]</span><span style="--shiki-light:#E10198;--shiki-dark:#ECFAD1">!</span></span> 77<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span></code></pre><div class="_opacity-0 _transition [div:hover>&]:_opacity-100 focus-within:_opacity-100 _flex _gap-1 _absolute _right-4 _top-14"><button class="_transition _border _border-gray-300 dark:_border-neutral-700 contrast-more:_border-gray-900 contrast-more:dark:_border-gray-50 _rounded-md _p-1.5 md:_hidden" title="Toggle word wrap" type="button" data-headlessui-state=""><svg viewBox="0 0 24 24" fill="currentColor" height="16"><path d="M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"></path></svg></button></div></div></div></div><div class="row-span-4 grid min-w-0 grid-cols-1 grid-rows-subgrid overflow-hidden bg-neu-50 dark:bg-[#181914] border-b border-neu-200 dark:border-neu-50 lg:border-b-0 sm:max-lg:border-b-0"><div class="flex items-center justify-between gap-3 px-4 pt-5 sm:px-5"><span class="typography-d1 font-bold leading-none text-pri-base/15 dark:text-pri-base/20">03</span><svg width="40" height="40" fill="currentColor" viewBox="0 0 40 40" class="size-6 shrink-0 text-pri-base dark:text-pri-light"><path d="M13.332 8.333h3.333v3.334h-3.333zM9.999 11.667h3.333V15H9.999zM6.665 15H10v3.333H6.665zM3.332 18.333h3.333v3.334H3.332zM6.665 21.667H10V25H6.665zM9.999 25h3.333v3.333H9.999zM13.332 28.333h3.333v3.334h-3.333zM26.665 8.333h-3.333v3.334h3.333zM29.999 11.667h-3.334V15H30zM33.332 15h-3.333v3.333h3.333zM36.665 18.333h-3.333v3.334h3.333zM33.332 21.667h-3.333V25h3.333zM29.999 25h-3.334v3.333H30zM26.665 28.333h-3.333v3.334h3.333z"></path></svg></div><h3 class="typography-h4 text-balance px-4 pt-3 sm:px-5">Agent composes a query</h3><p class="typography-body-sm text-pretty px-4 pb-4 pt-2 text-neu-700 sm:px-5">The LLM maps the user's intent to the discovered schema. It constructs a precise GraphQL query that fetches exactly the right data â revenue by region, top 5 categories, all in a single request â with no over-fetching.</p><div class="min-w-0 *:bg-neu-0 [&>div>div:first-child]:rounded-none [&>div>div:first-child]:border-x-0 [&_.pre]:rounded-none [&_code]:text-xs [&_pre]:rounded-none [&_pre]:border-x-0 [&_pre]:text-xs lg:flex lg:h-full lg:flex-col lg:[&>div]:flex lg:[&>
77div]:min-h-0 lg:[&>div]:flex-1 lg:[&>div]:flex-col lg:[&_pre]:min-h-0 lg:[&_pre]:flex-1"><div class="pre_pre__do0AT relative"><div class="pre_label__ZLpTs flex items-center gap-1.5 px-4 py-2 text-sm text-neu-800 rounded-t-md border border-b-0 border-neu-200 bg-neu-0/[.64] backdrop-blur-[6px] dark:border-neu-50"><svg viewBox="0 0 24 24" fill="currentColor" class="_h-4 _w-auto _max-w-6 _shrink-0"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 1.65674L20.9575 6.82836V17.1716L12 22.3432L3.04248 17.1716V6.82836L12 1.65674ZM4.04753 7.40863V15.006L10.6271 3.60994L4.04753 7.40863ZM12 3.24206L4.4154 16.379H19.5846L12 3.24206ZM18.5796 17.384H5.42045L12 21.1827L18.5796 17.384ZM19.9525 15.006L13.3729 3.60994L19.9525 7.40863V15.006Z"></path><path d="M12 4.35381C13.1691 4.35381 14.1168 3.40609 14.1168 2.23701C14.1168 1.06793 13.1691 0.120209 12 0.120209C10.8309 0.120209 9.88319 1.06793 9.88319 2.23701C9.88319 3.40609 10.8309 4.35381 12 4.35381Z"></path><path d="M20.455 9.23532C21.6241 9.23532 22.5718 8.2876 22.5718 7.11852C22.5718 5.94945 21.6241 5.00172 20.455 5.00172C19.2859 5.00172 18.3382 5.94945 18.3382 7.11852C18.3382 8.2876 19.2859 9.23532 20.455 9.23532Z"></path><path d="M20.455 18.9983C21.6241 18.9983 22.5718 18.0506 22.5718 16.8815C22.5718 15.7124 21.6241 14.7647 20.455 14.7647C19.2859 14.7647 18.3382 15.7124 18.3382 16.8815C18.3382 18.0506 19.2859 18.9983 20.455 18.9983Z"></path><path d="M12 23.8798C13.1691 23.8798 14.1168 22.9321 14.1168 21.763C14.1168 20.5939 13.1691 19.6462 12 19.6462C10.8309 19.6462 9.88319 20.5939 9.88319 21.763C9.88319 22.9321 10.8309 23.8798 12 23.8798Z"></path><path d="M3.54382 18.9983C4.71289 18.9983 5.66062 18.0506 5.66062 16.8815C5.66062 15.7124 4.71289 14.7647 3.54382 14.7647C2.37474 14.7647 1.42702 15.7124 1.42702 16.8815C1.42702 18.0506 2.37474 18.9983 3.54382 18.9983Z"></path><path d="M3.54382 9.23532C4.71289 9.23532 5.66062 8.2876 5.66062 7.11852C5.66062 5.94945 4.71289 5.00172 3.54382 5.00172C2.37474 5.00172 1.42702 5.94945 1.42702 7.11852C1.42702 8.2876 2.37474 9.23532 3.54382 9.23532Z"></path></svg><span class="_truncate">AI-generated GraphQL query</span></div><pre class="overflow-x-auto border border-neu-200 py-4 subpixel-antialiased focus-visible:gql-focus-outline contrast-more:contrast-150 dark:border-neu-50 rounded-b-md" tabindex="0"><code class="nextra-code" dir="ltr"><span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">{</span></span> 78<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> orders</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">(</span><span style="--shiki-light:#0E0F0B;--shiki-dark:#F3F4F0">from</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">: </span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">2024-10-01</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">, </span><span style="--shiki-light:#0E0F0B;--shiki-dark:#F3F4F0">to</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">: </span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">2024-12-31</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">) {</span></span> 79<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> product</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 80<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span></span> 81<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> category</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 82<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span></span> 83<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 84<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 85<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">
85 revenue</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 86<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> region</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 87<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span></span> 88<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 89<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> amount</span></span> 90<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 91<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 92<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span></code></pre><div class="_opacity-0 _transition [div:hover>&]:_opacity-100 focus-within:_opacity-100 _flex _gap-1 _absolute _right-4 _top-14"><button class="_transition _border _border-gray-300 dark:_border-neutral-700 contrast-more:_border-gray-900 contrast-more:dark:_border-gray-50 _rounded-md _p-1.5 md:_hidden" title="Toggle word wrap" type="button" data-headlessui-state=""><svg viewBox="0 0 24 24" fill="currentColor" height="16"><path d="M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"></path></svg></button></div></div></div></div><div class="row-span-4 grid min-w-0 grid-cols-1 grid-rows-subgrid overflow-hidden bg-neu-50 dark:bg-[#181914] border-b border-neu-200 dark:border-neu-50 lg:border-b-0 max-sm:border-b-0 sm:max-lg:border-b-0"><div class="flex items-center justify-between gap-3 px-4 pt-5 sm:px-5"><span class="typography-d1 font-bold leading-none text-pri-base/15 dark:text-pri-base/20">04</span><svg width="24" height="24" fill="currentColor" viewBox="0 0 24 24" class="size-6 shrink-0 text-pri-base dark:text-pri-light"><path d="M10 18H8v-2h2zm-2-2H6v-2h2zm4-2v2h-2v-2zm-6 0H4v-2h2zm8 0h-2v-2h2zm2-2h-2v-2h2zm2-2h-2V8h2zm2-2h-2V6h2z"></path></svg></div><h3 class="typography-h4 text-balance px-4 pt-3 sm:px-5">Structured response returned</h3><p class="typography-body-sm text-pretty px-4 pb-4 pt-2 text-neu-700 sm:px-5">The response is JSON in the query's shape. A nullable field can still come back null with an `errors` entry, but the agent already knows the shape, so it can use a partial result as-is.</p><div class="min-w-0 *:bg-neu-0 [&>div>div:first-child]:rounded-none [&>div>div:first-child]:border-x-0 [&_.pre]:rounded-none [&_code]:text-xs [&_pre]:rounded-none [&_pre]:border-x-0 [&_pre]:text-xs lg:flex lg:h-full lg:flex-col lg:[&>div]:flex lg:[&>
92div]:min-h-0 lg:[&>div]:flex-1 lg:[&>div]:flex-col lg:[&_pre]:min-h-0 lg:[&_pre]:flex-1"><div class="pre_pre__do0AT relative"><div class="pre_label__ZLpTs flex items-center gap-1.5 px-4 py-2 text-sm text-neu-800 rounded-t-md border border-b-0 border-neu-200 bg-neu-0/[.64] backdrop-blur-[6px] dark:border-neu-50"><span class="_truncate">Structured response (JSON)</span></div><pre class="overflow-x-auto border border-neu-200 py-4 subpixel-antialiased focus-visible:gql-focus-outline contrast-more:contrast-150 dark:border-neu-50 rounded-b-md" tabindex="0"><code class="nextra-code" dir="ltr"><span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">{</span></span> 93<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">orders</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> [{</span></span> 94<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">product</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 95<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">name</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF"> "</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">Widget Pro</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">,</span></span> 96<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">category</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 97<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">name</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF"> "</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">Electronics</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span></span> 98<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 99<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> },</span></span> 100<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">revenue</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 101<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">region</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 102<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">name</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF"> "</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">North America</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span></span> 103<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> },</span></span> 104<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> "</span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2">amount</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#F3F4F0"> 45230.50</span></span> 105<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 106<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }]</span></span> 107<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span></code></pre><div class="_opacity-0 _transition [div:hover>&]:_opacity-100 focus-within:_opacity-100 _flex _gap-1 _absolute _right-4 _top-14"><button class="_transition _border _border-gray-300 dark:_border-neutral-700 contrast-more:_border-gray-900 contrast-more:dark:_border-gray-50 _rounded-md _p-1.5 md:_hidden" title="Toggle word wrap" type="button" data-headlessui-state=""><svg viewBox="0 0 24 24" fill="currentColor" height="16"><path d="M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"></path></svg></button></div></div></div></div></div></div></div></section><section class="gql-container gql-section lg:py-16 xl:py-24"><span class="flex shrink-0 items-center gap-1 self-start whitespace-nowrap font-mono text-sm/none font-normal uppercase text-pri-base dark:text-pri-light mb-6">
107<svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" class="shrink-0 translate-y-[-0.5px]"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.66666 13.3332H5.33333V2.6665H6.66666V3.99984H7.99999V5.99984H9.33333V7.33317H10.6667V8.6665H9.33333V9.99984H7.99999V11.9998H6.66666V13.3332Z"></path></svg>Use cases</span><h2 class="typography-h2 mb-2 lg:mb-4">GraphQL powers<br/>the AI stack</h2><p class="typography-body-lg mb-8 max-w-2xl text-pretty text-neu-800 lg:mb-16">MCP servers, RAG pipelines and tool-calling agents all need the same two things: a machine-readable description of what data exists, and a way to ask for part of it. A GraphQL schema already provides both.</p><div class="grid gap-6 lg:grid-cols-3"><div class="flex flex-col border border-neu-200 bg-neu-0 p-6 dark:border-neu-50 lg:p-7"><div class="flex items-center gap-3"><svg fill="currentColor" viewBox="0 0 24 24" class="size-7 text-pri-base dark:text-pri-light"><path fill-rule="evenodd" d="M17 1h-4v2h-2v2h2V3h4v2h2V3h-2zm-3 4h2v2h6v16h-2v-7H4v7H2V7h12zm6 9V9H4v5zm-4-3h2v2h-2zm-2 0h-2v2h2z" clip-rule="evenodd"></path><path fill-rule="evenodd" d="M17 1h-4v2h-2v2h2V3h4v2h2V3h-2zm-3 4h2v2h6v16H2V7h12zm6 16v-5H4v5zm0-7V9H4v5zm-4-3h2v2h-2zm2 7h-2v2h2zm-6-7h2v2h-2zm2 7h-2v2h2z" clip-rule="evenodd"></path></svg><h3 class="typography-h4">MCP Servers</h3></div><p class="typography-body-md mt-3 flex-1 text-pretty text-neu-800">Build Model Context Protocol servers powered by GraphQL. Every query, mutation, and subscription becomes an auto-discoverable tool. The schema is the contract, so tool definitions are generated from it rather than maintained beside it.</p><div class="mt-5"><div class="pre_pre__do0AT relative"><div class="pre_label__ZLpTs flex items-center gap-1.5 px-4 py-2 text-sm text-neu-800 rounded-t-md border border-b-0 border-neu-200 bg-neu-0/[.64] backdrop-blur-[6px] dark:border-neu-50"><svg viewBox="0 0 24 24" fill="currentColor" class="_h-4 _w-auto _max-w-6 _shrink-0"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 1.65674L20.9575 6.82836V17.1716L12 22.3432L3.04248 17.1716V6.82836L12 1.65674ZM4.04753 7.40863V15.006L10.6271 3.60994L4.04753 7.40863ZM12 3.24206L4.4154 16.379H19.5846L12 3.24206ZM18.5796 17.384H5.42045L12 21.1827L18.5796 17.384ZM19.9525 15.006L13.3729 3.60994L19.9525 7.40863V15.006Z"></path><path d="M12 4.35381C13.1691 4.35381 14.1168 3.40609 14.1168 2.23701C14.1168 1.06793 13.1691 0.120209 12 0.120209C10.8309 0.120209 9.88319 1.06793 9.88319 2.23701C9.88319 3.40609 10.8309 4.35381 12 4.35381Z"></path><path d="M20.455 9.23532C21.6241 9.23532 22.5718 8.2876 22.5718 7.11852C22.5718 5.94945 21.6241 5.00172 20.455 5.00172C19.2859 5.00172 18.3382 5.94945 18.3382 7.11852C18.3382 8.2876 19.2859 9.23532 20.455 9.23532Z"></path><path d="M20.455 18.9983C21.6241 18.9983 22.5718 18.0506 22.5718 16.8815C22.5718 15.7124 21.6241 14.7647 20.455 14.7647C19.2859 14.7647 18.3382 15.7124 18.3382 16.8815C18.3382 18.0506 19.2859 18.9983 20.455 18.9983Z"></path><path d="M12 23.8798C13.1691 23.8798 14.1168 22.9321 14.1168 21.763C14.1168 20.5939 13.1691 19.6462 12 19.6462C10.8309 19.6462 9.88319 20.5939 9.88319 21.763C9.88319 22.9321 10.8309 23.8798 12 23.8798Z"></path><path d="M3.54382 18.9983C4.71289 18.9983 5.66062 18.0506 5.66062 16.8815C5.66062 15.7124 4.71289 14.7647 3.54382 14.7647C2.37474 14.7647 1.42702 15.7124 1.42702 16.8815C1.42702 18.0506 2.37474 18.9983 3.54382 18.9983Z"></path><path d="M3.54382 9.23532C4.71289 9.23532 5.66062 8.2876 5.66062 7.11852C5.66062 5.94945 4.71289 5.00172 3.54382 5.00172C2.37474 5.00172 1.42702 5.94945 1.42702 7.11852C1.42702 8.2876 2.37474 9.23532 3.54382 9.23532Z"></path></svg><span class="_truncate">Example query</span></div><pre class="overflow-x-auto border border-neu-200 py-4 subpixel-antialiased focus-visible:gql-focus-outline contrast-more:contrast-150 dark:border-neu-50 rounded-b-md" tabindex="0"><code class="nextra-code" dir="ltr"><span><span style="--shiki-light:#9FA88A;--shiki-light-font-style:italic;--shiki-dark:#737373;--shiki-dark-font-style:inherit"># AI agent discovers and calls tools</span></span> 108<span><span style="--shiki-light:#990069;--shiki-dark:#C2F653">query</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 109<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> tools</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 110<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span></span> 111<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> description</span></span> 112<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> parameters</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 113<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span></span> 114<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> type</span></span> 115<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 116<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 117<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span> 118<span><span style="--shiki-light:#990069;--shiki-dark:#C2F653">mutation</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 119<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> callTool</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">(</span></span> 120<span><span style="--shiki-light:#0E0F0B;--shiki-dark:#F3F4F0"> name</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">: </span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">searchProducts</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span></span> 121<span><span style="--shiki-light:#0E0F0B;--shiki-dark:#F3F4F0"> params</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">: { </span><span style="--shiki-light:#2B5581;--shiki-dark:#9ECBFF">query</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">: </span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">laptop</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 122<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> )</span></span> 123<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span></code></pre><div class="_opacity-0 _transition [div:hover>&]:_opacity-100 focus-within:_opacity-100 _flex _gap-1 _absolute _right-4 _top-14"><button class="_transition _border _border-gray-300 dark:_border-neutral-700 contrast-more:_border-gray-900 contrast-more:dark:_border-gray-50 _rounded-md _p-1.5 md:_hidden" title="Toggle word wrap" type="button" data-headlessui-state=""><svg viewBox="0 0 24 24" fill="currentColor" height="16"><path d="M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"></path></svg></button></div></div></div><ul class="typography-body-sm mt-5 flex flex-col gap-1.5"><li class="flex items-start gap-1.5 text-neu-700"><span class="mt-1.5 size-1 shrink-0 rounded-full bg-pri-base"></span>Auto-generate tool definitions from schema</li><li class="flex items-start gap-1.5 text-neu-700"><span class="mt-1.5 size-1 shrink-0 rounded-full bg-pri-base"></span>
123Type-safe inputs and structured outputs</li><li class="flex items-start gap-1.5 text-neu-700"><span class="mt-1.5 size-1 shrink-0 rounded-full bg-pri-base"></span>One MCP server exposes your entire API surface</li></ul><div class="mt-auto pt-5"><a class="relative flex items-center justify-center gap-2.5 font-normal text-base/none text-neu-0 bg-neu-900 hover:bg-neu-800 active:bg-neu-700 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 dark:data-[variant=secondary]:bg-neu-100/80 dark:data-[variant=secondary]:hover:bg-neu-200/50 data-[variant=secondary]:text-neu-900 data-[variant=secondary]:hover:bg-neu-200/75 data-[variant=secondary]:active:bg-neu-200/90 data-[variant=tertiary]:bg-neu-100 data-[variant=tertiary]:text-neu-900 data-[variant=tertiary]:hover:bg-neu-200 data-[variant=tertiary]:active:bg-neu-300 gql-focus-visible [aria-disabled]:bg-neu-800 aria-disabled:pointer-events-none dark:data-[variant=tertiary]:bg-neu-900/10 dark:data-[variant=tertiary]:text-neu-900 dark:data-[variant=tertiary]:hover:bg-neu-900/[.125] dark:data-[variant=tertiary]:active:bg-neu-800/20 dark:data-[variant=tertiary]:ring-1 dark:data-[variant=tertiary]:ring-inset dark:data-[variant=tertiary]:ring-neu-900/20" data-size="md" data-variant="secondary" variant="secondary" href="/blog/2025-10-14-announcing-ai-wg/">Join the AI Working Group<svg width="40" height="40" fill="currentColor" viewBox="0 0 40 40" class="size-4 shrink-0 -rotate-90 text-neu-900"><path fill-rule="evenodd" d="M18.333 6.667h3.334v20H25V30h-3.333v3.333h-3.334V30H15v-3.334h3.333zm-6.666 16.666v3.334H15v-3.334zm0 0V20H8.333v3.333zm16.666 0v3.334H25v-3.334zm0 0V20h3.334v3.333z" clip-rule="evenodd"></path></svg></a></div></div><div class="flex flex-col border border-neu-200 bg-neu-0 p-6 dark:border-neu-50 lg:p-7"><div class="flex items-center gap-3"><svg width="40" height="40" fill="currentColor" viewBox="0 0 40 40" class="size-7 text-pri-base dark:text-pri-light"><path d="M36.666 36.667h-3.334v-3.334h3.334zm-3.334-3.334h-3.333V30h3.333zm-10-3.333H9.999v-3.333h13.333zm6.667 0h-3.333v-3.333h3.333zm-20-3.333H6.666v-3.334h3.333zm16.667 0h-3.334v-3.334h3.334zm-20-3.334H3.332V10h3.334zm23.333 0h-3.333V10h3.333zM9.999 10H6.666V6.667h3.333zm16.667 0h-3.334V6.667h3.334zm-3.334-3.333H9.999V3.333h13.333z"></path></svg><h3 class="typography-h4">RAG Applications</h3></div><p class="typography-body-md mt-3 flex-1 text-pretty text-neu-800">Power Retrieval-Augmented Generation with GraphQL. Query your knowledge base with precision â fetch documents, embeddings, and cross-references in a single request. No more REST pagination + client-side merging.</p><div class="mt-5"><div class="pre_pre__do0AT relative"><div class="pre_label__ZLpTs flex items-center gap-1.5 px-4 py-2 text-sm text-neu-800 rounded-t-md border border-b-0 border-neu-200 bg-neu-0/[.64] backdrop-blur-[6px] dark:border-neu-50"><svg viewBox="0 0 24 24" fill="currentColor" class="_h-4 _w-auto _max-w-6 _shrink-0"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 1.65674L20.9575 6.82836V17.1716L12 22.3432L3.04248 17.1716V6.82836L12 1.65674ZM4.04753 7.40863V15.006L10.6271 3.60994L4.04753 7.40863ZM12 3.24206L4.4154 16.379H19.5846L12 3.24206ZM18.5796 17.384H5.42045L12 21.1827L18.5796 17.384ZM19.9525 15.006L13.3729 3.60994L19.9525 7.40863V15.006Z"></path><path d="M12 4.35381C13.1691 4.35381 14.1168 3.40609 14.1168 2.23701C14.1168 1.06793 13.1691 0.120209 12 0.120209C10.8309 0.120209 9.88319 1.06793 9.88319 2.23701C9.88319 3.40609 10.8309 4.35381 12 4.35381Z"></path><path d="M20.455 9.23532C21.6241 9.23532 22.5718 8.2876 22.5718 7.11852C22.5718 5.94945 21.6241 5.00172 20.455 5.00172C19.2859 5.00172 18.3382 5.94945 18.3382 7.11852C18.3382 8.2876 19.2859 9.23532 20.455 9.23532Z"></path><path d="M20.455 18.9983C21.6241 18.9983 22.5718 18.0506 22.5718 16.8815C22.5718 15.7124 21.6241 14.7647 20.455 14.7647C19.2859 14.7647 18.3382 15.7124 18.3382 16.8815C18.3382 18.0506 19.2859 18.9983 20.455 18.9983Z"></path><path d="M12 23.8798C13.1691 23.8798 14.1168 22.9321 14.1168 21.763C14.1168 20.5939 13.1691 19.6462 12 19.6462C10.8309 19.6462 9.88319 20.5939 9.88319 21.763C9.88319 22.9321 10.8309 23.8798 12 23.8798Z"></path><path d="M3.54382 18.9983C4.71289 18.9983 5.66062 18.0506 5.66062 16.8815C5.66062 15.7124 4.71289 14.7647 3.54382 14.7647C2.37474 14.7647 1.42702 15.7124 1.42702 16.8815C1.42702 18.0506 2.37474 18.9983 3.54382 18.9983Z"></path><path d="M3.54382 9.23532C4.71289 9.23532 5.66062 8.2876 5.66062 7.11852C5.66062 5.94945 4.71289 5.00172 3.54382 5.00172C2.37474 5.00172 1.42702 5.94945 1.42702 7.11852C1.42702 8.2876 2.37474 9.23532 3.54382 9.23532Z"></path></svg><span class="_truncate">Example query</span></div><pre class="overflow-x-auto border border-neu-200 py-4 subpixel-antialiased focus-visible:gql-focus-outline contrast-more:contrast-150 dark:border-neu-50 rounded-b-md" tabindex="0"><code class="nextra-code" dir="ltr"><span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">{</span></span> 124<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> search</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">(</span><span style="--shiki-light:#0E0F0B;--shiki-dark:#F3F4F0">term</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">: </span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#609A06;--shiki-dark:#9ECBFF">MCP protocol</span><span style="--shiki-light:#6E7557;--shiki-dark:#9ECBFF">"</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">) {</span></span> 125<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> documents</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 126<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> title</span></span> 127<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> excerpt</span></span> 128<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> embeddings</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 129<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> vector</span></span> 130<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> similarity</span></span> 131<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 132<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 133<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> relatedTopics</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 134<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span></span> 135<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 136<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 137<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span></code></pre><div class="_opacity-0 _transition [div:hover>&]:_opacity-100 focus-within:_opacity-100 _flex _gap-1 _absolute _right-4 _top-14"><button class="_transition _border _border-gray-300 dark:_border-neutral-700 contrast-more:_border-gray-900 contrast-more:dark:_border-gray-50 _rounded-md _p-1.5 md:_hidden" title="Toggle word wrap" type="button" data-headlessui-state=""><svg viewBox="0 0 24 24" fill="currentColor" height="16"><path d="M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"></path></svg></button></div></div></div><ul class="typography-body-sm mt-5 flex flex-col gap-1.5"><li class="flex items-start gap-1.5 text-neu-700"><span class="mt-1.5 size-1 shrink-0 rounded-full bg-pri-base"></span>Fetch documents + embeddings in one call</li><li class="flex items-start gap-1.5 text-neu-700"><span class="mt-1.5 size-1 shrink-0 rounded-full bg-pri-base"></span>Join data across collections and sources</li><li class="flex items-start gap-1.5 text-neu-700"><span class="mt-1.5 size-1 shrink-0 rounded-full bg-pri-base"></span>Minimize context window waste with field selection</li></ul><div class="mt-auto pt-5"><a class="relative flex items-center justify-center gap-2.5 font-normal text-base/none text-neu-0 bg-neu-900 hover:bg-neu-800 active:bg-neu-700 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 dar
137k:data-[variant=secondary]:bg-neu-100/80 dark:data-[variant=secondary]:hover:bg-neu-200/50 data-[variant=secondary]:text-neu-900 data-[variant=secondary]:hover:bg-neu-200/75 data-[variant=secondary]:active:bg-neu-200/90 data-[variant=tertiary]:bg-neu-100 data-[variant=tertiary]:text-neu-900 data-[variant=tertiary]:hover:bg-neu-200 data-[variant=tertiary]:active:bg-neu-300 gql-focus-visible [aria-disabled]:bg-neu-800 aria-disabled:pointer-events-none dark:data-[variant=tertiary]:bg-neu-900/10 dark:data-[variant=tertiary]:text-neu-900 dark:data-[variant=tertiary]:hover:bg-neu-900/[.125] dark:data-[variant=tertiary]:active:bg-neu-800/20 dark:data-[variant=tertiary]:ring-1 dark:data-[variant=tertiary]:ring-inset dark:data-[variant=tertiary]:ring-neu-900/20" data-size="md" data-variant="secondary" variant="secondary" href="/resources/ai/">Explore AI resources<svg width="40" height="40" fill="currentColor" viewBox="0 0 40 40" class="size-4 shrink-0 -rotate-90 text-neu-900"><path fill-rule="evenodd" d="M18.333 6.667h3.334v20H25V30h-3.333v3.333h-3.334V30H15v-3.334h3.333zm-6.666 16.666v3.334H15v-3.334zm0 0V20H8.333v3.333zm16.666 0v3.334H25v-3.334zm0 0V20h3.334v3.333z" clip-rule="evenodd"></path></svg></a></div></div><div class="flex flex-col border border-neu-200 bg-neu-0 p-6 dark:border-neu-50 lg:p-7"><div class="flex items-center gap-3"><svg width="40" height="40" fill="currentColor" viewBox="0 0 40 40" class="size-7 text-pri-base dark:text-pri-light"><path d="M13.332 8.333h3.333v3.334h-3.333zM9.999 11.667h3.333V15H9.999zM6.665 15H10v3.333H6.665zM3.332 18.333h3.333v3.334H3.332zM6.665 21.667H10V25H6.665zM9.999 25h3.333v3.333H9.999zM13.332 28.333h3.333v3.334h-3.333zM26.665 8.333h-3.333v3.334h3.333zM29.999 11.667h-3.334V15H30zM33.332 15h-3.333v3.333h3.333zM36.665 18.333h-3.333v3.334h3.333zM33.332 21.667h-3.333V25h3.333zM29.999 25h-3.334v3.333H30zM26.665 28.333h-3.333v3.334h3.333z"></path></svg><h3 class="typography-h4">AI Agents & Tool Calling</h3></div><p class="typography-body-md mt-3 flex-1 text-pretty text-neu-800">Give AI agents structured, type-safe access to your data layer. GraphQL's query composition lets LLMs build complex, multi-step data fetches in a single round-trip â calling multiple services, filtering, and aggregating.</p><div class="mt-5"><div class="pre_pre__do0AT relative"><div class="pre_label__ZLpTs flex items-center gap-1.5 px-4 py-2 text-sm text-neu-800 rounded-t-md border border-b-0 border-neu-200 bg-neu-0/[.64] backdrop-blur-[6px] dark:border-neu-50"><svg viewBox="0 0 24 24" fill="currentColor" class="_h-4 _w-auto _max-w-6 _shrink-0"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 1.65674L20.9575 6.82836V17.1716L12 22.3432L3.04248 17.1716V6.82836L12 1.65674ZM4.04753 7.40863V15.006L10.6271 3.60994L4.04753 7.40863ZM12 3.24206L4.4154 16.379H19.5846L12 3.24206ZM18.5796 17.384H5.42045L12 21.1827L18.5796 17.384ZM19.9525 15.006L13.3729 3.60994L19.9525 7.40863V15.006Z"></path><path d="M12 4.35381C13.1691 4.35381 14.1168 3.40609 14.1168 2.23701C14.1168 1.06793 13.1691 0.120209 12 0.120209C10.8309 0.120209 9.88319 1.06793 9.88319 2.23701C9.88319 3.40609 10.8309 4.35381 12 4.35381Z"></path><path d="M20.455 9.23532C21.6241 9.23532 22.5718 8.2876 22.5718 7.11852C22.5718 5.94945 21.6241 5.00172 20.455 5.00172C19.2859 5.00172 18.3382 5.94945 18.3382 7.11852C18.3382 8.2876 19.2859 9.23532 20.455 9.23532Z"></path><path d="M20.455 18.9983C21.6241 18.9983 22.5718 18.0506 22.5718 16.8815C22.5718 15.7124 21.6241 14.7647 20.455 14.7647C19.2859 14.7647 18.3382 15.7124 18.3382 16.8815C18.3382 18.0506 19.2859 18.9983 20.455 18.9983Z"></path><path d="M12 23.8798C13.1691 23.8798 14.1168 22.9321 14.1168 21.763C14.1168 20.5939 13.1691 19.6462 12 19.6462C10.8309 19.6462 9.88319 20.5939 9.88319 21.763C9.88319 22.9321 10.8309 23.8798 12 23.8798Z"></path><path d="M3.54382 18.9983C4.71289 18.9983 5.66062 18.0506 5.66062 16.8815C5.66062 15.7124 4.71289 14.7647 3.54382 14.7647C2.37474 14.7647 1.42702 15.7124 1.42702 16.8815C1.42702 18.0506 2.37474 18.9983 3.54382 18.9983Z"></path><path d="M3.54382 9.23532C4.71289 9.23532 5.66062 8.2876 5.66062 7.11852C5.66062 5.94945 4.71289 5.00172 3.54382 5.00172C2.37474 5.00172 1.42702 5.94945 1.42702 7.11852C1.42702 8.2876 2.37474 9.23532 3.54382 9.23532Z"></path></svg><span class="_truncate">Example query</span></div><pre class="overflow-x-auto border border-neu-200 py-4 subpixel-antialiased focus-visible:gql-focus-outline contrast-more:contrast-150 dark:border-neu-50 rounded-b-md" tabindex="0"><code class="nextra-code" dir="ltr"><span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">{</span></span> 138<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> orders</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">(</span><span style="--shiki-light:#0E0F0B;--shiki-dark:#F3F4F0">status</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">:</span><span style="--shiki-light:#6E7557;--shiki-dark:#F3F4F0"> PENDING</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">) {</span></span> 139<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> customer</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 140<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span></span> 141<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> email</span></span> 142<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 143<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> items</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 144<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> product</span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> {</span></span> 145<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> name</span></span> 146<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> stock</span></span> 147<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 148<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 149<span><span style="--shiki-light:#E10198;--shiki-dark:#DBF6A2"> total</span></span> 150<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557"> }</span></span> 151<span><span style="--shiki-light:#6E7557;--shiki-dark:#6E7557">}</span></span></code></pre><div class="_opacity-0 _transition [div:hover>&]:_opacity-100 focus-within:_opacity-100 _flex _gap-1 _absolute _right-4 _top-14"><button class="_transition _border _border-gray-300 dark:_border-neutral-700 contrast-more:_border-gray-900 contrast-more:dark:_border-gray-50 _rounded-md _p-1.5 md:_hidden" title="Toggle word wrap" type="button" data-headlessui-state=""><svg viewBox="0 0 24 24" fill="currentColor" height="16"><path d="M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"></path></svg></button></div></div></div><ul class="typography-body-sm mt-5 flex flex-col gap-1.5"><li class="flex items-start gap-1.5 text-neu-700"><span class="mt-1.5 size-1 shrink-0 rounded-full bg-pri-base"></span>Agents compose queries at inference time</li><li class="flex items-start gap-1.5 text-neu-700"><span class="mt-1.5 size-1 shrink-0 rounded-full bg-pri-base"></span>Real-time subscriptions for streaming agents</li><li class="flex items-start gap-1.5 text-neu-700"><span class="mt-1.5 size-1 shrink-0 rounded-full bg-pri-base"></span>Single endpoint for all data operations</li></ul><div class="mt-auto pt-5"><a class="relative flex items-center justify-center gap-2.5 font-normal text-base/none text-neu-0 bg-neu-900 hover:bg-neu-800 active:bg-neu-700 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 dar
151k:data-[variant=secondary]:bg-neu-100/80 dark:data-[variant=secondary]:hover:bg-neu-200/50 data-[variant=secondary]:text-neu-900 data-[variant=secondary]:hover:bg-neu-200/75 data-[variant=secondary]:active:bg-neu-200/90 data-[variant=tertiary]:bg-neu-100 data-[variant=tertiary]:text-neu-900 data-[variant=tertiary]:hover:bg-neu-200 data-[variant=tertiary]:active:bg-neu-300 gql-focus-visible [aria-disabled]:bg-neu-800 aria-disabled:pointer-events-none dark:data-[variant=tertiary]:bg-neu-900/10 dark:data-[variant=tertiary]:text-neu-900 dark:data-[variant=tertiary]:hover:bg-neu-900/[.125] dark:data-[variant=tertiary]:active:bg-neu-800/20 dark:data-[variant=tertiary]:ring-1 dark:data-[variant=tertiary]:ring-inset dark:data-[variant=tertiary]:ring-neu-900/20" data-size="md" data-variant="secondary" variant="secondary" href="/blog/2025-07-03-graphql-supercharging-ai/">Read the blog post<svg width="40" height="40" fill="currentColor" viewBox="0 0 40 40" class="size-4 shrink-0 -rotate-90 text-neu-900"><path fill-rule="evenodd" d="M18.333 6.667h3.334v20H25V30h-3.333v3.333h-3.334V30H15v-3.334h3.333zm-6.666 16.666v3.334H15v-3.334zm0 0V20H8.333v3.333zm16.666 0v3.334H25v-3.334zm0 0V20h3.334v3.333z" clip-rule="evenodd"></path></svg></a></div></div></div></section><section class="gql-section max-sm:px-0 lg:pb-16 lg:max-xl:px-0 xl:pb-24"><div class="gql-container typography-body-lg flex bg-pri-dark text-white dark:bg-pri-darker max-lg:flex-col"><div class="border-pri-light p-6 max-lg:border-b lg:border-r lg:p-16"><h2 class="typography-h2 text-balance">Shape the future of<br/>GraphQL & AI</h2><p class="mt-8">The GraphQL AI Working Group is open to everyone. Help define how GraphQL powers the next generation of intelligent systems â contribute to specs, share use cases, and collaborate with the community.</p></div><div class="flex flex-col *:flex-1"><a rel="noopener noreferrer" target="_blank" href="https://discord.graphql.org/" class="flex items-center justify-between gap-4 whitespace-pre border-b border-pri-light px-6 py-8 hover:bg-white/10 lg:h-1/2 lg:px-8 lg:pr-12 xl:gap-6">Join the Discord<svg xmlns="http://www.w3.org/2000/svg" fill="#5865f2" viewBox="0 0 20 20" class="size-8 fill-white"><path d="M16.956 3.693a16.5 16.5 0 0 0-4.134-1.274 10 10 0 0 0-.526 1.072 15.8 15.8 0 0 0-4.58 0 13 13 0 0 0-.525-1.072c-1.429.239-2.82.667-4.135 1.274C.44 7.553-.269 11.323.085 15.043a16.8 16.8 0 0 0 5.065 2.536q.614-.828 1.08-1.747a10.6 10.6 0 0 1-1.708-.82 6 6 0 0 0 .415-.323c3.295 1.507 6.864 1.507 10.119 0 .141.111.272.223.414.324-.546.323-1.112.596-1.709.818a12.3 12.3 0 0 0 1.083 1.75 16.8 16.8 0 0 0 5.064-2.538c.434-4.305-.689-8.045-2.952-11.35m-10.27 9.056c-.99 0-1.8-.9-1.8-2.002s.79-2.001 1.8-2.001c1 0 1.82.9 1.798 2.002 0 1.101-.798 2-1.798 2m6.641 0c-.99 0-1.8-.9-1.8-2.002s.79-2.001 1.8-2.001c1 0 1.82.9 1.8 2.002 0 1.101-.79 2-1.8 2"></path></svg></a><a rel="noopener noreferrer" target="_blank" href="https://github.com/graphql/ai-wg" class="flex items-center justify-between gap-4 whitespace-pre px-6 py-8 hover:bg-white/10 lg:h-1/2 lg:px-8 lg:pr-12 xl:gap-6">AI Working Group on GitHub<svg width="40" height="40" fill="currentColor" viewBox="0 0 40 40" class="size-10 -rotate-90 text-pri-light"><path fill-rule="evenodd" d="M18.333 6.667h3.334v20H25V30h-3.333v3.333h-3.334V30H15v-3.334h3.333zm-6.666 16.666v3.334H15v-3.334zm0 0V20H8.333v3.333zm16.666 0v3.334H25v-3.334zm0 0V20h3.334v3.333z" clip-rule="evenodd"></path></svg></a></div></div></section></main></div><footer class="relative isolate !bg-neu-100 text-neu-900 dark:!bg-neu-0 max-md:px-0 max-md:pt-0"><div role="presentation" class="pointer-events-none absolute inset-0 z-[1] [--start-1:rgba(255,204,239,.05)] [--end-1:hsl(var(--color-pri-base)/.8)] dark:[--start-1:hsl(var(--color-pri-darker))] dark:[--end-1:hsl(var(--color-pri-base)/.9)] [--start-2:transparent] [--end-2:hsl(var(--color-pri-base)/.6)] dark:[--start-2:rgba(255,204,239,.1)] dark:[--end-2:hsl(var(--color-pri-base)/.8)] mix-blend-darken dark:mix-blend-lighten max-sm:![mask-size:300vw_200px] max-sm:![mask-position:center_calc(100%-100px)] sm:max-lg:![mask-origin:bottom] sm:max-lg:![mask-size:250%_300px] sm:max-lg:![mask-position:center_calc(100%-30px)] max-lg:rotate-180 " style="mask-image:url(/_next/static/media/blur-bean.d5aa6d13.webp);-webkit-mask-image:url(/_next/static/media/blur-bean.d5aa6d13.webp);mask-position:center 260px;-webkit-mask-position:center 260px;mask-size:200% 100%;-webkit-mask-size:200% 100%;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-origin:top"><div class="absolute inset-0 bg-[linear-gradient(180deg,var(--start-1)_0%,var(--end-1)_200%)]" style="--stripe-width:12px;--angle:90deg;mask-image:repeating-linear-gradient(var(--angle), transparent, transparent var(--stripe-width), black var(--stripe-width), black calc(var(--stripe-width) * 2));-webkit-mask-image:repeating-linear-gradient(var(--angle), transparent, transparent var(--stripe-width), black var(--stripe-width), black calc(var(--stripe-width) * 2))"></div><div class="absolute inset-0 bg-[linear-gradient(180deg,var(--start-2)_0%,var(--end-2)_200%)]" style="--stripe-width:12px;--angle:90deg;mask-image:repeating-linear-gradient(var(--angle), black, black var(--stripe-width), transparent var(--stripe-width), transparent calc(var(--stripe-width) * 2));-webkit-mask-image:repeating-linear-gradient(var(--angle), black, black var(--stripe-width), transparent var(--stripe-width), transparent calc(var(--stripe-width) * 2))"></div></div><div class="mx-auto max-w-[120rem] border-neu-400 dark:border-neu-100 xl:border-t 3xl:border-x"><div class="flex flex-wrap justify-between gap-4 p-4 max-md:w-full md:p-6 2xl:px-10"><a class="nextra-logo flex items-center" href="/"><svg xmlns="http://www.w3.org/2000/svg" style="fill:color(display-p3 .8824 0 .5961)" viewBox="0 0 367 100" class="h-6" title="GraphQL"><path fill-rule="evenodd" d="m50 6.468 37.7 21.766v43.532L50 93.532 12.3 71.766V28.234zM16.53 30.676v31.976l27.692-47.964zM50 13.14 18.078 68.43h63.844zm27.692 59.52H22.308L50 88.648zm5.778-10.008L55.778 14.688 83.47 30.676z" clip-rule="evenodd"></path><circle cx="14.41" cy="29.45" r="8.91"></circle><circle cx="14.41" cy="70.545" r="8.91"></circle><circle cx="50" cy="91.09" r="8.91"></circle><circle cx="85.585" cy="70.545" r="8.91"></circle><circle cx="85.585" cy="29.455" r="8.91"></circle><circle cx="50" cy="8.91" r="8.91"></circle><path d="M138.875 71.625q-7.812 0-12.125-4.5t-4.562-12.062q-.063-1.876-.063-5.938t.063-5.937q.25-7.563 4.562-12.063t12.125-4.5q5.313 0 8.938 2 3.624 2 5.375 4.75 1.812 2.688 1.937 4.813v.124q0 .501-.375.813-.375.313-.938.313h-1.374q-.562 0-.813-.25t-.5-1q-1.062-3.313-4.125-5.563-3-2.25-8.125-2.25-5.812 0-9.187 3.188-3.313 3.187-3.563 9.937-.062 1.875-.062 5.625t.062 5.625q.25 6.75 3.563 9.938 3.375 3.186 9.187 3.187 5.813 0 9.375-3.312 3.562-3.314 3.562-9.813v-3.187h-10.874q-.625 0-1-.376a1.58 1.58 0 0 1-.375-1.062v-.875q0-.625.375-1 .375-.437 1-.437h13.374q.688 0 1.063.374.375.376.375 1.063v5.5q0 4.999-2 8.813-2 3.811-5.812 5.937-3.813 2.125-9.063 2.125M165.941 71q-.625 0-1-.375t-.375-1V39.938q0-.
151625.375-1 .375-.438 1-.438h1q.625 0 1 .438.438.375.438 1v2.874q2.25-4.312 8.5-4.312h2.312q.625 0 1 .375t.375 1v.875q0 .625-.375 1t-1 .375h-2.687q-3.75 0-5.938 2.188-2.187 2.187-2.187 5.937v19.375q0 .625-.438 1-.375.375-1 .375zM194.557 71.625q-3 0-5.563-1.25T184.869 67q-1.5-2.126-1.5-4.687 0-4.125 3.313-6.75 3.374-2.625 9.062-3.376l9.875-1.374v-2.188q0-3.438-2.125-5.25-2.063-1.875-6.375-1.875-3.188 0-5.25 1.25-2 1.25-2.562 3-.25.75-.625 1.063-.313.25-.875.25h-.875q-.563 0-1-.376a1.5 1.5 0 0 1-.375-1q0-1.374 1.25-3.187 1.25-1.875 3.875-3.25t6.437-1.375q6.687 0 9.5 3.188 2.813 3.187 2.813 7.75v20.812q0 .625-.375 1-.376.375-1 .375h-1.063q-.625 0-1-.375t-.375-1v-2.937q-1.375 2.061-4.062 3.5-2.626 1.437-7 1.437m.625-3.625q4.561 0 7.5-3 2.937-3 2.937-8.625V54.25l-8.062 1.125q-5.125.687-7.75 2.375T187.182 62q0 2.875 2.375 4.438Q191.994 68 195.182 68M220.752 82.875q-.624 0-1-.375-.375-.375-.375-1V39.875q0-.625.375-1 .376-.375 1-.375h1.063q.625 0 1 .375t.375 1v2.938q3.626-4.938 10.5-4.938 6.75 0 9.937 4.313 3.25 4.25 3.438 10.5.063.624.062 2.062 0 1.437-.062 2.063-.187 6.25-3.438 10.562-3.187 4.25-9.937 4.25-6.813 0-10.5-4.937V81.5q0 .625-.375 1t-1 .375zM233.315 68q5.062 0 7.375-3.187 2.375-3.25 2.562-8.313.063-.625.063-1.75 0-5.813-2.25-9.5-2.25-3.75-7.75-3.75-4.938 0-7.438 3.313-2.5 3.25-2.687 7.687l-.063 2.438.063 2.437a12.8 12.8 0 0 0 1.187 5.125q1.125 2.375 3.375 3.938Q230.002 68 233.315 68M257.068 71q-.625 0-1-.375t-.375-1V28q0-.625.375-1t1-.375h1.063q.625 0 1 .375t.375 1v14.813q1.875-2.439 4.25-3.688 2.437-1.25 6.25-1.25 6.125 0 9.437 3.938 3.313 3.874 3.313 10.062v17.75q0 .625-.375 1t-1 .375h-1.063q-.625 0-1-.375t-.375-1V52.188q0-5.063-2.5-7.876-2.437-2.812-7.062-2.812-4.5 0-7.188 2.875-2.687 2.813-2.687 7.813v17.437q0 .625-.375 1t-1 .375zM321.682 75.063q-.938 0-2-1.438l-2.75-3.812q-3.75 1.812-8.75 1.812-16.062 0-16.5-17.25-.062-1.875-.062-5.25t.062-5.25q.25-8.5 4.625-12.875t11.875-4.375T320.057 31t4.625 12.875q.125 3.75.125 5.25t-.125 5.25q-.312 8.937-4.562 13.125l4 5.625q.187.376.187.688a1.2 1.2 0 0 1-.375.874 1.2 1.2 0 0 1-.875.376zm-13.5-7.188q5.625 0 8.938-3.375 3.375-3.437 3.625-10.437.125-3.75.125-4.938t-.125-4.937q-.25-7-3.625-10.376-3.375-3.437-8.938-3.437-5.562 0-8.937 3.438-3.375 3.375-3.625 10.374-.063 1.875-.063 4.938t.063 4.938q.25 6.999 3.562 10.437 3.375 3.375 9 3.375M336.126 71q-.625 0-1-.375t-.375-1v-41q0-.625.375-1t1-.375h1.188q.625 0 1 .375t.375 1V67.25h21.562q.688 0 1.063.375t.375 1.063v.937q0 .625-.438 1-.375.375-1 .375z"></path></svg></a><div class="typography-menu flex items-center *:rounded-none dark:*:text-neu-900 md:hidden"><button type="button" tabindex="0" role="combobox" aria-expanded="false" aria-haspopup="listbox" aria-label="Change theme" title="Change theme" class="gql-focus-visible relative cursor-pointer text-neu-800 transition-colors before:absolute before:-inset-2 hover:bg-neu-100 hover:text-neu-900 focus-visible:outline-offset-4 dark:text-neu-700 dark:hover:bg-neu-50/50"><div class="flex items-center gap-2 border border-transparent p-[5px] [[aria-expanded=true]>&]:border-neu-300 [[aria-expanded=true]>&]:bg-neu-0 [[aria-expanded=true]>&]:dark:border-neu-100"><svg fill="currentColor" viewBox="0 0 14 14" height="16"><path fill-rule="evenodd" d="M7.583 0H6.417v2.333h1.166zM0 6.417v1.166h2.333V6.417zm11.667 0H14v1.166h-2.333zM7.583 14H6.417v-2.333h1.166zM4.667 3.5h4.666v1.167H4.667zm0 5.833H3.5V4.667h1.167zm0 0V10.5h4.666V9.333H10.5V4.667H9.333v4.666zm7-8.166h1.166v1.166h-1.166zm0 1.166V3.5H10.5V2.333zm1.166 10.5h-1.166v-1.166h1.166zm-1.166-1.166H10.5V10.5h1.167zm-9.334-10.5H1.167v1.166h1.166V3.5H3.5V2.333H2.333zM1.167 12.833h1.166v-1.166H3.5V10.5H2.333v1.167H1.167z" clip-rule="evenodd"></path></svg><span class="text-sm capitalize leading-none text-neu-800">light</span></div></button><input style="clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;position:fixed;top:0;left:0;border:0;padding:0;width:1px;height:1px;margin:-1px" tabindex="-1" aria-hidden="true" value="light"/></div></div><div class="grid grid-cols-2 gap-px bg-neu-400 py-px dark:bg-neu-100 lg:grid-cols-5"><div class="typography-menu relative bg-neu-100 py-4 dark:bg-neu-0 lg:py-6 3xl:py-10"><h3 class="font-bold lg:mb-4 3xl:mb-10"><a class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10" href="/learn/">Learn</a></h3><a class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10" href="/learn/">Introduction</a><a class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10" href="/learn/best-practices/">Best Practices</a><a class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10" href="/faq/"><span><span class="max-md:hidden">Frequently Asked Questions</span><span class="md:hidden">FAQ</span></span></a><a class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10" href="/community/resources/training-courses/">Training Courses</a></div><div class="typography-menu relative bg-neu-100 py-4 dark:bg-neu-0 lg:py-6 3xl:py-10"><h3 class="font-bold lg:mb-4 3xl:mb-10"><span class="block p-4 md:px-6 2xl:px-10">Code</span></h3><a rel="noopener noreferrer" target="_blank" href="https://github.com/graphql" class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10">GitHub</a><a rel="noopener noreferrer" target="_blank" href="https://spec.graphql.org" class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10">Specification</a><a class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10" href="/code/">Libraries & Tools</a><a class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10" href="/code/?tags=services">Services & Vendors</a></div><div class="typography-menu relative bg-neu-100 py-4 dark:bg-neu-0 lg:py-6 3xl:py-10"><h3 class="font-bold lg:mb-4 3xl:mb-10"><span class="block p-4 md:px-6 2xl:px-10">Community</span></h3><a class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10" href="/community/resources/official-channels/">Resources</a><a class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10" href="/community/events/">Events</a><a class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10" href="/community/contribute/essential-links/"><span>Contribute<span class="max-md:hidden"> to GraphQL</span></span></a><a rel="noopener noreferrer" target="_blank" href="https://landscape.graphql.org" class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10">Landscape</a><a rel="noopener noreferrer" target="_blank" href="https://store.graphql.org/" class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10">Shop</a></div><div class="typography-menu relative bg-neu-100 py-4 dark:bg-neu-0 lg:py-6 3xl:py-10"><h3 class="font-bold lg:mb-4 3xl:mb-10"><span class="block p-4 md:px-6 2xl:px-10">& More</span></h3><a class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10" href="/blog/">Blog</a><a class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10" href="/foundation/">GraphQL Foundation</a><a class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10" href="/foundation/community-grant/">Community Grant</a><a class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10" href="/brand/">Brand Guidelines</a><a class="gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10" href="/codeofconduct/">Code of Conduct</a></div><div class="flex flex-col max-lg:contents"><a class="dark gql-focus-visible group relative inline-flex flex-col bg-pri-base text-neu-900 after:absolute after:inset-0 hover:after:bg-white/[.025] dark:bg-pri-dark z-[2] col-span-full flex-1 max-lg:row-start-1" href="/conf/2026/"><div class="flex flex-1 flex-col gap-4 border-b border-pri-lighter p-4 dark:border-pri-light/50"><h2 class="font-mono text-2xl uppercase leading-none md:text-3xl"><span class="max-xs:hidden">Join</span> GraphQLConf 2026</h2></div><div class="typography-body-sm flex font-sans"><div class="flex-1 justify-center border-r border-pri-lighter p-4 dark:border-pri-light/50">May <span class="whitespace-nowrap">19â20</span><br/>Fremont, California</div><div class="flex w-[min(calc(25%-.5px),73.5px)] items-center justify-center"><svg width="40" height="40" fill="currentColor" viewBox="0 0 40 40" class="size-10 -rotate-90 text-pri-lighter transition group-hover:translate-x-0.5 group-hover:text-neu-900"><path fill-rule="evenodd" d="M18.333 6.667h3.334v20H25V30h-3.333v3.333h-3.334V30H15v-3.334h3.333zm-6.666 16.666v3.334H15v-3.334zm0 0V20H8.333v3.333zm16.666 0v3.334H25v-3.334zm0 0V20h3.334v3.333z" clip-rule="evenodd"></path></svg></div></div></a><div class="flex items-center gap-1 *:p-2 *:outline-none *:transition-colors hover:*:text-primary focus:*:text-primary focus:*:ring focus:*:ring-primary [&_svg]:h-5 gql-all-anchors-focusable col-span-full gap-px text-pri-base *:flex *:flex-1 *:items-center *:justify-center *:bg-neu-100 *:dark:bg-neu-0 max-sm:*:aspect-square lg:*:aspect-square [&>a:focus]:text-current [&>a:focus]:!-outline-offset-[6px] [&>a:focus]:ring-transparent [&>a:hover]:bg-neu-0/90 [&>a:hover]:text-current [&_svg]:!h-8"><a href="https://github.com/graphql" aria-label="GitHub" target="_blank" rel="noreferrer"><svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 30 30"><path fill-rule="evenodd" d="M15.1.413a14.81 14.81 0 0 0-4.684 28.862c.742.138 1.012-.32
1511.012-.712 0-.35-.013-1.283-.02-2.518-4.12.893-4.99-1.987-4.99-1.987-.675-1.71-1.643-2.165-1.643-2.165-1.345-.918.1-.9.1-.9 1.488.105 2.27 1.525 2.27 1.525 1.32 2.265 3.466 1.61 4.31 1.23.133-.955.515-1.608.94-1.978-3.29-.375-6.747-1.645-6.747-7.32 0-1.615.577-2.937 1.525-3.975-.15-.372-.66-1.88.145-3.917 0 0 1.242-.4 4.075 1.517a14.3 14.3 0 0 1 3.705-.5 14.2 14.2 0 0 1 3.707.5c2.826-1.915 4.068-1.517 4.068-1.517.807 2.037.3 3.545.15 3.92.95 1.035 1.52 2.357 1.52 3.975 0 5.687-3.462 6.94-6.76 7.305.53.457 1.005 1.36 1.005 2.742 0 1.98-.02 3.575-.02 4.063 0 .395.267.857 1.02.712A14.816 14.816 0 0 0 15.101.413" clip-rule="evenodd"></path></svg></a><a href="https://discord.graphql.org" aria-label="Discord" target="_blank" rel="noreferrer"><svg xmlns="http://www.w3.org/2000/svg" fill="#5865f2" viewBox="0 0 20 20" class="fill-current"><path d="M16.956 3.693a16.5 16.5 0 0 0-4.134-1.274 10 10 0 0 0-.526 1.072 15.8 15.8 0 0 0-4.58 0 13 13 0 0 0-.525-1.072c-1.429.239-2.82.667-4.135 1.274C.44 7.553-.269 11.323.085 15.043a16.8 16.8 0 0 0 5.065 2.536q.614-.828 1.08-1.747a10.6 10.6 0 0 1-1.708-.82 6 6 0 0 0 .415-.323c3.295 1.507 6.864 1.507 10.119 0 .141.111.272.223.414.324-.546.323-1.112.596-1.709.818a12.3 12.3 0 0 0 1.083 1.75 16.8 16.8 0 0 0 5.064-2.538c.434-4.305-.689-8.045-2.952-11.35m-10.27 9.056c-.99 0-1.8-.9-1.8-2.002s.79-2.001 1.8-2.001c1 0 1.82.9 1.798 2.002 0 1.101-.798 2-1.798 2m6.641 0c-.99 0-1.8-.9-1.8-2.002s.79-2.001 1.8-2.001c1 0 1.82.9 1.8 2.002 0 1.101-.79 2-1.8 2"></path></svg></a><a href="https://twitter.com/graphql" aria-label="Twitter" target="_blank" rel="noreferrer"><svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 20 20"><path d="m11.396 9.473 5.461-6.216h-1.293L10.82 8.654 7.034 3.257H2.666l5.726 8.161-5.726 6.518H3.96l5.006-5.7 4 5.7h4.367M4.427 4.212h1.987l9.149 12.816h-1.988"></path></svg></a><a href="https://linkedin.com/company/graphql-foundation" aria-label="LinkedIn" target="_blank" rel="noreferrer"><svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="0" viewBox="0 0 24 24"><path stroke="none" d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6M2 9h4v12H2z"></path><circle cx="4" cy="4" r="2" stroke="none"></circle></svg></a></div></div></div><div class="relative flex items-center justify-between gap-4 p-4 max-md:justify-center md:px-6 2xl:px-10"><div class="typography-menu flex items-center *:rounded-none dark:*:text-neu-900 max-md:hidden"><button type="button" tabindex="0" role="combobox" aria-expanded="false" aria-haspopup="listbox" aria-label="Change theme" title="Change theme" class="gql-focus-visible relative cursor-pointer text-neu-800 transition-colors before:absolute before:-inset-2 hover:bg-neu-100 hover:text-neu-900 focus-visible:outline-offset-4 dark:text-neu-700 dark:hover:bg-neu-50/50"><div class="flex items-center gap-2 border border-transparent p-[5px] [[aria-expanded=true]>&]:border-neu-300 [[aria-expanded=true]>&]:bg-neu-0 [[aria-expanded=true]>&]:dark:border-neu-100"><svg fill="currentColor" viewBox="0 0 14 14" height="16"><path fill-rule="evenodd" d="M7.583 0H6.417v2.333h1.166zM0 6.417v1.166h2.333V6.417zm11.667 0H14v1.166h-2.333zM7.583 14H6.417v-2.333h1.166zM4.667 3.5h4.666v1.167H4.667zm0 5.833H3.5V4.667h1.167zm0 0V10.5h4.666V9.333H10.5V4.667H9.333v4.666zm7-8.166h1.166v1.166h-1.166zm0 1.166V3.5H10.5V2.333zm1.166 10.5h-1.166v-1.166h1.166zm-1.166-1.166H10.5V10.5h1.167zm-9.334-10.5H1.167v1.166h1.166V3.5H3.5V2.333H2.333zM1.167 12.833h1.166v-1.166H3.5V10.5H2.333v1.167H1.167z" clip-rule="evenodd"></path></svg><span class="text-sm capitalize leading-none text-neu-800">light</span></div></button><input style="clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;position:fixed;top:0;left:0;border:0;padding:0;width:1px;height:1px;margin:-1px" tabindex="-1" aria-hidden="true" value="light"/></div><p class="typography-body-xs flex flex-col text-pretty max-md:gap-5">Copyright © <!-- -->2026<!-- --> The GraphQL Foundation. All rights reserved.</p></div></div></footer>
151<script src="/_next/static/chunks/webpack-05cc7f187e27992e.js" async=""></script>
151<script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script>
151<script>self.__next_f.push([1,"1:HL[\"/_next/static/css/cd428ce74986782b.css\",\"style\"]\n2:HL[\"/_next/static/css/b74d54f76d8ddaab.css\",\"style\"]\n3:HL[\"/_next/static/media/70434a467ac4a08b-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n4:HL[\"/_next/static/media/b8a2dcd8ba053f45-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n5:HL[\"/_next/static/media/d2c053a71c898a63-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n6:HL[\"/_next/static/css/ee72f46acea55a45.css\",\"style\"]\n7:HL[\"/_next/static/css/4219530aa38316a6.css\",\"style\"]\n"])</script>
151<script>self.__next_f.push([1,"8:I[49280,[],\"\"]\na:I[24131,[\"1053\",\"static/chunks/1053-65a70fcc3f29a6f5.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"6157\",\"static/chunks/6157-b2626ebf50ccfcd9.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"6628\",\"static/chunks/app/(main)/ai/page-482acd218ae5f74a.js\"],\"SchemaGrid\"]\nd:I[72315,[\"1053\",\"static/chunks/1053-65a70fcc3f29a6f5.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"6157\",\"static/chunks/6157-b2626ebf50ccfcd9.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"6628\",\"static/chunks/app/(main)/ai/page-482acd218ae5f74a.js\"],\"\"]\ne:I[16088,[\"1053\",\"static/chunks/1053-65a70fcc3f29a6f5.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"6157\",\"static/chunks/6157-b2626ebf50ccfcd9.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"6628\",\"static/chunks/app/(main)/ai/page-482acd218ae5f74a.js\"],\"WhySelfDescribingSnippet\"]\nf:I[16088,[\"1053\",\"static/chunks/1053-65a70fcc3f29a6f5.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"6157\",\"static/chunks/6157-b2626ebf50ccfcd9.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"6628\",\"static/chunks/app/(main)/ai/page-482acd218ae5f74a.js\"],\"WhyStronglyTypedSnippet\"]\n10:I[16088,[\"1053\",\"static/chunks/1053-65a70fcc3f29a6f5.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"6157\",\"static/chunks/6157-b2626ebf50ccfcd9.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"6628\",\"static/chunks/app/(main)/ai/page-482acd218ae5f74a.js\"],\"WhyComposableSnippet\"]\n11:I[16088,[\"1053\",\"static/chunks/1053-65a70fcc3f29a6f5.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"6157\",\"static/chunks/6157-b2626ebf50ccfcd9.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"6628\",\"static/chunks/app/(main)/ai/page-482acd218ae5f74a.js\"],\"NumbersSchemaSnippet\"]\n12:I[16088,[\"1053\",\"stat"])</script>
151<script>self.__next_f.push([1,"ic/chunks/1053-65a70fcc3f29a6f5.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"6157\",\"static/chunks/6157-b2626ebf50ccfcd9.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"6628\",\"static/chunks/app/(main)/ai/page-482acd218ae5f74a.js\"],\"NumbersIntrospectionSnippet\"]\n13:I[16088,[\"1053\",\"static/chunks/1053-65a70fcc3f29a6f5.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"6157\",\"static/chunks/6157-b2626ebf50ccfcd9.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"6628\",\"static/chunks/app/(main)/ai/page-482acd218ae5f74a.js\"],\"NumbersResponseSnippet\"]\n14:I[71587,[\"1053\",\"static/chunks/1053-65a70fcc3f29a6f5.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"6157\",\"static/chunks/6157-b2626ebf50ccfcd9.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"6628\",\"static/chunks/app/(main)/ai/page-482acd218ae5f74a.js\"],\"InteractiveDemo\"]\n15:I[16088,[\"1053\",\"static/chunks/1053-65a70fcc3f29a6f5.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"6157\",\"static/chunks/6157-b2626ebf50ccfcd9.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"6628\",\"static/chunks/app/(main)/ai/page-482acd218ae5f74a.js\"],\"StepPromptSnippet\"]\n18:I[16088,[\"1053\",\"static/chunks/1053-65a70fcc3f29a6f5.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"6157\",\"static/chunks/6157-b2626ebf50ccfcd9.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"6628\",\"static/chunks/app/(main)/ai/page-482acd218ae5f74a.js\"],\"StepIntrospectionSnippet\"]\n19:I[16088,[\"1053\",\"static/chunks/1053-65a70fcc3f29a6f5.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"6157\",\"static/chunks/6157-b2626ebf50ccfcd9.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"6628\",\"static/chunks/app/(main)/ai/page-482acd218ae5f74a.js\"],\"StepQuerySnippet\"]\n1a:I[16088,[\"1053\",\"static/chunks/105"])</script>
151<script>self.__next_f.push([1,"3-65a70fcc3f29a6f5.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"6157\",\"static/chunks/6157-b2626ebf50ccfcd9.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"6628\",\"static/chunks/app/(main)/ai/page-482acd218ae5f74a.js\"],\"StepResponseSnippet\"]\n1b:I[16088,[\"1053\",\"static/chunks/1053-65a70fcc3f29a6f5.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"6157\",\"static/chunks/6157-b2626ebf50ccfcd9.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"6628\",\"static/chunks/app/(main)/ai/page-482acd218ae5f74a.js\"],\"UseCaseMcpSnippet\"]\n1e:I[16088,[\"1053\",\"static/chunks/1053-65a70fcc3f29a6f5.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"6157\",\"static/chunks/6157-b2626ebf50ccfcd9.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"6628\",\"static/chunks/app/(main)/ai/page-482acd218ae5f74a.js\"],\"UseCaseRagSnippet\"]\n21:I[16088,[\"1053\",\"static/chunks/1053-65a70fcc3f29a6f5.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"6157\",\"static/chunks/6157-b2626ebf50ccfcd9.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"6628\",\"static/chunks/app/(main)/ai/page-482acd218ae5f74a.js\"],\"UseCaseAgentsSnippet\"]\n22:I[93060,[],\"\"]\n23:I[96862,[],\"\"]\n24:I[9414,[\"1601\",\"static/chunks/493ff4cd-77e620077ac13dbd.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"2746\",\"static/chunks/2746-3e1363444428a138.js\",\"7366\",\"static/chunks/7366-bef5e65148b521e4.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"1256\",\"static/chunks/1256-868c78ba28cc61ba.js\",\"4522\",\"static/chunks/4522-3763116ec593f9f3.js\",\"8961\",\"static/chunks/8961-52d4b0e3e966b720.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"5522\",\"static/chunks/5522-6092c777cd8cf294.js\",\"4095\",\"static/chunks/app/(main)/layout-a145693c4134fecc.js\"],\"ThemeProvider\"]\n25:I[46759,[\"1601\",\"static/chunks/493ff4cd-77e620077ac13dbd.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"2746\",\"static"])</script>
151<script>self.__next_f.push([1,"/chunks/2746-3e1363444428a138.js\",\"7366\",\"static/chunks/7366-bef5e65148b521e4.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"1256\",\"static/chunks/1256-868c78ba28cc61ba.js\",\"4522\",\"static/chunks/4522-3763116ec593f9f3.js\",\"8961\",\"static/chunks/8961-52d4b0e3e966b720.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"5522\",\"static/chunks/5522-6092c777cd8cf294.js\",\"4095\",\"static/chunks/app/(main)/layout-a145693c4134fecc.js\"],\"Navbar\"]\n2c:I[4970,[\"1601\",\"static/chunks/493ff4cd-77e620077ac13dbd.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"2746\",\"static/chunks/2746-3e1363444428a138.js\",\"7366\",\"static/chunks/7366-bef5e65148b521e4.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"1256\",\"static/chunks/1256-868c78ba28cc61ba.js\",\"4522\",\"static/chunks/4522-3763116ec593f9f3.js\",\"8961\",\"static/chunks/8961-52d4b0e3e966b720.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"5522\",\"static/chunks/5522-6092c777cd8cf294.js\",\"4095\",\"static/chunks/app/(main)/layout-a145693c4134fecc.js\"],\"Sidebar\"]\n84:I[10842,[\"1601\",\"static/chunks/493ff4cd-77e620077ac13dbd.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"2746\",\"static/chunks/2746-3e1363444428a138.js\",\"7366\",\"static/chunks/7366-bef5e65148b521e4.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"1256\",\"static/chunks/1256-868c78ba28cc61ba.js\",\"4522\",\"static/chunks/4522-3763116ec593f9f3.js\",\"8961\",\"static/chunks/8961-52d4b0e3e966b720.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"5522\",\"static/chunks/5522-6092c777cd8cf294.js\",\"4095\",\"static/chunks/app/(main)/layout-a145693c4134fecc.js\"],\"ThemeSwitch\"]\n87:I[64700,[\"4522\",\"static/chunks/4522-3763116ec593f9f3.js\",\"3185\",\"static/chunks/app/layout-fd983fd69f95a7ab.js\"],\"default\"]\n88:I[16092,[\"1601\",\"static/chunks/493ff4cd-77e620077ac13dbd.js\",\"6110\",\"static/chunks/6110-aff7b10f18926ab5.js\",\"2746\",\"static/chunks/2746-3e1363444428a138.js\",\"7366\",\"static/chunks/7366-bef5e65148b521e4.js\",\"7215\",\"static/chunks/7215-6f98d9182f431eb0.js\",\"1256\",\"static/chunks/1256-868c78ba28cc61ba.js\",\"4522\",\"static/chunks/4522-3763116e"])</script>
151<script>self.__next_f.push([1,"c593f9f3.js\",\"8961\",\"static/chunks/8961-52d4b0e3e966b720.js\",\"2304\",\"static/chunks/2304-4b69d0f2ac423303.js\",\"5522\",\"static/chunks/5522-6092c777cd8cf294.js\",\"9160\",\"static/chunks/app/not-found-d6c36f0d815ce273.js\"],\"default\"]\n8a:I[70657,[],\"\"]\nc:{\"d\":\"M10 18H8v-2h2zm-2-2H6v-2h2zm4-2v2h-2v-2zm-6 0H4v-2h2zm8 0h-2v-2h2zm2-2h-2v-2h2zm2-2h-2V8h2zm2-2h-2V6h2z\"}\nb:[\"$\",\"path\",null,\"$c\"]\n17:{\"d\":\"M36.666 36.667h-3.334v-3.334h3.334zm-3.334-3.334h-3.333V30h3.333zm-10-3.333H9.999v-3.333h13.333zm6.667 0h-3.333v-3.333h3.333zm-20-3.333H6.666v-3.334h3.333zm16.667 0h-3.334v-3.334h3.334zm-20-3.334H3.332V10h3.334zm23.333 0h-3.333V10h3.333zM9.999 10H6.666V6.667h3.333zm16.667 0h-3.334V6.667h3.334zm-3.334-3.333H9.999V3.333h13.333z\"}\n16:[\"$\",\"path\",null,\"$17\"]\n1d:{\"fillRule\":\"evenodd\",\"d\":\"M18.333 6.667h3.334v20H25V30h-3.333v3.333h-3.334V30H15v-3.334h3.333zm-6.666 16.666v3.334H15v-3.334zm0 0V20H8.333v3.333zm16.666 0v3.334H25v-3.334zm0 0V20h3.334v3.333z\",\"clipRule\":\"evenodd\"}\n1c:[\"$\",\"path\",null,\"$1d\"]\n20:{\"d\":\"M13.332 8.333h3.333v3.334h-3.333zM9.999 11.667h3.333V15H9.999zM6.665 15H10v3.333H6.665zM3.332 18.333h3.333v3.334H3.332zM6.665 21.667H10V25H6.665zM9.999 25h3.333v3.333H9.999zM13.332 28.333h3.333v3.334h-3.333zM26.665 8.333h-3.333v3.334h3.333zM29.999 11.667h-3.334V15H30zM33.332 15h-3.333v3.333h3.333zM36.665 18.333h-3.333v3.334h3.333zM33.332 21.667h-3.333V25h3.333zM29.999 25h-3.334v3.333H30zM26.665 28.333h-3.333v3.334h3.333z\"}\n1f:[\"$\",\"path\",null,\"$20\"]\n26:[\"$\",\"span\",null,{\"className\":\"relative block rounded-full bg-pri-base/15 px-2 py-0.5 text-[0.7rem] font-bold uppercase tracking-wide text-pri-dark dark:bg-pri-light/20 dark:text-pri-light [a:has(\u003e\u0026)]:no-underline\",\"children\":\"AI\"}]\n2a:{\"className\":\"max-xl:hidden\",\"children\":\" 2026\"}\n29:[\"$\",\"span\",null,\"$2a\"]\n28:[\"GraphQLConf\",\"$29\"]\n27:[\"$\",\"span\",null,{\"className\":\"relative block before:absolute before:-inset-x-3 before:-inset-y-1 before:border before:border-current [a:has(\u003e\u0026)]:text-pri-base dark:[a:has(\u003e\u0026)]:text-pri-light [a:hover:has(\u003e\u0026)]:no-underline [a:hover_\u0026]:before:borde"])</script>
151<script>self.__next_f.push([1,"r-transparent\",\"children\":\"$28\"}]\n2b:[\"$\",\"span\",null,{\"className\":\"relative block before:absolute before:-inset-x-3 before:-inset-y-1 before:border before:border-current [a:has(\u003e\u0026)]:text-emerald-600 dark:[a:has(\u003e\u0026)]:text-emerald-400 [a:hover:has(\u003e\u0026)]:no-underline [a:hover_\u0026]:before:border-transparent\",\"children\":\"GraphQL Days\"}]\n2e:{\"title\":\"Learn\"}\n2d:{\"name\":\"learn\",\"route\":\"/learn\",\"frontMatter\":\"$2e\",\"type\":\"page\",\"title\":\"Learn\"}\n2f:{\"title\":\"AI\"}\n30:{\"title\":\"\"}\n31:{\"title\":\"\"}\n32:{\"title\":\"\"}\n33:{\"title\":\"Resource Hub\"}\n34:{\"title\":\"\"}\n35:{\"title\":\"Reading Resources Library\"}\n36:{\"title\":\"\"}\n37:{\"title\":\"Specification\"}\n38:{\"title\":\"Tools \u0026 Libraries\"}\n39:{\"title\":\"Vendors\"}\n3a:{\"title\":\"Video Resources Library\"}\n3c:{\"title\":\"Resource Hub\"}\n3e:{\"kind\":\"MdxPage\",\"name\":\"ai\",\"route\":\"/resources/ai\",\"frontMatter\":\"$2f\",\"type\":\"doc\",\"title\":\"AI\"}\n3f:{\"kind\":\"MdxPage\",\"name\":\"backend\",\"route\":\"/resources/backend\",\"frontMatter\":\"$30\",\"type\":\"doc\",\"title\":\"backend\"}\n40:{\"kind\":\"MdxPage\",\"name\":\"federation\",\"route\":\"/resources/federation\",\"frontMatter\":\"$31\",\"type\":\"doc\",\"title\":\"federation\"}\n41:{\"kind\":\"MdxPage\",\"name\":\"frontend\",\"route\":\"/resources/frontend\",\"frontMatter\":\"$32\",\"type\":\"doc\",\"title\":\"frontend\"}\n42:{\"kind\":\"MdxPage\",\"name\":\"index\",\"route\":\"/resources/index\",\"frontMatter\":\"$33\",\"type\":\"doc\",\"title\":\"Resource Hub\"}\n43:{\"kind\":\"MdxPage\",\"name\":\"monitoring\",\"route\":\"/resources/monitoring\",\"frontMatter\":\"$34\",\"type\":\"doc\",\"title\":\"monitoring\"}\n44:{\"kind\":\"MdxPage\",\"name\":\"reading\",\"route\":\"/resources/reading\",\"frontMatter\":\"$35\",\"type\":\"doc\",\"title\":\"Reading Resources Library\"}\n45:{\"kind\":\"MdxPage\",\"name\":\"security\",\"route\":\"/resources/security\",\"frontMatter\":\"$36\",\"type\":\"doc\",\"title\":\"security\"}\n46:{\"name\":\"spec\",\"route\":\"/resources/spec\",\"frontMatter\":\"$37\",\"type\":\"doc\",\"title\":\"Specification\"}\n47:{\"name\":\"tools-and-libraries\",\"route\":\"/resources/tools-and-libraries\",\"frontMatter\":\"$38\",\"type\":\"doc\",\"title\":\"Tools \u0026 Libraries\"}\n48:{\"kind\":\"MdxPage\",\"name\":\"vendors\",\"route\":\"/resources/vendors\",\"fro"])</script>
151<script>self.__next_f.push([1,"ntMatter\":\"$39\",\"type\":\"doc\",\"title\":\"Vendors\"}\n49:{\"kind\":\"MdxPage\",\"name\":\"video\",\"route\":\"/resources/video\",\"frontMatter\":\"$3a\",\"type\":\"doc\",\"title\":\"Video Resources Library\"}\n3d:[\"$3e\",\"$3f\",\"$40\",\"$41\",\"$42\",\"$43\",\"$44\",\"$45\",\"$46\",\"$47\",\"$48\",\"$49\"]\n4b:{\"title\":\"Resource Hub\"}\n4c:{\"title\":\"\"}\n4d:{\"title\":\"\"}\n4e:{\"title\":\"\"}\n4f:{\"title\":\"AI\"}\n50:{\"title\":\"\"}\n51:{\"title\":\"\"}\n52:{\"type\":\"page\",\"title\":\"Tools \u0026 Libraries\",\"href\":\"/community/tools-and-libraries\"}\n53:{\"title\":\"Vendors\"}\n54:{\"type\":\"page\",\"title\":\"Specification\",\"href\":\"https://spec.graphql.org\",\"newWindow\":true}\n55:{\"title\":\"Video Resources Library\"}\n56:{\"title\":\"Reading Resources Library\"}\n4a:{\"index\":\"$4b\",\"frontend\":\"$4c\",\"backend\":\"$4d\",\"federation\":\"$4e\",\"ai\":\"$4f\",\"security\":\"$50\",\"monitoring\":\"$51\",\"tools-and-libraries\":\"$52\",\"vendors\":\"$53\",\"spec\":\"$54\",\"video\":\"$55\",\"reading\":\"$56\"}\n3b:{\"name\":\"resources\",\"route\":\"/resources\",\"frontMatter\":\"$3c\",\"children\":\"$3d\",\"items\":\"$4a\",\"type\":\"menu\",\"title\":\"Resource Hub\",\"firstChildRoute\":\"/resources/ai\"}\n57:{\"title\":\"Ambassador Program\"}\n58:{\"title\":\"Community Channels\"}\n59:{\"title\":\"Contribute to GraphQL\"}\n5a:{\"title\":\"Events\"}\n5b:{\"title\":\"Foundation\"}\n5c:{\"title\":\"Community Resources\"}\n5d:{\"title\":\"Official Channels\"}\n5e:{\"title\":\"Team\"}\n5f:{\"title\":\"Training Courses\"}\n60:{\"title\":\"Vendor Channels\"}\n62:{\"title\":\"Community\"}\n64:{\"name\":\"ambassadors\",\"route\":\"/community/ambassadors\",\"frontMatter\":\"$57\",\"type\":\"doc\",\"title\":\"Ambassador Program\"}\n65:{\"name\":\"community-channels\",\"route\":\"/community/community-channels\",\"frontMatter\":\"$58\",\"type\":\"doc\",\"title\":\"Community Channels\"}\n66:{\"name\":\"contribute\",\"route\":\"/community/contribute\",\"frontMatter\":\"$59\",\"type\":\"doc\",\"title\":\"Contribute to GraphQL\"}\n67:{\"name\":\"events\",\"route\":\"/community/events\",\"frontMatter\":\"$5a\",\"type\":\"doc\",\"title\":\"Events\"}\n68:{\"name\":\"foundation\",\"route\":\"/community/foundation\",\"frontMatter\":\"$5b\",\"type\":\"doc\",\"title\":\"Foundation\"}\n69:{\"name\":\"more-resources\",\"route\":\"/community/more-resources\",\"frontMatter\":\"$5c\",\"type\":\"d"])</script>
151<script>self.__next_f.push([1,"oc\",\"title\":\"Community Resources\"}\n6a:{\"name\":\"official-channels\",\"route\":\"/community/official-channels\",\"frontMatter\":\"$5d\",\"type\":\"doc\",\"title\":\"Official Channels\"}\n6b:{\"name\":\"team\",\"route\":\"/community/team\",\"frontMatter\":\"$5e\",\"type\":\"doc\",\"title\":\"Team\"}\n6c:{\"name\":\"training-courses\",\"route\":\"/community/training-courses\",\"frontMatter\":\"$5f\",\"type\":\"doc\",\"title\":\"Training Courses\"}\n6d:{\"name\":\"vendor-channels\",\"route\":\"/community/vendor-channels\",\"frontMatter\":\"$60\",\"type\":\"doc\",\"title\":\"Vendor Channels\"}\n63:[\"$64\",\"$65\",\"$66\",\"$67\",\"$68\",\"$69\",\"$6a\",\"$6b\",\"$6c\",\"$6d\"]\n6f:{\"title\":\"Team\",\"type\":\"page\",\"href\":\"/community/team\"}\n70:{\"title\":\"Events\",\"type\":\"page\",\"href\":\"/community/events\"}\n71:{\"title\":\"Official Channels\"}\n72:{\"title\":\"Training Courses\"}\n73:{\"title\":\"Community Channels\"}\n74:{\"title\":\"Vendor Channels\"}\n75:{\"title\":\"Community Resources\"}\n76:{\"title\":\"Ambassador Program\"}\n77:{\"title\":\"Contribute to GraphQL\",\"href\":\"/community/contribute/governance\"}\n78:{\"title\":\"Foundation\"}\n6e:{\"team\":\"$6f\",\"events\":\"$70\",\"official-channels\":\"$71\",\"training-courses\":\"$72\",\"community-channels\":\"$73\",\"vendor-channels\":\"$74\",\"more-resources\":\"$75\",\"ambassadors\":\"$76\",\"contribute\":\"$77\",\"foundation\":\"$78\"}\n61:{\"name\":\"community\",\"route\":\"/community\",\"frontMatter\":\"$62\",\"children\":\"$63\",\"items\":\"$6e\",\"type\":\"menu\",\"title\":\"Community\",\"firstChildRoute\":\"/community/ambassadors\"}\n7a:{\"title\":\"Blog\"}\n79:{\"name\":\"blog\",\"route\":\"/blog\",\"frontMatter\":\"$7a\",\"type\":\"page\",\"title\":\"Blog\"}\n7c:{\"title\":\"$26\"}\n7b:{\"name\":\"ai\",\"route\":\"/ai\",\"frontMatter\":\"$7c\",\"type\":\"page\",\"title\":\"$26\"}\n7e:{\"title\":\"$27\"}\n7d:{\"name\":\"conf\",\"route\":\"/conf/2026\",\"frontMatter\":\"$7e\",\"type\":\"page\",\"title\":\"$27\"}\n80:{\"title\":\"$2b\"}\n7f:{\"name\":\"day\",\"route\":\"/day\",\"frontMatter\":\"$80\",\"type\":\"page\",\"title\":\"$2b\"}\n82:{\"title\":\"GraphQL.JS Tutorial\"}\n81:{\"name\":\"graphql-js\",\"route\":\"/graphql-js\",\"frontMatter\":\"$82\",\"type\":\"page\",\"title\":\"GraphQL.JS Tutorial\"}\n83:Tc6e,"])</script>
151<script>self.__next_f.push([1,"M138.875 71.625q-7.812 0-12.125-4.5t-4.562-12.062q-.063-1.876-.063-5.938t.063-5.937q.25-7.563 4.562-12.063t12.125-4.5q5.313 0 8.938 2 3.624 2 5.375 4.75 1.812 2.688 1.937 4.813v.124q0 .501-.375.813-.375.313-.938.313h-1.374q-.562 0-.813-.25t-.5-1q-1.062-3.313-4.125-5.563-3-2.25-8.125-2.25-5.812 0-9.187 3.188-3.313 3.187-3.563 9.937-.062 1.875-.062 5.625t.062 5.625q.25 6.75 3.563 9.938 3.375 3.186 9.187 3.187 5.813 0 9.375-3.312 3.562-3.314 3.562-9.813v-3.187h-10.874q-.625 0-1-.376a1.58 1.58 0 0 1-.375-1.062v-.875q0-.625.375-1 .375-.437 1-.437h13.374q.688 0 1.063.374.375.376.375 1.063v5.5q0 4.999-2 8.813-2 3.811-5.812 5.937-3.813 2.125-9.063 2.125M165.941 71q-.625 0-1-.375t-.375-1V39.938q0-.625.375-1 .375-.438 1-.438h1q.625 0 1 .438.438.375.438 1v2.874q2.25-4.312 8.5-4.312h2.312q.625 0 1 .375t.375 1v.875q0 .625-.375 1t-1 .375h-2.687q-3.75 0-5.938 2.188-2.187 2.187-2.187 5.937v19.375q0 .625-.438 1-.375.375-1 .375zM194.557 71.625q-3 0-5.563-1.25T184.869 67q-1.5-2.126-1.5-4.687 0-4.125 3.313-6.75 3.374-2.625 9.062-3.376l9.875-1.374v-2.188q0-3.438-2.125-5.25-2.063-1.875-6.375-1.875-3.188 0-5.25 1.25-2 1.25-2.562 3-.25.75-.625 1.063-.313.25-.875.25h-.875q-.563 0-1-.376a1.5 1.5 0 0 1-.375-1q0-1.374 1.25-3.187 1.25-1.875 3.875-3.25t6.437-1.375q6.687 0 9.5 3.188 2.813 3.187 2.813 7.75v20.812q0 .625-.375 1-.376.375-1 .375h-1.063q-.625 0-1-.375t-.375-1v-2.937q-1.375 2.061-4.062 3.5-2.626 1.437-7 1.437m.625-3.625q4.561 0 7.5-3 2.937-3 2.937-8.625V54.25l-8.062 1.125q-5.125.687-7.75 2.375T187.182 62q0 2.875 2.375 4.438Q191.994 68 195.182 68M220.752 82.875q-.624 0-1-.375-.375-.375-.375-1V39.875q0-.625.375-1 .376-.375 1-.375h1.063q.625 0 1 .375t.375 1v2.938q3.626-4.938 10.5-4.938 6.75 0 9.937 4.313 3.25 4.25 3.438 10.5.063.624.062 2.062 0 1.437-.062 2.063-.187 6.25-3.438 10.562-3.187 4.25-9.937 4.25-6.813 0-10.5-4.937V81.5q0 .625-.375 1t-1 .375zM233.315 68q5.062 0 7.375-3.187 2.375-3.25 2.562-8.313.063-.625.063-1.75 0-5.813-2.25-9.5-2.25-3.75-7.75-3.75-4.938 0-7.438 3.313-2.5 3.25-2.687 7.687l-.063 2.438.063 2.437a12.8 12.8 0 0 0 1.187 5.125q1.125 2.375 3.375 3.938Q230.002 68 233.315 68M257.068 71q-.625 0-1-.375t-.375-1V28q0-.625.375-1t1-.375h1.063q.625 0 1 .375t.375 1v14.813q1.875-2.439 4.25-3.688 2.437-1.25 6.25-1.25 6.125 0 9.437 3.938 3.313 3.874 3.313 10.062v17.75q0 .625-.375 1t-1 .375h-1.063q-.625 0-1-.375t-.375-1V52.188q0-5.063-2.5-7.876-2.437-2.812-7.062-2.812-4.5 0-7.188 2.875-2.687 2.813-2.687 7.813v17.437q0 .625-.375 1t-1 .375zM321.682 75.063q-.938 0-2-1.438l-2.75-3.812q-3.75 1.812-8.75 1.812-16.062 0-16.5-17.25-.062-1.875-.062-5.25t.062-5.25q.25-8.5 4.625-12.875t11.875-4.375T320.057 31t4.625 12.875q.125 3.75.125 5.25t-.125 5.25q-.312 8.937-4.562 13.125l4 5.625q.187.376.187.688a1.2 1.2 0 0 1-.375.874 1.2 1.2 0 0 1-.875.376zm-13.5-7.188q5.625 0 8.938-3.375 3.375-3.437 3.625-10.437.125-3.75.125-4.938t-.125-4.937q-.25-7-3.625-10.376-3.375-3.437-8.938-3.437-5.562 0-8.937 3.438-3.375 3.375-3.625 10.374-.063 1.875-.063 4.938t.063 4.938q.25 6.999 3.562 10.437 3.375 3.375 9 3.375M336.126 71q-.625 0-1-.375t-.375-1v-41q0-.625.375-1t1-.375h1.188q.625 0 1 .375t.375 1V67.25h21.562q.688 0 1.063.375t.375 1.063v.937q0 .625-.438 1-.375.375-1 .375z"])</script>
151<script>self.__next_f.push([1,"86:{\"d\":\"M16.956 3.693a16.5 16.5 0 0 0-4.134-1.274 10 10 0 0 0-.526 1.072 15.8 15.8 0 0 0-4.58 0 13 13 0 0 0-.525-1.072c-1.429.239-2.82.667-4.135 1.274C.44 7.553-.269 11.323.085 15.043a16.8 16.8 0 0 0 5.065 2.536q.614-.828 1.08-1.747a10.6 10.6 0 0 1-1.708-.82 6 6 0 0 0 .415-.323c3.295 1.507 6.864 1.507 10.119 0 .141.111.272.223.414.324-.546.323-1.112.596-1.709.818a12.3 12.3 0 0 0 1.083 1.75 16.8 16.8 0 0 0 5.064-2.538c.434-4.305-.689-8.045-2.952-11.35m-10.27 9.056c-.99 0-1.8-.9-1.8-2.002s.79-2.001 1.8-2.001c1 0 1.82.9 1.798 2.002 0 1.101-.798 2-1.798 2m6.641 0c-.99 0-1.8-.9-1.8-2.002s.79-2.001 1.8-2.001c1 0 1.82.9 1.8 2.002 0 1.101-.79 2-1.8 2\"}\n85:[\"$\",\"path\",null,\"$86\"]\n8b:[]\n"])</script>
151<script>self.__next_f.push([1,"0:[\"$\",\"$L8\",null,{\"buildId\":\"0o4RDAs2zB6pJACa-9vyn\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"ai\",\"\"],\"initialTree\":[\"\",{\"children\":[\"(main)\",{\"children\":[\"ai\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"(main)\",{\"children\":[\"ai\",{\"children\":[\"__PAGE__\",{},[[\"$L9\",[\"$\",\"main\",null,{\"className\":\"gql-all-anchors-focusable bg-neu-0\",\"children\":[[\"$\",\"style\",null,{\"children\":\".nextra-nav-container.sticky { position: fixed }\"}],[\"$\",\"div\",null,{\"className\":\"relative overflow-hidden bg-pri-dark text-white dark:bg-pri-darker\",\"children\":[[\"$\",\"div\",null,{\"aria-hidden\":true,\"className\":\"pointer-events-none absolute inset-0\",\"style\":{\"maskImage\":\"url(/_next/static/media/blur-bean.1cb38553.webp)\",\"WebkitMaskImage\":\"url(/_next/static/media/blur-bean.1cb38553.webp)\",\"maskRepeat\":\"no-repeat\",\"WebkitMaskRepeat\":\"no-repeat\",\"maskPosition\":\"center top\",\"WebkitMaskPosition\":\"center top\",\"maskSize\":\"cover\",\"WebkitMaskSize\":\"cover\"},\"children\":[[\"$\",\"div\",null,{\"className\":\"absolute inset-0 bg-[linear-gradient(180deg,hsl(var(--color-pri-light)/.5)_0%,transparent_100%)] dark:bg-[linear-gradient(180deg,hsl(var(--color-pri-light)/0.25)_0%,transparent_100%)]\",\"style\":{\"--stripe-width\":\"8px\",\"--angle\":\"90deg\",\"maskImage\":\"repeating-linear-gradient(var(--angle), transparent, transparent var(--stripe-width), black var(--stripe-width), black calc(var(--stripe-width) * 2))\",\"WebkitMaskImage\":\"repeating-linear-gradient(var(--angle), transparent, transparent var(--stripe-width), black var(--stripe-width), black calc(var(--stripe-width) * 2))\"}}],[\"$\",\"div\",null,{\"className\":\"absolute inset-0 bg-[linear-gradient(180deg,hsl(var(--color-pri-dark)/0.15)_0%,transparent_100%)] dark:bg-[linear-gradient(180deg,hsl(var(--color-neu-0)/0.12)_0%,transparent_100%)]\",\"style\":{\"--stripe-width\":\"8px\",\"--angle\":\"90deg\",\"maskImage\":\"repeating-linear-gradient(var(--angle), black, black var(--stripe-width), transparent var(--stripe-width), transparent calc(var(--stripe-width) * 2))\",\"WebkitMaskImage\":\"repeating-linear-gradient(var(--angle), black, black var(--stripe-width), transparent var(--stripe-width), transparent calc(var(--stripe-width) * 2))\"}}]]}],[\"$\",\"$La\",null,{}],[\"$\",\"div\",null,{\"className\":\"gql-container relative\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex flex-col items-center px-4 pb-16 pt-24 text-center lg:min-h-[640px] lg:justify-center lg:pb-24 lg:pt-32 xl:min-h-[720px] xl:px-24 xl:pt-40\",\"children\":[[\"$\",\"a\",null,{\"href\":\"https://github.com/graphql/ai-wg/\",\"className\":\"mb-8 inline-flex items-center gap-2 border border-sec-light/30 bg-sec-light/10 px-3 py-1 backdrop-blur-sm transition-colors hover:bg-sec-light/20 hover:duration-0\",\"children\":[[\"$\",\"span\",null,{\"className\":\"relative flex size-2\",\"children\":[[\"$\",\"span\",null,{\"className\":\"absolute inline-flex size-2 animate-ping rounded-full bg-sec-base opacity-75 motion-reduce:animate-none\"}],[\"$\",\"span\",null,{\"className\":\"relative inline-flex size-2 rounded-full bg-sec-base\"}]]}],[\"$\",\"span\",null,{\"className\":\"typography-body-sm font-medium text-sec-light\",\"children\":\"GraphQL AI Working Group · open to all\"}]]}],[\"$\",\"h1\",null,{\"className\":\"typography-h1 max-w-4xl text-balance leading-[1.05]\",\"children\":[\"The API language\",[\"$\",\"br\",null,{}],[\"$\",\"span\",null,{\"className\":\"text-sec-light\",\"children\":\"for humans and agents\"}]]}],[\"$\",\"p\",null,{\"className\":\"typography-body-lg mt-6 max-w-2xl text-pretty text-white/80\",\"children\":\"An agent that can reach a GraphQL endpoint can read its types, its field arguments and its documentation, then ask for exactly the fields it needs. Nothing to publish alongside it and keep in sync.\"}],[\"$\",\"ul\",null,{\"className\":\"mt-8 flex max-w-2xl flex-wrap justify-center gap-x-8 gap-y-2\",\"children\":[[\"$\",\"li\",\"0\",{\"className\":\"flex items-start gap-1.5\",\"children\":[[\"$\",\"svg\",null,{\"width\":24,\"height\"
151:24,\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"className\":\"mt-0.5 size-4 shrink-0 text-sec-base\",\"children\":[\"$\",\"path\",null,{\"d\":\"M10 18H8v-2h2zm-2-2H6v-2h2zm4-2v2h-2v-2zm-6 0H4v-2h2zm8 0h-2v-2h2zm2-2h-2v-2h2zm2-2h-2V8h2zm2-2h-2V6h2z\"}]}],[\"$\",\"span\",null,{\"className\":\"typography-body-sm text-white/80\",\"children\":\"Self-describing schemas let agents discover your API\"}]]}],[\"$\",\"li\",\"1\",{\"className\":\"flex items-start gap-1.5\",\"children\":[[\"$\",\"svg\",null,{\"width\":24,\"height\":24,\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"className\":\"mt-0.5 size-4 shrink-0 text-sec-base\",\"children\":\"$b\"}],[\"$\",\"span\",null,{\"className\":\"typography-body-sm text-white/80\",\"children\":\"Invalid queries fail validation before they execute\"}]]}],[\"$\",\"li\",\"2\",{\"className\":\"flex items-start gap-1.5\",\"children\":[[\"$\",\"svg\",null,{\"width\":24,\"height\":24,\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"className\":\"mt-0.5 size-4 shrink-0 text-sec-base\",\"children\":\"$b\"}],[\"$\",\"span\",null,{\"className\":\"typography-body-sm text-white/80\",\"children\":\"Field selection keeps responses to what the query asked for\"}]]}]]}],[\"$\",\"div\",null,{\"className\":\"mt-10 flex flex-wrap items-center justify-center gap-4\",\"children\":[[\"$\",\"a\",null,{\"className\":\"relative flex items-center justify-center gap-2.5 font-normal text-base/none text-neu-0 bg-neu-900 hover:bg-neu-800 active:bg-neu-700 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 dark:data-[variant=secondary]:bg-neu-100/80 dark:data-[variant=secondary]:hover:bg-neu-200/50 data-[variant=secondary]:text-neu-900 data-[variant=secondary]:hover:bg-neu-200/75 data-[variant=secondary]:active:bg-neu-200/90 data-[variant=tertiary]:bg-neu-100 data-[variant=tertiary]:text-neu-900 data-[variant=tertiary]:hover:bg-neu-200 data-[variant=tertiary]:active:bg-neu-300 gql-focus-visible [aria-disabled]:bg-neu-800 aria-disabled:pointer-events-none dark:data-[variant=tertiary]:bg-neu-900/10 dark:data-[variant=tertiary]:text-neu-900 dark:data-[variant=tertiary]:hover:bg-neu-900/[.125] dark:data-[variant=tertiary]:active:bg-neu-800/20 dark:data-[variant=tertiary]:ring-1 dark:data-[variant=tertiary]:ring-inset dark:data-[variant=tertiary]:ring-neu-900/20\",\"aria-disabled\":\"$undefined\",\"data-size\":\"$undefined\",\"data-variant\":\"primary\",\"href\":\"#interactive-demo\",\"variant\":\"primary\",\"children\":[\"Try the live demo\",[\"$\",\"svg\",null,{\"width\":40,\"height\":40,\"fill\":\"currentColor\",\"viewBox\":\"0 0 40 40\",\"className\":\"size-5 shrink-0 text-neu-0\",\"children\":[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"d\":\"M18.333 6.667h3.334v20H25V30h-3.333v3.333h-3.334V30H15v-3.334h3.333zm-6.666 16.666v3.334H15v-3.334zm0 0V20H8.333v3.333zm16.666 0v3.334H25v-3.334zm0 0V20h3.334v3.333z\",\"clipRule\":\"evenodd\"}]}]]}],[\"$\",\"$Ld\",null,{\"className\":\"relative flex items-center justify-center gap-2.5 font-normal text-base/none text-neu-0 bg-neu-900 hover:bg-neu-800 active:bg-neu-700 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 dark:data-[variant=secondary]:bg-neu-100/80 dark:data-[variant=secondary]:hover:bg-neu-200/50 data-[variant=secondary]:text-neu-900 data-[variant=secondary]:hover:bg-neu-200/75 data-[variant=secondary]:active:bg-neu-200/90 data-[variant=tertiary]:bg-neu-100 data-[variant=tertiary]:text-neu-900 data-[variant=tertiary]:hover:bg-neu-200 data-[variant=tertiary]:active:bg-neu-300 gql-focus-visible [aria-disabled]:bg-neu-800 aria-disabled:pointer-events-none dark:data-[variant=tertiary]:bg-neu-900/10 dark:data-[variant=tertiary]:text-neu-900 dark:data-[variant=tertiary]:hover:bg-neu-900/[.125] dark:data-[variant=tertiary]:active:bg-neu-800/20 dark:data-[variant=tertiary]:ring-1 dark:data-[variant=tertiary]:ring-inset dark:data-[variant=tertiary]:ring-neu-900/20\",\"aria-disabled\":\"$undefined\",\"data-size\":\"$undefined\",\"data-variant\":\"secondary\",\"href\":\"/blog/2025-07-03-graphql-supercharging-ai/\",\"variant\":\"secondary\",\"children\":\"Read the blog post\"}],[\"$\",\"$Ld\",null,{\"className\":\"relative flex items-center justify-center gap-2.5 font-normal text-base/none text-neu-0 bg-neu-900 hover:bg-neu-800 active:bg-neu-700 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 dar
151k:data-[variant=secondary]:bg-neu-100/80 dark:data-[variant=secondary]:hover:bg-neu-200/50 data-[variant=secondary]:text-neu-900 data-[variant=secondary]:hover:bg-neu-200/75 data-[variant=secondary]:active:bg-neu-200/90 data-[variant=tertiary]:bg-neu-100 data-[variant=tertiary]:text-neu-900 data-[variant=tertiary]:hover:bg-neu-200 data-[variant=tertiary]:active:bg-neu-300 gql-focus-visible [aria-disabled]:bg-neu-800 aria-disabled:pointer-events-none dark:data-[variant=tertiary]:bg-neu-900/10 dark:data-[variant=tertiary]:text-neu-900 dark:data-[variant=tertiary]:hover:bg-neu-900/[.125] dark:data-[variant=tertiary]:active:bg-neu-800/20 dark:data-[variant=tertiary]:ring-1 dark:data-[variant=tertiary]:ring-inset dark:data-[variant=tertiary]:ring-neu-900/20\",\"aria-disabled\":\"$undefined\",\"data-size\":\"$undefined\",\"data-variant\":\"tertiary\",\"href\":\"/resources/ai\",\"variant\":\"tertiary\",\"children\":\"Explore AI resources\"}]]}]]}]}]]}],[\"$\",\"section\",null,{\"className\":\"gql-container gql-section lg:py-16 xl:py-24\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex shrink-0 items-center gap-1 self-start whitespace-nowrap font-mono text-sm/none font-normal uppercase text-pri-base dark:text-pri-light mb-6\",\"children\":[[\"$\",\"svg\",null,{\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\",\"className\":\"shrink-0 translate-y-[-0.5px]\",\"children\":[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"M6.66666 13.3332H5.33333V2.6665H6.66666V3.99984H7.99999V5.99984H9.33333V7.33317H10.6667V8.6665H9.33333V9.99984H7.99999V11.9998H6.66666V13.3332Z\"}]}],\"Why GraphQL for AI\"]}],[\"$\",\"h2\",null,{\"className\":\"typography-h2 mb-2 lg:mb-4\",\"children\":[\"Built for machines\",[\"$\",\"br\",null,{}],\"to understand\"]}],[\"$\",\"p\",null,{\"className\":\"typography-body-lg mb-8 max-w-2xl text-pretty text-neu-800 lg:mb-16\",\"children\":\"GraphQL was designed from day one to be machine-readable. Its introspection system, type safety and composability were built for tooling and clients, and they turn out to be what an agent needs to work out what an API offers and ask for part of it.\"}],[\"$\",\"div\",null,{\"className\":\"grid gap-px bg-neu-200 dark:bg-neu-100 lg:grid-cols-3\",\"children\":[[\"$\",\"div\",\"Introspection\",{\"className\":\"flex flex-col bg-neu-0 p-6 lg:px-8 lg:py-0 lg:first:pl-0 lg:last:pr-0 xl:px-10\",\"children\":[[\"$\",\"span\",null,{\"className\":\"typography-menu flex items-center gap-1 text-pri-base dark:text-pri-light\",\"children\":[[\"$\",\"svg\",null,{\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\",\"className\":\"size-4 translate-x-[0.5px]\",\"children\":[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"M6.66666 13.3332H5.33333V2.6665H6.66666V3.99984H7.99999V5.99984H9.33333V7.33317H10.6667V8.6665H9.33333V9.99984H7.99999V11.9998H6.66666V13.3332Z\"}]}],\"Introspection\"]}],[\"$\",\"div\",null,{\"className\":\"mt-4 flex items-center gap-3\",\"children\":[[\"$\",\"svg\",null,{\"width\":40,\"height\":40,\"fill\":\"currentColor\",\"viewBox\":\"0 0 40 40\",\"className\":\"size-6 text-pri-base\",\"children\":[\"$\",\"path\",null,{\"d\":\"M36.666 36.667h-3.334v-3.334h3.334zm-3.334-3.334h-3.333V30h3.333zm-10-3.333H9.999v-3.333h13.333zm6.667 0h-3.333v-3.333h3.333zm-20-3.333H6.666v-3.334h3.333zm16.667 0h-3.334v-3.334h3.334zm-20-3.334H3.332V10h3.334zm23.333 0h-3.333V10h3.333zM9.999 10H6.666V6.667h3.333zm16.667 0h-3.334V6.667h3.334zm-3.334-3.333H9.999V3.333h13.333z\"}]}],[\"$\",\"h3\",null,{\"className\":\"typography-h3\",\"children\":\"Self-describing\"}]]}],[\"$\",\"p\",null,{\"className\":\"typography-body-md mt-4 text-pretty text-neu-800\",\"children\":\"Every GraphQL API ships with a built-in type system. AI agents query `__schema` and immediately understand what data is available, what arguments each field accepts, and how types relate â no hand-written tool descriptions needed.\"}],[\"$\",\"div\",null,{\"className\":\"mt-5\",\"children\":[\"$\",\"$Le\",null,{}]}],[\"$\",\"ul\",null,{\"className\":\"typography-body-sm flex flex-col gap-2 pt-5\",\"children\":[[\"$\",\"li\",\"Auto-generated tool definitions for LLMs\",{\"className\":\"flex items-start gap-1.5\",\"children\":[[\"$\",\"svg\",null,{\"width\":24,\"height\"
151:24,\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"className\":\"mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter\",\"children\":\"$b\"}],[\"$\",\"span\",null,{\"className\":\"text-neu-700\",\"children\":\"Auto-generated tool definitions for LLMs\"}]]}],[\"$\",\"li\",\"Agents discover capabilities at runtime\",{\"className\":\"flex items-start gap-1.5\",\"children\":[[\"$\",\"svg\",null,{\"width\":24,\"height\":24,\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"className\":\"mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter\",\"children\":\"$b\"}],[\"$\",\"span\",null,{\"className\":\"text-neu-700\",\"children\":\"Agents discover capabilities at runtime\"}]]}],[\"$\",\"li\",\"Generate an MCP server from the schema, not beside it\",{\"className\":\"flex items-start gap-1.5\",\"children\":[[\"$\",\"svg\",null,{\"width\":24,\"height\":24,\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"className\":\"mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter\",\"children\":\"$b\"}],[\"$\",\"span\",null,{\"className\":\"text-neu-700\",\"children\":\"Generate an MCP server from the schema, not beside it\"}]]}]]}]]}],[\"$\",\"div\",\"Type Safety\",{\"className\":\"flex flex-col bg-neu-0 p-6 lg:px-8 lg:py-0 lg:first:pl-0 lg:last:pr-0 xl:px-10\",\"children\":[[\"$\",\"span\",null,{\"className\":\"typography-menu flex items-center gap-1 text-pri-base dark:text-pri-light\",\"children\":[[\"$\",\"svg\",null,{\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\",\"className\":\"size-4 translate-x-[0.5px]\",\"children\":[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"M6.66666 13.3332H5.33333V2.6665H6.66666V3.99984H7.99999V5.99984H9.33333V7.33317H10.6667V8.6665H9.33333V9.99984H7.99999V11.9998H6.66666V13.3332Z\"}]}],\"Type Safety\"]}],[\"$\",\"div\",null,{\"className\":\"mt-4 flex items-center gap-3\",\"children\":[[\"$\",\"svg\",null,{\"width\":40,\"height\":40,\"fill\":\"currentColor\",\"viewBox\":\"0 0 40 40\",\"className\":\"size-6 text-pri-base\",\"children\":[\"$\",\"path\",null,{\"d\":\"M6.666 21.667h13.333v10h3.333V35h-3.333v3.333h-3.333V25H3.332v-6.667h3.334zm20 10h-3.334v-3.334h3.334zm3.333-3.334h-3.333V25h3.333zM33.332 25h-3.333v-3.333h3.333zm-10-10h13.334v6.667h-3.334v-3.334H19.999v-10h-3.333V5h3.333V1.667h3.333zM9.999 18.333H6.666V15h3.333zM13.332 15H9.999v-3.333h3.333zm3.334-3.333h-3.334V8.333h3.334z\"}]}],[\"$\",\"h3\",null,{\"className\":\"typography-h3\",\"children\":\"Strongly typed\"}]]}],[\"$\",\"p\",null,{\"className\":\"typography-body-md mt-4 text-pretty text-neu-800\",\"children\":\"Every field has a known, validated type. LLMs can reason about inputs and outputs with confidence. A wrong guess comes back as a named validation error the agent can correct, rather than a 200 with the wrong data in it.\"}],[\"$\",\"div\",null,{\"className\":\"mt-5\",\"children\":[\"$\",\"$Lf\",null,{}]}],[\"$\",\"ul\",null,{\"className\":\"typography-body-sm flex flex-col gap-2 pt-5\",\"children\":[[\"$\",\"li\",\"LLMs understand data shapes natively\",{\"className\":\"flex items-start gap-1.5\",\"children\":[[\"$\",\"svg\",null,{\"width\":24,\"height\":24,\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"className\":\"mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter\",\"children\":\"$b\"}],[\"$\",\"span\",null,{\"className\":\"text-neu-700\",\"children\":\"LLMs understand data shapes natively\"}]]}],[\"$\",\"li\",\"Validated responses prevent parsing errors\",{\"className\":\"flex items-start gap-1.5\",\"children\":[[\"$\",\"svg\",null,{\"width\":24,\"height\":24,\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"className\":\"mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter\",\"children\":\"$b\"}],[\"$\",\"span\",null,{\"className\":\"text-neu-700\",\"children\":\"Validated responses prevent parsing errors\"}]]}],[\"$\",\"li\",\"Type system reduces hallucinated API interactions\",{\"className\":\"flex items-start gap-1.5\",\"children\":[[\"$\",\"svg\",null,{\"width\":24,\"height\":24,\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"className\":\"mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter\",\"children\":\"$b\"}],[\"$\",\"span\",null,{\"className\":\"text-neu-700\",\"children\":\"Type system reduces hallucinated API interactions\"}]]}]]}]]}],[\"$\",\"div\",\"Flexibility\",{\"className\":\"flex flex-col bg-neu-0 p-6 lg:px-8 lg:py-0 lg:first:pl-0 lg:last:pr-0 xl:px-10\",\"children\":[[\"$\",\"span\",null,{\"className\":\"typography-menu flex items-center gap-1 text-pri-base dark:text-pri-light\",\"children\":[[\"$\",\"svg\",null,{\"width\":\"16\",\"height\"
151:\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\",\"className\":\"size-4 translate-x-[0.5px]\",\"children\":[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"M6.66666 13.3332H5.33333V2.6665H6.66666V3.99984H7.99999V5.99984H9.33333V7.33317H10.6667V8.6665H9.33333V9.99984H7.99999V11.9998H6.66666V13.3332Z\"}]}],\"Flexibility\"]}],[\"$\",\"div\",null,{\"className\":\"mt-4 flex items-center gap-3\",\"children\":[[\"$\",\"svg\",null,{\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"className\":\"size-6 text-pri-base\",\"children\":[\"$\",\"path\",null,{\"fill\":\"currentColor\",\"d\":\"M17 4h2v10h-2zm0 12h-2v2h2v2h2v-2h2v-2zm-4-6h-2v10h2zm-8 2H3v2h2v6h2v-6h2v-2zm8-8h-2v2H9v2h6V6h-2zM5 4h2v6H5z\"}]}],[\"$\",\"h3\",null,{\"className\":\"typography-h3\",\"children\":\"Composable\"}]]}],[\"$\",\"p\",null,{\"className\":\"typography-body-md mt-4 text-pretty text-neu-800\",\"children\":\"Request exactly what you need, nothing more. GraphQL lets AI agents compose precise queries on the fly â requesting nested data, using aliases, and applying filters. One endpoint serves any data access pattern without client-side stitching.\"}],[\"$\",\"div\",null,{\"className\":\"mt-5\",\"children\":[\"$\",\"$L10\",null,{}]}],[\"$\",\"ul\",null,{\"className\":\"typography-body-sm flex flex-col gap-2 pt-5\",\"children\":[[\"$\",\"li\",\"Response size tracks the query, not the endpoint\",{\"className\":\"flex items-start gap-1.5\",\"children\":[[\"$\",\"svg\",null,{\"width\":24,\"height\":24,\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"className\":\"mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter\",\"children\":\"$b\"}],[\"$\",\"span\",null,{\"className\":\"text-neu-700\",\"children\":\"Response size tracks the query, not the endpoint\"}]]}],[\"$\",\"li\",\"Dynamic query composition by AI agents\",{\"className\":\"flex items-start gap-1.5\",\"children\":[[\"$\",\"svg\",null,{\"width\":24,\"height\":24,\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"className\":\"mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter\",\"children\":\"$b\"}],[\"$\",\"span\",null,{\"className\":\"text-neu-700\",\"children\":\"Dynamic query composition by AI agents\"}]]}],[\"$\",\"li\",\"One endpoint serves any access pattern the schema allows\",{\"className\":\"flex items-start gap-1.5\",\"children\":[[\"$\",\"svg\",null,{\"width\":24,\"height\":24,\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"className\":\"mt-0.5 size-3.5 shrink-0 text-pri-base dark:text-pri-lighter\",\"children\":\"$b\"}],[\"$\",\"span\",null,{\"className\":\"text-neu-700\",\"children\":\"One endpoint serves any access pattern the schema allows\"}]]}]]}]]}]]}]]}],[\"$\",\"section\",null,{\"className\":\"gql-container gql-section lg:py-12 xl:py-16\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex shrink-0 items-center gap-1 self-start whitespace-nowrap font-mono text-sm/none font-normal uppercase text-pri-base dark:text-pri-light mb-6\",\"children\":[[\"$\",\"svg\",null,{\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\",\"className\":\"shrink-0 translate-y-[-0.5px]\",\"children\":[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"M6.66666 13.3332H5.33333V2.6665H6.66666V3.99984H7.99999V5.99984H9.33333V7.33317H10.6667V8.6665H9.33333V9.99984H7.99999V11.9998H6.66666V13.3332Z\"}]}],\"GraphQL and REST\"]}],[\"$\",\"h2\",null,{\"className\":\"typography-h2 mb-2 lg:mb-4\",\"children\":\"What changes when the API describes itself\"}],[\"$\",\"p\",null,{\"className\":\"typography-body-lg mb-6 max-w-2xl text-pretty text-neu-800\",\"children\":\"Both can be typed and both can be documented. The difference is where that description lives, and how much of it an agent has to carry.\"}],[\"$\",\"div\",null,{\"className\":\"overflow-x-auto\",\"children\":[\"$\",\"table\",null,{\"className\":\"w-full border-collapse text-left\",\"children\":[[\"$\",\"thead\",null,{\"className\":\"max-md:sr-only\",\"children\":[\"$\",\"tr\",null,{\"className\":\"border-b border-neu-200 dark:border-neu-100\",\"children\":[[\"$\",\"th\",null,{\"className\":\"typography-body-xs px-4 py-3 font-medium uppercase tracking-wider text-neu-700\",\"children\":\"Property\"}],[\"$\",\"th\",null,{\"className\":\"typography-body-xs px-4 py-3 font-medium uppercase tracking-wider text-sec-darker dark:text-sec-light\",\"children\":\"GraphQL\"}],[\"$\",\"th\",null,{\"className\":\"typography-body-xs px-4 py-3 font-medium uppercase tracking-wider text-neu-700\",\"children\":\"REST + OpenAPI\"}],[\"$\",\"th\",null,{\"className\":\"typography-body-xs px-4 py-3 font-medium uppercase tracking-wider text-neu-700\",\"children\":\"Why\"}]]}]}],[\"$\",\"tbody\",null,{\"className\":\"max-md:block\",\"children\":[[\"$\",\"tr\",\"Discovery\",{\"className\":\"border-b border-neu-200 align-top dark:border-neu-100 max-md:block max-md:py-3\",\"children\":[[\"$\",\"th\",null,{\"scope\":\"row\",\"className\":\"typography-body-sm px-4 py-3 text-left font-medium text-neu-900 max-md:block max-md:py-0 md:whitespace-nowrap\",\"children\":\"Discovery\"}],[\"$\",\"td\",null,{\"className\":\"typography-body-sm px-4 py-3 font-medium text-sec-darker dark:text-sec-light max-md:block max-md:py-0 md:whitespace-nowrap\",\"children\":[[\"$\",\"span\",null,{\"className\":\"typography-body-xs mr-1 uppercase tracking-wider text-neu-700 md:hidden\",\"children\":\"GraphQL\"}],\"Introspection\",[\"$\",\"span\",null,{\"className\":\"typography-body-xs text-neu-700 max-md:ml-1 md:mt-0.5 md:block\",\"children\":\"from the endpoint itself\"}]]}],[\"$\",\"td\",null,{\"className\":\"typography-body-sm px-4 py-3 text-neu-800 max-md:block max-md:py-0 md:whitespace-nowrap\",\"children\":[[\"$\",\"span\",null,{\"className\":\"typography-body-xs mr-1 uppercase tracking-wider text-neu-700 md:hidden\",\"children\":\"REST\"}],\"OpenAPI document\",[\"$\",\"span\",null,{\"className\":\"typography-body-xs text-neu-700 max-md:ml-1 md:mt-0.5 md:block\",\"children\":\"published alongside\"}]]}],[\"$\",\"td\",null,{\"className\":\"typography-body-sm text-pretty px-4 py-3 text-neu-800 max-md:block max-md:pt-1\",\"children\":\"Most REST frameworks generate an OpenAPI document from the code, so this is not about hand-writing a schema. The difference is that introspection is part of the GraphQL spec and answers on the same endpoint the agent already calls, with no second artifact to locate or keep in sync.\"}]]}],[\"$\",\"tr\",\"Response shape\",{\"className\":\"border-b border-neu-200 align-top dark:border-neu-100 max-md:block max-md:py-3\",\"children\":[[\"$\",\"th\",null,{\"scope\":\"row\",\"className\":\"typography-body-sm px-4 py-3 text-left font-medium text-neu-900 max-md:block max-md:py-0 md:whitespace-nowrap\",\"children\":\"Response shape\"}],[\"$\",\"td\",null,{\"className\":\"typography-body-sm px-4 py-3 font-medium text-sec-darker dark:text-sec-light max-md:block max-md:py-0 md:whitespace-nowrap\",\"children\":[[\"$\",\"span\",null,{\"className\":\"typography-body-xs mr-1 uppercase tracking-wider text-neu-700 md:hidden\",\"children\":\"GraphQL\"}],\"The query names the fields\",[\"$\",\"span\",null,{\"className\":\"typography-body-xs text-neu-700 max-md:ml-1 md:mt-0.5 md:block\",\"children\":\"caller decides\"}]]}],[\"$\",\"td\",null,{\"className\":\"typography-body-sm px-4 py-3 text-neu-800 max-md:block max-md:py-0 md:whitespace-nowrap\",\"children\":[[\"$\",\"span\",null,{\"className\":\"typography-body-xs mr-1 uppercase tracking-wider text-neu-700 md:hidden\",\"children\":\"REST\"}],\"The endpoint decides\",[\"$\",\"span\",null,{\"className\":\"typography-body-xs text-neu-700 max-md:ml-1 md:mt-0.5 md:block\",\"children\":\"sparse fieldsets optional\"}]]}],[\"$\",\"td\",null,{\"className\":\"typography-body-sm text-pretty px-4 py-3 text-neu-800 max-md:block max-md:pt-1\",\"children\":\"A GraphQL response contains the fields the query asked for. A REST endpoint returns its payload, and narrowing it means a
151sparse-fieldset convention or another endpoint. An agent pays for the difference in context window.\"}]]}],[\"$\",\"tr\",\"Traversal\",{\"className\":\"border-b border-neu-200 align-top dark:border-neu-100 max-md:block max-md:py-3\",\"children\":[[\"$\",\"th\",null,{\"scope\":\"row\",\"className\":\"typography-body-sm px-4 py-3 text-left font-medium text-neu-900 max-md:block max-md:py-0 md:whitespace-nowrap\",\"children\":\"Traversal\"}],[\"$\",\"td\",null,{\"className\":\"typography-body-sm px-4 py-3 font-medium text-sec-darker dark:text-sec-light max-md:block max-md:py-0 md:whitespace-nowrap\",\"children\":[[\"$\",\"span\",null,{\"className\":\"typography-body-xs mr-1 uppercase tracking-wider text-neu-700 md:hidden\",\"children\":\"GraphQL\"}],\"One query, many types\",[\"$\",\"span\",null,{\"className\":\"typography-body-xs text-neu-700 max-md:ml-1 md:mt-0.5 md:block\",\"children\":\"follows relationships\"}]]}],[\"$\",\"td\",null,{\"className\":\"typography-body-sm px-4 py-3 text-neu-800 max-md:block max-md:py-0 md:whitespace-nowrap\",\"children\":[[\"$\",\"span\",null,{\"className\":\"typography-body-xs mr-1 uppercase tracking-wider text-neu-700 md:hidden\",\"children\":\"REST\"}],\"One endpoint per resource\",[\"$\",\"span\",null,{\"className\":\"typography-body-xs text-neu-700 max-md:ml-1 md:mt-0.5 md:block\",\"children\":\"client stitches\"}]]}],[\"$\",\"td\",null,{\"className\":\"typography-body-sm text-pretty px-4 py-3 text-neu-800 max-md:block max-md:pt-1\",\"children\":\"A GraphQL query walks relationships across types, so the agent never has to hold the whole type graph in context at once. With REST the relationships live in the agent's head, and it composes the result itself.\"}]]}],[\"$\",\"tr\",\"Documentation\",{\"className\":\"border-b border-neu-200 align-top dark:border-neu-100 max-md:block max-md:py-3\",\"children\":[[\"$\",\"th\",null,{\"scope\":\"row\",\"className\":\"typography-body-sm px-4 py-3 text-left font-medium text-neu-900 max-md:block max-md:py-0 md:whitespace-nowrap\",\"children\":\"Documentation\"}],[\"$\",\"td\",null,{\"className\":\"typography-body-sm px-4 py-3 font-medium text-sec-darker dark:text-sec-light max-md:block max-md:py-0 md:whitespace-nowrap\",\"children\":[[\"$\",\"span\",null,{\"className\":\"typography-body-xs mr-1 uppercase tracking-wider text-neu-700 md:hidden\",\"children\":\"GraphQL\"}],\"On types and fields\",[\"$\",\"span\",null,{\"className\":\"typography-body-xs text-neu-700 max-md:ml-1 md:mt-0.5 md:block\",\"children\":\"returned by introspection\"}]]}],[\"$\",\"td\",null,{\"className\":\"typography-body-sm px-4 py-3 text-neu-800 max-md:block max-md:py-0 md:whitespace-nowrap\",\"children\":[[\"$\",\"span\",null,{\"className\":\"typography-body-xs mr-1 uppercase tracking-wider text-neu-700 md:hidden\",\"children\":\"REST\"}],\"In the spec document\",[\"$\",\"span\",null,{\"className\":\"typography-body-xs text-neu-700 max-md:ml-1 md:mt-0.5 md:block\",\"children\":\"plus an instructions file\"}]]}],[\"$\",\"td\",null,{\"className\":\"typography-body-sm text-pretty px-4 py-3 text-neu-800 max-md:block max-md:pt-1\",\"children\":\"Descriptions attach to the type, every field and every argument, and come back through the same introspection call. There is no separate docs file to point the agent at.\"}]]}]]}]]}]}],[\"$\",\"p\",null,{\"className\":\"typography-body-xs mt-3 text-neu-700\",\"children\":\"Both protocols are typed, and both can describe themselves. The gap is in traversal and discoverability, not in whether types exist. Where a task maps cleanly onto one purpose-built endpoint, REST is the simpler thing for an agent to call.\"}],[\"$\",\"div\",null,{\"className\":\"mt-6 border-l-2 border-neu-200 pl-4 dark:border-neu-100\",\"children\":[[\"$\",\"p\",null,{\"className\":\"typography-body-sm max-w-3xl text-pretty text-neu-700\",\"children\":[\"The public numbers we can point at come from Apollo, who report\",\" \",[\"$\",\"a\",null,{\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"href\":\"https://www.apollographql.com/blog/smart-schema-discovery-how-apollo-mcp-server-maximizes-ai-context-efficiency\",\"className\":\"underline\",\"children\":\"around 40% less schema context and 40â75% fewer tool calls\"}],\" \",\"when an MCP server exposes a curated set of operations instead of a whole schema. Those are Apollo's own measurements of their own server, not an independent benchmark, and they describe tool selection rather than GraphQL against REST.\"]}],[\"$\",\"p\",null,{\"className\":\"typography-body-sm mt-2 max-w-3xl text-pretty text-neu-700\",\"children\":[\"If you have reproducible figures for agents against a GraphQL API, the\",\" \",[\"$\",\"a\",null,{\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"href\":\"https://github.com/graphql/ai-wg\",\"className\":\"underline\",\"children\":\"AI Working Group\"}],\" \",\"would like to see them, and this page will cite them.\"]}]]}],[\"$\",\"div\",null,{\"className\":\"mt-10\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"typography-h3 mb-2\",\"children\":\"Docs live in the schema â and agents can query them\"}],[\"$\",\"p\",null,{\"className\":\"typography-body-md mb-6 max-w-3xl text-pretty text-neu-700\",\"children\":[\"Descriptions written with\",\" \",[\"$\",\"code\",null,{\"className\":\"rounded bg-neu-100 px-1 py-0.5 font-mono text-sm text-neu-800 dark:bg-neu-100/80\",\"children\":\"\\\"\\\"\\\"\"}],\" \",\"are stored on the type and every field. An agent reads them back with the built-in\",\" \",[\"$\",\"code\",null,{\"className\":\"rounded bg-neu-100 px-1 py-0.5 font-mono text-sm text-neu-800 dark:bg-neu-100/80\",\"children\":\"__type\"}],\" \",\"introspection query â no separate docs file or AGENT.md to point it to.\"]}],[\"$\",\"div\",null,{\"className\":\"grid gap-4 lg:grid-cols-3\",\"children\":[[\"$\",\"$L11\",null,{}],[\"$\",\"$L12\",null,{}],[\"$\",\"$L13\",null,{}]]}]]}]]}],[\"$\",\"$L14\",null,{}],[\"$\",\"section\",null,{\"id\":\"how-it-works\",\"className\":\"overflow-hidden bg-neu-50 dark:bg-neu-50/25\",\"children\":[[\"$\",\"div\",null,{\"className\":\"gql-container gql-section pb-0 lg:pb-0 lg:pt-16 xl:pb-0 xl:pt-24\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex shrink-0 items-center gap-1 self-start whitespace-nowrap font-mono text-sm/none font-normal uppercase text-pri-base dark:text-pri-light mb-6\",\"children\":[[\"$\",\"svg\",null,{\"width\":\"16\",\"height\"
151:\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\",\"className\":\"shrink-0 translate-y-[-0.5px]\",\"children\":[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"M6.66666 13.3332H5.33333V2.6665H6.66666V3.99984H7.99999V5.99984H9.33333V7.33317H10.6667V8.6665H9.33333V9.99984H7.99999V11.9998H6.66666V13.3332Z\"}]}],\"How it works\"]}],[\"$\",\"h2\",null,{\"className\":\"typography-h2 mb-2 lg:mb-4\",\"children\":[\"From natural language\",[\"$\",\"br\",null,{}],\"to structured data\"]}],[\"$\",\"p\",null,{\"className\":\"typography-body-lg mb-8 max-w-2xl text-pretty text-neu-800 lg:mb-16\",\"children\":\"Here's what happens when an AI agent uses a GraphQL API to answer a real business question â from initial request to typed response.\"}]]}],[\"$\",\"div\",null,{\"className\":\"border-y border-neu-200 dark:border-neu-50\",\"children\":[\"$\",\"div\",null,{\"className\":\"gql-container px-4 lg:px-12 xl:px-24 3xl:px-[240px]\",\"children\":[\"$\",\"div\",null,{\"className\":\"grid grid-cols-1 gap-x-px border-x border-neu-200 bg-neu-200 dark:border-neu-50 dark:bg-neu-50 sm:grid-cols-2 xl:grid-cols-4\",\"children\":[[\"$\",\"div\",\"01\",{\"className\":\"row-span-4 grid min-w-0 grid-cols-1 grid-rows-subgrid overflow-hidden bg-neu-50 dark:bg-[#181914] border-b border-neu-200 dark:border-neu-50 lg:border-b-0\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center justify-between gap-3 px-4 pt-5 sm:px-5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"typography-d1 font-bold leading-none text-pri-base/15 dark:text-pri-base/20\",\"children\":\"01\"}],[\"$\",\"svg\",null,{\"width\":12,\"height\":12,\"fill\":\"currentColor\",\"viewBox\":\"0 0 12 12\",\"className\":\"size-6 shrink-0 text-pri-base dark:text-pri-light\",\"children\":[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"d\":\"M5 10H4V2h1v1h1v1.5h1v1h1v1H7v1H6V9H5z\",\"clipRule\":\"evenodd\"}]}]]}],[\"$\",\"h3\",null,{\"className\":\"typography-h4 text-balance px-4 pt-3 sm:px-5\",\"children\":\"Agent receives a task\"}],[\"$\",\"p\",null,{\"className\":\"typography-body-sm text-pretty px-4 pb-4 pt-2 text-neu-700 sm:px-5\",\"children\":\"A user gives an AI agent a natural language instruction â \\\"Show me Q4 revenue by region.\\\" The agent needs to access business data through an API to fulfill this request.\"}],[\"$\",\"div\",null,{\"className\":\"min-w-0 *:bg-neu-0 [\u0026\u003ediv\u003ediv:first-child]:rounded-none [\u0026\u003ediv\u003ediv:first-child]:border-x-0 [\u0026_.pre]:rounded-none [\u0026_code]:text-xs [\u0026_pre]:rounded-none [\u0026_pre]:border-x-0 [\u0026_pre]:text-xs lg:flex lg:h-full lg:flex-col lg:[\u0026\u003ediv]:flex lg:[\u0026\u003ediv]:min-
151h-0 lg:[\u0026\u003ediv]:flex-1 lg:[\u0026\u003ediv]:flex-col lg:[\u0026_pre]:min-h-0 lg:[\u0026_pre]:flex-1\",\"children\":[\"$\",\"$L15\",null,{}]}]]}],[\"$\",\"div\",\"02\",{\"className\":\"row-span-4 grid min-w-0 grid-cols-1 grid-rows-subgrid overflow-hidden bg-neu-50 dark:bg-[#181914] border-b border-neu-200 dark:border-neu-50 lg:border-b-0\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center justify-between gap-3 px-4 pt-5 sm:px-5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"typography-d1 font-bold leading-none text-pri-base/15 dark:text-pri-base/20\",\"children\":\"02\"}],[\"$\",\"svg\",null,{\"width\":40,\"height\":40,\"fill\":\"currentColor\",\"viewBox\":\"0 0 40 40\",\"className\":\"size-6 shrink-0 text-pri-base dark:text-pri-light\",\"children\":\"$16\"}]]}],[\"$\",\"h3\",null,{\"className\":\"typography-h4 text-balance px-4 pt-3 sm:px-5\",\"children\":\"Agent introspects the API\"}],[\"$\",\"p\",null,{\"className\":\"typography-body-sm text-pretty px-4 pb-4 pt-2 text-neu-700 sm:px-5\",\"children\":\"Using GraphQL introspection, the agent queries `__schema` and discovers the available types: `Product`, `Order`, `Region`, `RevenueMetrics`. It learns field names, arguments, and relationships automatically.\"}],[\"$\",\"div\",null,{\"className\":\"min-w-0 *:bg-neu-0 [\u0026\u003ediv\u003ediv:first-child]:rounded-none [\u0026\u003ediv\u003ediv:first-child]:border-x-0 [\u0026_.pre]:rounded-none [\u0026_code]:text-xs [\u0026_pre]:rounded-none [\u0026_pre]:border-x-0 [\u0026_pre]:text-xs lg:flex lg:h-full lg:flex-col lg:[\u0026\u003ediv]:flex lg:[\u0026\u003ediv]:min-
151h-0 lg:[\u0026\u003ediv]:flex-1 lg:[\u0026\u003ediv]:flex-col lg:[\u0026_pre]:min-h-0 lg:[\u0026_pre]:flex-1\",\"children\":[\"$\",\"$L18\",null,{}]}]]}],[\"$\",\"div\",\"03\",{\"className\":\"row-span-4 grid min-w-0 grid-cols-1 grid-rows-subgrid overflow-hidden bg-neu-50 dark:bg-[#181914] border-b border-neu-200 dark:border-neu-50 lg:border-b-0 sm:max-lg:border-b-0\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center justify-between gap-3 px-4 pt-5 sm:px-5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"typography-d1 font-bold leading-none text-pri-base/15 dark:text-pri-base/20\",\"children\":\"03\"}],[\"$\",\"svg\",null,{\"width\":40,\"height\":40,\"fill\":\"currentColor\",\"viewBox\":\"0 0 40 40\",\"className\":\"size-6 shrink-0 text-pri-base dark:text-pri-light\",\"children\":[\"$\",\"path\",null,{\"d\":\"M13.332 8.333h3.333v3.334h-3.333zM9.999 11.667h3.333V15H9.999zM6.665 15H10v3.333H6.665zM3.332 18.333h3.333v3.334H3.332zM6.665 21.667H10V25H6.665zM9.999 25h3.333v3.333H9.999zM13.332 28.333h3.333v3.334h-3.333zM26.665 8.333h-3.333v3.334h3.333zM29.999 11.667h-3.334V15H30zM33.332 15h-3.333v3.333h3.333zM36.665 18.333h-3.333v3.334h3.333zM33.332 21.667h-3.333V25h3.333zM29.999 25h-3.334v3.333H30zM26.665 28.333h-3.333v3.334h3.333z\"}]}]]}],[\"$\",\"h3\",null,{\"className\":\"typography-h4 text-balance px-4 pt-3 sm:px-5\",\"children\":\"Agent composes a query\"}],[\"$\",\"p\",null,{\"className\":\"typography-body-sm text-pretty px-4 pb-4 pt-2 text-neu-700 sm:px-5\",\"children\":\"The LLM maps the user's intent to the discovered schema. It constructs a precise GraphQL query that fetches exactly the right data â revenue by region, top 5 categories, all in a single request â with no over-fetching.\"}],[\"$\",\"div\",null,{\"className\":\"min-w-0 *:bg-neu-0 [\u0026\u003ediv\u003ediv:first-child]:rounded-none [\u0026\u003ediv\u003ediv:first-child]:border-x-0 [\u0026_.pre]:rounded-none [\u0026_code]:text-xs [\u0026_pre]:rounded-none [\u0026_pre]:border-x-0 [\u0026_pre]:text-xs lg:flex lg:h-full lg:flex-col lg:[\u0026\u003ediv]:flex lg:[\u0026\u003ediv]:min-
151h-0 lg:[\u0026\u003ediv]:flex-1 lg:[\u0026\u003ediv]:flex-col lg:[\u0026_pre]:min-h-0 lg:[\u0026_pre]:flex-1\",\"children\":[\"$\",\"$L19\",null,{}]}]]}],[\"$\",\"div\",\"04\",{\"className\":\"row-span-4 grid min-w-0 grid-cols-1 grid-rows-subgrid overflow-hidden bg-neu-50 dark:bg-[#181914] border-b border-neu-200 dark:border-neu-50 lg:border-b-0 max-sm:border-b-0 sm:max-lg:border-b-0\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center justify-between gap-3 px-4 pt-5 sm:px-5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"typography-d1 font-bold leading-none text-pri-base/15 dark:text-pri-base/20\",\"children\":\"04\"}],[\"$\",\"svg\",null,{\"width\":24,\"height\":24,\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"className\":\"size-6 shrink-0 text-pri-base dark:text-pri-light\",\"children\":\"$b\"}]]}],[\"$\",\"h3\",null,{\"className\":\"typography-h4 text-balance px-4 pt-3 sm:px-5\",\"children\":\"Structured response returned\"}],[\"$\",\"p\",null,{\"className\":\"typography-body-sm text-pretty px-4 pb-4 pt-2 text-neu-700 sm:px-5\",\"children\":\"The response is JSON in the query's shape. A nullable field can still come back null with an `errors` entry, but the agent already knows the shape, so it can use a partial result as-is.\"}],[\"$\",\"div\",null,{\"className\":\"min-w-0 *:bg-neu-0 [\u0026\u003ediv\u003ediv:first-child]:rounded-none [\u0026\u003ediv\u003ediv:first-child]:border-x-0 [\u0026_.pre]:rounded-none [\u0026_code]:text-xs [\u0026_pre]:rounded-none [\u0026_pre]:border-x-0 [\u0026_pre]:text-xs lg:flex lg:h-full lg:flex-col lg:[\u0026\u003ediv]:flex lg:[\u0026\u003ediv]:min-
151h-0 lg:[\u0026\u003ediv]:flex-1 lg:[\u0026\u003ediv]:flex-col lg:[\u0026_pre]:min-h-0 lg:[\u0026_pre]:flex-1\",\"children\":[\"$\",\"$L1a\",null,{}]}]]}]]}]}]}]]}],[\"$\",\"section\",null,{\"className\":\"gql-container gql-section lg:py-16 xl:py-24\",\"children\":[[\"$\",\"span\",null,{\"className\":\"flex shrink-0 items-center gap-1 self-start whitespace-nowrap font-mono text-sm/none font-normal uppercase text-pri-base dark:text-pri-light mb-6\",\"children\":[[\"$\",\"svg\",null,{\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\",\"className\":\"shrink-0 translate-y-[-0.5px]\",\"children\":[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"M6.66666 13.3332H5.33333V2.6665H6.66666V3.99984H7.99999V5.99984H9.33333V7.33317H10.6667V8.6665H9.33333V9.99984H7.99999V11.9998H6.66666V13.3332Z\"}]}],\"Use cases\"]}],[\"$\",\"h2\",null,{\"className\":\"typography-h2 mb-2 lg:mb-4\",\"children\":[\"GraphQL powers\",[\"$\",\"br\",null,{}],\"the AI stack\"]}],[\"$\",\"p\",null,{\"className\":\"typography-body-lg mb-8 max-w-2xl text-pretty text-neu-800 lg:mb-16\",\"children\":\"MCP servers, RAG pipelines and tool-calling agents all need the same two things: a machine-readable description of what data exists, and a way to ask for part of it. A GraphQL schema already provides both.\"}],[\"$\",\"div\",null,{\"className\":\"grid gap-6 lg:grid-cols-3\",\"children\":[[\"$\",\"div\",\"MCP Servers\",{\"className\":\"flex flex-col border border-neu-200 bg-neu-0 p-6 dark:border-neu-50 lg:p-7\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[[\"$\",\"svg\",null,{\"fill\":\"currentColor\",\"viewBox\":\"0 0 24 24\",\"className\":\"size-7 text-pri-base dark:text-pri-light\",\"children\":[[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"d\":\"M17 1h-4v2h-2v2h2V3h4v2h2V3h-2zm-3 4h2v2h6v16h-2v-7H4v7H2V7h12zm6 9V9H4v5zm-4-3h2v2h-2zm-2 0h-2v2h2z\",\"clipRule\":\"evenodd\"}],[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"d\":\"M17 1h-4v2h-2v2h2V3h4v2h2V3h-2zm-3 4h2v2h6v16H2V7h12zm6 16v-5H4v5zm0-7V9H4v5zm-4-3h2v2h-2zm2 7h-2v2h2zm-6-7h2v2h-2zm2 7h-2v2h2z\",\"clipRule\":\"evenodd\"}]]}],[\"$\",\"h3\",null,{\"className\":\"typography-h4\",\"children\":\"MCP Servers\"}]]}],[\"$\",\"p\",null,{\"className\":\"typography-body-md mt-3 flex-1 text-pretty text-neu-800\",\"children\":\"Build Model Context Protocol servers powered by GraphQL. Every query, mutation, and subscription becomes an auto-discoverable tool. The schema is the contract, so tool definitions are generated from it rather than maintained beside it.\"}],[\"$\",\"div\",null,{\"className\":\"mt-5\",\"children\":[\"$\",\"$L1b\",null,{}]}],[\"$\",\"ul\",null,{\"className\":\"typography-body-sm mt-5 flex flex-col gap-1.5\",\"children\":[[\"$\",\"li\",\"Auto-generate tool definitions from schema\",{\"className\":\"flex items-start gap-1.5 text-neu-700\",\"children\":[[\"$\",\"span\",null,{\"className\":\"mt-1.5 size-1 shrink-0 rounded-full bg-pri-base\"}],\"Auto-generate tool definitions from schema\"]}],[\"$\",\"li\",\"Type-safe inputs and structured outputs\",{\"className\":\"flex items-start gap-1.5 text-neu-700\",\"children\":[[\"$\",\"span\",null,{\"className\":\"mt-1.5 size-1 shrink-0 rounded-full bg-pri-base\"}],\"Type-safe inputs and structured outputs\"]}],[\"$\",\"li\",\"One MCP server exposes your entire API surface\",{\"className\":\"flex items-start gap-1.5 text-neu-700\",\"children\":[[\"$\",\"span\",null,{\"className\":\"mt-1.5 size-1 shrink-0 rounded-full bg-pri-base\"}],\"One MCP server exposes your entire API surface\"]}]]}],[\"$\",\"div\",null,{\"className\":\"mt-auto pt-5\",\"children\":[\"$\",\"$Ld\",null,{\"className\":\"relative flex items-center justify-center gap-2.5 font-normal text-base/none text-neu-0 bg-neu-900 hover:bg-neu-800 active:bg-neu-700 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 dark:data-[variant=secondary]:bg-neu-100/80 dark:data-[variant=secondary]:hover:bg-neu-200/50 data-[variant=secondary]:text-neu-900 data-[variant=secondary]:hover:bg-neu-200/75 data-[variant=secondary]:active:bg-neu-200/90 data-[variant=tertiary]:bg-neu-100 data-[variant=tertiary]:text-neu-900 data-[variant=tertiary]:h
151over:bg-neu-200 data-[variant=tertiary]:active:bg-neu-300 gql-focus-visible [aria-disabled]:bg-neu-800 aria-disabled:pointer-events-none dark:data-[variant=tertiary]:bg-neu-900/10 dark:data-[variant=tertiary]:text-neu-900 dark:data-[variant=tertiary]:hover:bg-neu-900/[.125] dark:data-[variant=tertiary]:active:bg-neu-800/20 dark:data-[variant=tertiary]:ring-1 dark:data-[variant=tertiary]:ring-inset dark:data-[variant=tertiary]:ring-neu-900/20\",\"aria-disabled\":\"$undefined\",\"data-size\":\"md\",\"data-variant\":\"secondary\",\"href\":\"/blog/2025-10-14-announcing-ai-wg/\",\"variant\":\"secondary\",\"children\":[\"Join the AI Working Group\",[\"$\",\"svg\",null,{\"width\":40,\"height\":40,\"fill\":\"currentColor\",\"viewBox\":\"0 0 40 40\",\"className\":\"size-4 shrink-0 -rotate-90 text-neu-900\",\"children\":\"$1c\"}]]}]}]]}],[\"$\",\"div\",\"RAG Applications\",{\"className\":\"flex flex-col border border-neu-200 bg-neu-0 p-6 dark:border-neu-50 lg:p-7\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[[\"$\",\"svg\",null,{\"width\":40,\"height\":40,\"fill\":\"currentColor\",\"viewBox\":\"0 0 40 40\",\"className\":\"size-7 text-pri-base dark:text-pri-light\",\"children\":\"$16\"}],[\"$\",\"h3\",null,{\"className\":\"typography-h4\",\"children\":\"RAG Applications\"}]]}],[\"$\",\"p\",null,{\"className\":\"typography-body-md mt-3 flex-1 text-pretty text-neu-800\",\"children\":\"Power Retrieval-Augmented Generation with GraphQL. Query your knowledge base with precision â fetch documents, embeddings, and cross-references in a single request. No more REST pagination + client-side merging.\"}],[\"$\",\"div\",null,{\"className\":\"mt-5\",\"children\":[\"$\",\"$L1e\",null,{}]}],[\"$\",\"ul\",null,{\"className\":\"typography-body-sm mt-5 flex flex-col gap-1.5\",\"children\":[[\"$\",\"li\",\"Fetch documents + embeddings in one call\",{\"className\":\"flex items-start gap-1.5 text-neu-700\",\"children\":[[\"$\",\"span\",null,{\"className\":\"mt-1.5 size-1 shrink-0 rounded-full bg-pri-base\"}],\"Fetch documents + embeddings in one call\"]}],[\"$\",\"li\",\"Join data across collections and sources\",{\"className\":\"flex items-start gap-1.5 text-neu-700\",\"children\":[[\"$\",\"span\",null,{\"className\":\"mt-1.5 size-1 shrink-0 rounded-full bg-pri-base\"}],\"Join data across collections and sources\"]}],[\"$\",\"li\",\"Minimize context window waste with field selection\",{\"className\":\"flex items-start gap-1.5 text-neu-700\",\"children\":[[\"$\",\"span\",null,{\"className\":\"mt-1.5 size-1 shrink-0 rounded-full bg-pri-base\"}],\"Minimize context window waste with field selection\"]}]]}],[\"$\",\"div\",null,{\"className\":\"mt-auto pt-5\",\"children\":[\"$\",\"$Ld\",null,{\"className\":\"relative flex items-center justify-center gap-2.5 font-normal text-base/none text-neu-0 bg-neu-900 hover:bg-neu-800 active:bg-neu-700 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 dark:data-[variant=secondary]:bg-neu-100/80 dark:data-[variant=secondary]:hover:bg-neu-200/50 data-[variant=secondary]:text-neu-900 data-[variant=secondary]:hover:bg-neu-200/75 data-[variant=secondary]:active:bg-neu-200/90 data-[variant=tertiary]:bg-neu-100 data-[variant=tertiary]:text-neu-900 data-[variant=tertiary]:hover:bg-neu-200 data-[variant=tertiary]:active:bg-neu-300 gql-focus-visible [aria-disabled]:bg-neu-800 aria-disabled:pointer-events-none dark:data-[variant=tertiary]:bg-neu-900/10 dark:data-[variant=tertiary]:text-neu-900 dark:data-[variant=tertiary]:hover:bg-neu-900/[.125] dark:data-[variant=tertiary]:active:bg-neu-800/20 dark:data-[variant=tertiary]:ring-1 dark:data-[variant=tertiary]:ring-inset dark:data-[variant=tertiary]:ring-neu-900/20\",\"aria-disabled\":\"$undefined\",\"data-size\":\"md\",\"data-variant\":\"secondary\",\"href\":\"/resources/ai\",\"variant\":\"secondary\",\"children\":[\"Explore AI resources\",[\"$\",\"svg\",null,{\"width\":40,\"height\":40,\"fill\":\"currentColor\",\"viewBox\":\"0 0 40 40\",\"className\":\"size-4 shrink-0 -rotate-90 text-neu-900\",\"children\":\"$1c\"}]]}]}]]}],[\"$\",\"div\",\"AI Agents \u0026 Tool Calling\",{\"className\":\"flex flex-col border border-neu-200 bg-neu-0 p-6 dark:border-neu-50 lg:p-7\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[[\"$\",\"svg\",null,{\"width\":40,\"height\"
151:40,\"fill\":\"currentColor\",\"viewBox\":\"0 0 40 40\",\"className\":\"size-7 text-pri-base dark:text-pri-light\",\"children\":\"$1f\"}],[\"$\",\"h3\",null,{\"className\":\"typography-h4\",\"children\":\"AI Agents \u0026 Tool Calling\"}]]}],[\"$\",\"p\",null,{\"className\":\"typography-body-md mt-3 flex-1 text-pretty text-neu-800\",\"children\":\"Give AI agents structured, type-safe access to your data layer. GraphQL's query composition lets LLMs build complex, multi-step data fetches in a single round-trip â calling multiple services, filtering, and aggregating.\"}],[\"$\",\"div\",null,{\"className\":\"mt-5\",\"children\":[\"$\",\"$L21\",null,{}]}],[\"$\",\"ul\",null,{\"className\":\"typography-body-sm mt-5 flex flex-col gap-1.5\",\"children\":[[\"$\",\"li\",\"Agents compose queries at inference time\",{\"className\":\"flex items-start gap-1.5 text-neu-700\",\"children\":[[\"$\",\"span\",null,{\"className\":\"mt-1.5 size-1 shrink-0 rounded-full bg-pri-base\"}],\"Agents compose queries at inference time\"]}],[\"$\",\"li\",\"Real-time subscriptions for streaming agents\",{\"className\":\"flex items-start gap-1.5 text-neu-700\",\"children\":[[\"$\",\"span\",null,{\"className\":\"mt-1.5 size-1 shrink-0 rounded-full bg-pri-base\"}],\"Real-time subscriptions for streaming agents\"]}],[\"$\",\"li\",\"Single endpoint for all data operations\",{\"className\":\"flex items-start gap-1.5 text-neu-700\",\"children\":[[\"$\",\"span\",null,{\"className\":\"mt-1.5 size-1 shrink-0 rounded-full bg-pri-base\"}],\"Single endpoint for all data operations\"]}]]}],[\"$\",\"div\",null,{\"className\":\"mt-auto pt-5\",\"children\":[\"$\",\"$Ld\",null,{\"className\":\"relative flex items-center justify-center gap-2.5 font-normal text-base/none text-neu-0 bg-neu-900 hover:bg-neu-800 active:bg-neu-700 font-sans h-14 px-8 data-[size=md]:h-12 data-[variant=secondary]:bg-neu-100 dark:data-[variant=secondary]:bg-neu-100/80 dark:data-[variant=secondary]:hover:bg-neu-200/50 data-[variant=secondary]:text-neu-900 data-[variant=secondary]:hover:bg-neu-200/75 data-[variant=secondary]:active:bg-neu-200/90 data-[variant=tertiary]:bg-neu-100 data-[variant=tertiary]:text-neu-900 data-[variant=tertiary]:hover:bg-neu-200 data-[variant=tertiary]:active:bg-neu-300 gql-focus-visible [aria-disabled]:bg-neu-800 aria-disabled:pointer-events-none dark:data-[variant=tertiary]:bg-neu-900/10 dark:data-[variant=tertiary]:text-neu-900 dark:data-[variant=tertiary]:hover:bg-neu-900/[.125] dark:data-[variant=tertiary]:active:bg-neu-800/20 dark:data-[variant=tertiary]:ring-1 dark:data-[variant=tertiary]:ring-inset dark:data-[variant=tertiary]:ring-neu-900/20\",\"aria-disabled\":\"$undefined\",\"data-size\":\"md\",\"data-variant\":\"secondary\",\"href\":\"/blog/2025-07-03-graphql-supercharging-ai/\",\"variant\":\"secondary\",\"children\":[\"Read the blog post\",[\"$\",\"svg\",null,{\"width\":40,\"height\":40,\"fill\":\"currentColor\",\"viewBox\":\"0 0 40 40\",\"className\":\"size-4 shrink-0 -rotate-90 text-neu-900\",\"children\":\"$1c\"}]]}]}]]}]]}]]}],[\"$\",\"section\",null,{\"className\":\"gql-section max-sm:px-0 lg:pb-16 lg:max-xl:px-0 xl:pb-24\",\"children\":[\"$\",\"div\",null,{\"className\":\"gql-container typography-body-lg flex bg-pri-dark text-white dark:bg-pri-darker max-lg:flex-col\",\"children\":[[\"$\",\"div\",null,{\"className\":\"border-pri-light p-6 max-lg:border-b lg:border-r lg:p-16\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"typography-h2 text-balance\",\"children\":[\"Shape the future of\",[\"$\",\"br\",null,{}],\"GraphQL \u0026 AI\"]}],[\"$\",\"p\",null,{\"className\":\"mt-8\",\"children\":\"The GraphQL AI Working Group is open to everyone. Help define how GraphQL powers the next generation of intelligent systems â contribute to specs, share use cases, and collaborate with the community.\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex flex-col *:flex-1\",\"children\":[[\"$\",\"a\",null,{\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"href\":\"https://discord.graphql.org/\",\"className\":\"flex items-center justify-between gap-4 whitespace-pre border-b border-pri-light px-6 py-8 hover:bg-white/10 lg:h-1/2 lg:px-8 lg:pr-12 xl:gap-6\",\"children\":[\"Join the Discord\",[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"fill\":\"#5865f2\",\"viewBox\":\"0 0 20 20\",\"className\":\"size-8 fill-white\",\"children\":[\"$\",\"path\",null,{\"d\":\"M16.956 3.693a16.5 16.5 0 0 0-4.134-1.274 10 10 0 0 0-.526 1.072 15.8 15.8 0 0 0-4.58 0 13 13 0 0 0-.525-1.072c-1.429.239-2.82.667-4.135 1.274C.44 7.553
151-.269 11.323.085 15.043a16.8 16.8 0 0 0 5.065 2.536q.614-.828 1.08-1.747a10.6 10.6 0 0 1-1.708-.82 6 6 0 0 0 .415-.323c3.295 1.507 6.864 1.507 10.119 0 .141.111.272.223.414.324-.546.323-1.112.596-1.709.818a12.3 12.3 0 0 0 1.083 1.75 16.8 16.8 0 0 0 5.064-2.538c.434-4.305-.689-8.045-2.952-11.35m-10.27 9.056c-.99 0-1.8-.9-1.8-2.002s.79-2.001 1.8-2.001c1 0 1.82.9 1.798 2.002 0 1.101-.798 2-1.798 2m6.641 0c-.99 0-1.8-.9-1.8-2.002s.79-2.001 1.8-2.001c1 0 1.82.9 1.8 2.002 0 1.101-.79 2-1.8 2\"}]}]]}],[\"$\",\"a\",null,{\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"href\":\"https://github.com/graphql/ai-wg\",\"className\":\"flex items-center justify-between gap-4 whitespace-pre px-6 py-8 hover:bg-white/10 lg:h-1/2 lg:px-8 lg:pr-12 xl:gap-6\",\"children\":[\"AI Working Group on GitHub\",[\"$\",\"svg\",null,{\"width\":40,\"height\":40,\"fill\":\"currentColor\",\"viewBox\":\"0 0 40 40\",\"className\":\"size-10 -rotate-90 text-pri-light\",\"children\":\"$1c\"}]]}]]}]]}]}]]}],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/4219530aa38316a6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]]],null],null]},[null,[\"$\",\"$L22\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"(main)\",\"children\",\"ai\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L23\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ee72f46acea55a45.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\nhtml {\\n --font-sans: '__hostGrotesk_4b1926', '__hostGrotesk_Fallback_4b1926';\\n --font-mono: '__commitMono_9d2e4e', '__commitMono_Fallback_9d2e4e';\\n}\"}}],[\"$\",\"$L24\",null,{\"attribute\":\"class\",\"children\":[[\"$\",\"$L25\",null,{\"items\":[{\"name\":\"learn\",\"route\":\"/learn\",\"frontMatter\":{\"title\":\"Learn\"},\"type\":\"page\",\"title\":\"Learn\"},{\"name\":\"resources\",\"route\":\"/resources\",\"frontMatter\":{\"title\":\"Resource Hub\"},\"children\":[{\"kind\":\"MdxPage\",\"name\":\"ai\",\"route\":\"/resources/ai\",\"frontMatter\":{\"title\":\"AI\"},\"type\":\"doc\",\"title\":\"AI\"},{\"kind\":\"MdxPage\",\"name\":\"backend\",\"route\":\"/resources/backend\",\"frontMatter\":{\"title\":\"\"},\"type\":\"doc\",\"title\":\"backend\"},{\"kind\":\"MdxPage\",\"name\":\"federation\",\"route\":\"/resources/federation\",\"frontMatter\":{\"title\":\"\"},\"type\":\"doc\",\"title\":\"federation\"},{\"kind\":\"MdxPage\",\"name\":\"frontend\",\"route\":\"/resources/frontend\",\"frontMatter\":{\"title\":\"\"},\"type\":\"doc\",\"title\":\"frontend\"},{\"kind\":\"MdxPage\",\"name\":\"index\",\"route\":\"/resources/index\",\"frontMatter\":{\"title\":\"Resource Hub\"},\"type\":\"doc\",\"title\":\"Resource Hub\"},{\"kind\":\"MdxPage\",\"name\":\"monitoring\",\"route\":\"/resources/monitoring\",\"frontMatter\":{\"title\":\"\"},\"type\":\"doc\",\"title\":\"monitoring\"},{\"kind\":\"MdxPage\",\"name\":\"reading\",\"route\":\"/resources/reading\",\"frontMatter\":{\"title\":\"Reading Resources Library\"},\"type\":\"doc\",\"title\":\"Reading Resources Library\"},{\"kind\":\"MdxPage\",\"name\":\"security\",\"route\":\"/resources/security\",\"frontMatter\":{\"title\":\"\"},\"type\":\"doc\",\"title\":\"security\"},{\"name\":\"spec\",\"route\":\"/resources/spec\",\"frontMatter\":{\"title\":\"Specification\"},\"type\":\"doc\",\"title\":\"Specification\"},{\"name\":\"tools-and-libraries\",\"route\":\"/resources/tools-and-libraries\",\"frontMatter\":{\"title\":\"Tools \u0026 Libraries\"},\"type\":\"doc\",\"title\":\"Tools \u0026 Libraries\"},{\"kind\":\"MdxPage\",\"name\":\"vendors\",\"route\":\"/resources/vendors\",\"frontMatter\":{\"title\":\"Vendors\"},\"type\":\"doc\",\"title\":\"Vendors\"},{\"kind\":\"MdxPage\",\"name\":\"video\",\"route\":\"/resources/video\",\"frontMatter\":{\"title\":\"Video Resources Library\"}
151,\"type\":\"doc\",\"title\":\"Video Resources Library\"}],\"items\":{\"index\":{\"title\":\"Resource Hub\"},\"frontend\":{\"title\":\"\"},\"backend\":{\"title\":\"\"},\"federation\":{\"title\":\"\"},\"ai\":{\"title\":\"AI\"},\"security\":{\"title\":\"\"},\"monitoring\":{\"title\":\"\"},\"tools-and-libraries\":{\"type\":\"page\",\"title\":\"Tools \u0026 Libraries\",\"href\":\"/community/tools-and-libraries\"},\"vendors\":{\"title\":\"Vendors\"},\"spec\":{\"type\":\"page\",\"title\":\"Specification\",\"href\":\"https://spec.graphql.org\",\"newWindow\":true},\"video\":{\"title\":\"Video Resources Library\"},\"reading\":{\"title\":\"Reading Resources Library\"}},\"type\":\"menu\",\"title\":\"Resource Hub\",\"firstChildRoute\":\"/resources/ai\"},{\"name\":\"community\",\"route\":\"/community\",\"frontMatter\":{\"title\":\"Community\"},\"children\":[{\"name\":\"ambassadors\",\"route\":\"/community/ambassadors\",\"frontMatter\":{\"title\":\"Ambassador Program\"},\"type\":\"doc\",\"title\":\"Ambassador Program\"},{\"name\":\"community-channels\",\"route\":\"/community/community-channels\",\"frontMatter\":{\"title\":\"Community Channels\"},\"type\":\"doc\",\"title\":\"Community Channels\"},{\"name\":\"contribute\",\"route\":\"/community/contribute\",\"frontMatter\":{\"title\":\"Contribute to GraphQL\"},\"type\":\"doc\",\"title\":\"Contribute to GraphQL\"},{\"name\":\"events\",\"route\":\"/community/events\",\"frontMatter\":{\"title\":\"Events\"},\"type\":\"doc\",\"title\":\"Events\"},{\"name\":\"foundation\",\"route\":\"/community/foundation\",\"frontMatter\":{\"title\":\"Foundation\"},\"type\":\"doc\",\"title\":\"Foundation\"},{\"name\":\"more-resources\",\"route\":\"/community/more-resources\",\"frontMatter\":{\"title\":\"Community Resources\"},\"type\":\"doc\",\"title\":\"Community Resources\"},{\"name\":\"official-channels\",\"route\":\"/community/official-channels\",\"frontMatter\":{\"title\":\"Official Channels\"},\"type\":\"doc\",\"title\":\"Official Channels\"},{\"name\":\"team\",\"route\":\"/community/team\",\"frontMatter\":{\"title\":\"Team\"},\"type\":\"doc\",\"title\":\"Team\"},{\"name\":\"training-courses\",\"route\":\"/community/training-courses\",\"frontMatter\":{\"title\":\"Training Courses\"},\"type\":\"doc\",\"title\":\"Training Courses\"},{\"name\":\"vendor-channels\",\"route\":\"/community/vendor-channels\",\"frontMatter\":{\"title\":\"Vendor Channels\"},\"type\":\"doc\",\"title\":\"Vendor Channels\"}],\"items\":{\"team\":{\"title\":\"Team\",\"type\":\"page\",\"href\":\"/community/team\"},\"events\":{\"title\":\"Events\",\"type\":\"page\",\"href\":\"/community/events\"},\"official-channels\":{\"title\":\"Official Channels\"},\"training-courses\":{\"title\":\"Training Courses\"},\"community-channels\":{\"title\":\"Community Channels\"},\"vendor-channels\":{\"title\":\"Vendor Channels\"},\"more-resources\":{\"title\":\"Community Resources\"},\"ambassadors\":{\"title\":\"Ambassador Program\"},\"contribute\":{\"title\":\"Contribute to GraphQL\",\"href\":\"/community/contribute/governance\"},\"foundation\":{\"title\":\"Foundation\"}},\"type\":\"menu\",\"title\":\"Community\",\"firstChildRoute\":\"/community/ambassadors\"},{\"name\":\"blog\",\"route\":\"/blog\",\"frontMatter\":{\"title\":\"Blog\"},\"type\":\"page\",\"title\":\"Blog\"},{\"name\":\"ai\",\"route\":\"/ai\",\"frontMatter\":{\"title\":[\"$\",\"span\",null,{\"className\":\"relative block rounded-full bg-pri-base/15 px-2 py-0.5 text-[0.7rem] font-bold uppercase tracking-wide text-pri-dark dark:bg-pri-light/20 dark:text-pri-light [a:has(\u003e\u0026)]:no-underline\",\"children\":\"AI\"}]},\"type\":\"page\",\"title\":\"$26\"},{\"name\":\"conf\",\"route\":\"/conf/2026\",\"frontMatter\":{\"title\":[\"$\",\"span\",null,{\"className\":\"relative block before:absolute before:-inset-x-3 before:-inset-y-1 before:border before:border-current [a:has(\u003e\u0026)]:text-pri-base dark:[a:has(\u003e\u0026)]:text-pri-light [a:hover:has(\u003e\u0026)]:no-underline [a:hover_\u0026]:before:border-transparent\",\"children\":[\"GraphQLConf\",[\"$\",\"span\",null,{\"className\":\"max-xl:hidden\",\"children\":\" 2026\"}]]}]},\"type\":\"page\",\"title\":\"$27\"},{\"name\":\"day\",\"route\":\"/day\",\"frontMatter\":{\"title\":[\"$\",\"span\",null,{\"className\":\"relative block before:absolute before:-inset-x-3 before:-inset-y-1 before:border before:border-current [a:has(\u003e\u0026)]:text-emerald-600 dark:[a:has(\u003e\u0026)]:text-emerald-400 [a:hover:has(\u003e\u0026)]:no-underline [a:hover_\u0026]:before:border-transparent\",\"children\":\"GraphQL Days\"}]},\"type\":\"page\",\"title\":\"$2b\"},{\"name\":\"graphql-js\",\"route\":\"/graphql-js\",\"frontMatter\":{\"title\":\"GraphQL.JS Tutorial\"},\"type\":\"page\",\"title\":\"GraphQL.JS Tutorial\"}]}],[\"$\",\"$L2c\",null,{\"includePlaceholder\":false,\"toc\":[],\"docsDirectories\":[\"$2d\",{\"kind\":\"MdxPage\",\"name\":\"ai\",\"route\":\"/resources/ai\",\"frontMatter\":\"$2f\",\"type\":\"doc\",\"t
151itle\":\"AI\",\"isUnderCurrentDocsTree\":false},{\"kind\":\"MdxPage\",\"name\":\"backend\",\"route\":\"/resources/backend\",\"frontMatter\":\"$30\",\"type\":\"doc\",\"title\":\"backend\",\"isUnderCurrentDocsTree\":false},{\"kind\":\"MdxPage\",\"name\":\"federation\",\"route\":\"/resources/federation\",\"frontMatter\":\"$31\",\"type\":\"doc\",\"title\":\"federation\",\"isUnderCurrentDocsTree\":false},{\"kind\":\"MdxPage\",\"name\":\"frontend\",\"route\":\"/resources/frontend\",\"frontMatter\":\"$32\",\"type\":\"doc\",\"title\":\"frontend\",\"isUnderCurrentDocsTree\":false},{\"kind\":\"MdxPage\",\"name\":\"index\",\"route\":\"/resources/index\",\"frontMatter\":\"$33\",\"type\":\"doc\",\"title\":\"Resource Hub\",\"isUnderCurrentDocsTree\":false},{\"kind\":\"MdxPage\",\"name\":\"monitoring\",\"route\":\"/resources/monitoring\",\"frontMatter\":\"$34\",\"type\":\"doc\",\"title\":\"monitoring\",\"isUnderCurrentDocsTree\":false},{\"kind\":\"MdxPage\",\"name\":\"reading\",\"route\":\"/resources/reading\",\"frontMatter\":\"$35\",\"type\":\"doc\",\"title\":\"Reading Resources Library\",\"isUnderCurrentDocsTree\":false},{\"kind\":\"MdxPage\",\"name\":\"security\",\"route\":\"/resources/security\",\"frontMatter\":\"$36\",\"type\":\"doc\",\"title\":\"security\",\"isUnderCurrentDocsTree\":false},{\"name\":\"spec\",\"route\":\"/resources/spec\",\"frontMatter\":\"$37\",\"type\":\"doc\",\"title\":\"Specification\",\"isUnderCurrentDocsTree\":false},{\"name\":\"tools-and-libraries\",\"route\":\"/resources/tools-and-libraries\",\"frontMatter\":\"$38\",\"type\":\"doc\",\"title\":\"Tools \u0026 Libraries\",\"isUnderCurrentDocsTree\":false},{\"kind\":\"MdxPage\",\"name\":\"vendors\",\"route\":\"/resources/vendors\",\"frontMatter\":\"$39\",\"type\":\"doc\",\"title\":\"Vendors\",\"isUnderCurrentDocsTree\":false},{\"kind\":\"MdxPage\",\"name\":\"video\",\"route\":\"/resources/video\",\"frontMatter\":\"$3a\",\"type\":\"doc\",\"title\":\"Video Resources Library\",\"isUnderCurrentDocsTree\":false},\"$3b\",{\"name\":\"ambassadors\",\"route\":\"/community/ambassadors\",\"frontMatter\":\"$57\",\"type\":\"doc\",\"title\":\"Ambassador Program\",\"isUnderCurrentDocsTree\":false},{\"name\":\"community-channels\",\"route\":\"/community/community-channels\",\"frontMatter\":\"$58\",\"type\":\"doc\",\"title\":\"Community Channels\",\"isUnderCurrentDocsTree\":false},{\"name\":\"contribute\",\"route\":\"/community/contribute\",\"frontMatter\":\"$59\",\"type\":\"doc\",\"title\":\"Contribute to GraphQL\",\"isUnderCurrentDocsTree\":false},{\"name\":\"events\",\"route\":\"/community/events\",\"frontMatter\":\"$5a\",\"type\":\"doc\",\"title\":\"Events\",\"isUnderCurrentDocsTree\":false},{\"name\":\"foundation\",\"route\":\"/community/foundation\",\"frontMatter\":\"$5b\",\"type\":\"doc\",\"title\":\"Foundation\",\"isUnderCurrentDocsTree\":false},{\"name\":\"more-resources\",\"route\":\"/community/more-resources\",\"frontMatter\":\"$5c\",\"type\":\"doc\",\"title\":\"Community Resources\",\"isUnderCurrentDocsTree\":false},{\"name\":\"official-channels\",\"route\":\"/community/official-channels\",\"frontMatter\":\"$5d\",\"type\":\"doc\",\"title\":\"Official Channels\",\"isUnderCurrentDocsTree\":false},{\"name\":\"team\",\"route\":\"/community/team\",\"frontMatter\":\"$5e\",\"type\":\"doc\",\"title\":\"Team\",\"isUnderCurrentDocsTree\":false},{\"name\":\"training-courses\",\"route\":\"/community/training-courses\",\"frontMatter\":\"$5f\",\"type\":\"doc\",\"title\":\"Training Courses\",\"isUnderCurrentDocsTree\":false},{\"name\":\"vendor-channels\",\"route\":\"/community/vendor-channels\",\"frontMatter\":\"$60\",\"type\":\"doc\",\"title\":\"Vendor Channels\",\"isUnderCurrentDocsTree\":false},\"$61\",\"$79\",\"$7b\",\"$7d\",\"$7f\",\"$81\"],\"fullDirectories\":[{\"name\":\"learn\",\"route\":\"/learn\",\"frontMatter\":\"$2e\",\"type\":\"page\",\"title\":\"Learn\"},{\"name\":\"resources\",\"route\":\"/resources\",\"frontMatter\":\"$3c\",\"children\":[\"$3e\",\"$3f\",\"$40\",\"$41\",\"$42\",\"$43\",\"$44\",\"$45\",\"$46\",\"$47\",\"$48\",\"$49\"],\"items\":\"$4a\",\"type\":\"menu\",\"title\":\"Resource Hub\"},{\"name\":\"community\",\"route\":\"/community\",\"frontMatter\":\"$62\",\"children\":[\"$64\",\"$65\",\"$66\",\"$67\",\"$68\",\"$69\",\"$6a\",\"$6b\",\"$6c\",\"$6d\"],\"items\":\"$6e\",\"type\":\"menu\",\"title\":\"Community\"},{\"name\":\"faq\",\"route\":\"/faq\",\"frontMatter\":{\"title\":\"FAQ\"},\"type\":\"hidden\",\"title\":\"FAQ\"},{\"name\":\"blog\",\"route\":\"/blog\",\"frontMatter\":\"$7a\",\"type\":\"page\",\"title\":\"Blog\"},{\"name\":\"ai\",\"route\":\"/ai\",\"frontMatter\":\"$7c\",\"type\":\"page\",\"title\":\"$26\"},{\"name\":\"conf\",\"route\":\"/conf/2026\",\"frontMatter\":\"$7e\",\"type\":\"page\",\"title\":\"$27\"},{\"name\":\"day\",\"route\":\"/day\",\"frontMatter\":\"$80\",\"type\":\"page\",\"title\":\"$2b\"},{\"name\":\"graphql-js\",\"route\":\"/graphql-js\",\"frontMatter\":\"$82\",\"type\":\"page\",\"title\":\"GraphQL.JS Tutorial\"}],\"asPopover\":true}],[\"$\",\"div\",null,{\"className\":\"isolate bg-neu-0 text-neu-900 antialiased\",\"children\":[\"$\",\"$L22\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"(main)\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L23\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]}],[\"$\",\"footer\",null,{\"className\":\"relative isolate !bg-neu-100 text-neu-900 dark:!bg-neu-0 max-md:px-0 max-md:pt-0\",\"children\":[[\"$\",\"div\",null,{\"role\":\"presentation\",\"className\":\"pointer-events-none absolute inset-0 z-[1] [--start-1:rgba(255,204,239,.05)] [--end-1:hsl(var(--color-pri-base)/.8)] dark:[--start-1:hsl(var(--color-pri-darker))] dark:[--end-1:hsl(var(--color-pri-base)/.9)] [--start-2:transparent] [--end-2:hsl(var(--color-pri-base)/.6)] dark:[--start-2:rgba(255,204,239,.1)] dark:[--end-2:hsl(var(--color-pri-base)/.8)] mix-blend-darken dark:mix-blend-lighten max-sm:![mask-size:300vw_200px] max-sm:![mask-position:center_calc(100%-100px)] sm:max-lg:![mask-origin:bottom] sm:max-lg:![mask-size:250%_300px] sm:max-lg:![mask-position:center_calc(100%-30px)] max-lg:rotate-180 \",\"style\":{\"maskImage\":\"url(/_next/static/media/blur-bean.d5aa6d13.webp)\",\"WebkitMaskImage\":\"url(/_next/static/media/blur-bean.d5aa6d13.webp)\",\"maskPosition\":\"center 260px\",\"WebkitMaskPosition\":\"center 260px\",\"maskSize\":\"200% 100%\",\"WebkitMaskSize\":\"200% 100%\",\"maskRepeat\":\"no-repeat\",\"WebkitMaskRepeat\":\"no-repeat\",\"maskOrigin\":\"top\"},\"children\":[[\"$\",\"div\",null,{\"className\":\"absolute inset-0 bg-[linear-gradient(180deg,var(--start-1)_0%,var(--end-1)_200%)]\",\"style\":{\"--stripe-width\":\"12px\",\"--angle\":\"90deg\",\"maskImage\":\"repeating-linear-gradient(var(--angle), transparent, transparent var(--stripe-width), black var(--stripe-width), black calc(var(--stripe-width) * 2))\",\"WebkitMaskImage\":\"repeating-linear-gradient(var(--angle), transparent, transparent var(--stripe-width), black var(--stripe-width), black calc(var(--stripe-width) * 2))\"}}],[\"$\",\"div\",null,{\"className\":\"absolute inset-0 bg-[linear-gradient(180deg,var(--start-2)_0%,var(--end-2)_200%)]\",\"style\":{\"--stripe-width\":\"12px\",\"--angle\":\"90deg\",\"maskImage\":\"repeating-linear-gradient(var(--angle), black, black var(--stripe-width), transparent var(--stripe-width), transparent calc(var(--stripe-width) * 2))\",\"WebkitMaskImage\":\"repeating-linear-gradient(var(--angle), black, black var(--stripe-width), transparent var(--stripe-width), transparent calc(var(--stripe-width) * 2))\"}}]]}],[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-[120rem] border-neu-400 dark:border-neu-100 xl:border-t 3xl:border-x\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-wrap justify-between gap-4 p-4 max-md:w-full md:p-6 2xl:px-10\",\"children\":[[\"$\",\"$Ld\",null,{\"href\":\"/\",\"className\":\"nextra-logo flex items-center\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"style\":{\"fill\":\"color(display-p3 .8824 0 .5961)\"},\"viewBox\":\"0 0 367 100\",\"className\":\"h-6\",\"title\":\"GraphQL\",\"children\":[[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"d\":\"m50 6.468 37.7 21.766v43.532L50 93.532 12.3 71.766V28.234zM16.53 30.676v31.976l27.692-47.964zM50 13.14 18.078 68.43h63.844zm27.692 59.52H22.308L50 88.648zm5.778-10.008L55.778 14.688 83.47 30.676z\",\"clipRule\":\"evenodd\"}],[\"$\",\"circle\",null,{\"cx\":14.41,\"cy\":29.45,\"r\":8.91}],[\"$\",\"circle\",null,{\"cx\":14.41,\"cy\":70.545,\"r\":8.91}],[\"$\",\"circle\",null,{\"cx\":50,\"cy\":91.09,\"r\":8.91}],[\"$\",\"circle\",null,{\"cx\":85.585,\"cy\":70.545,\"r\":8.91}],[\"$\",\"circle\",null,{\"cx\":85.585,\"cy\":29.455,\"r\":8.91}],[\"$\",\"circle\",null,{\"cx\":50,\"cy\":8.91,\"r\":8.91}],[\"$\",\"path\",null,{\"d\":\"$83\"}]]}]}],[\"$\",\"div\",null,{\"className\":\"typography-menu flex items-center *:rounded-none dark:*:text-neu-900 md:hidden\",\"children\":[\"$\",\"$L84\",null,{}]}]]}],[\"$\",\"div\",null,{\"className\":\"grid grid-cols-2 gap-px bg-neu-400 py-px dark:bg-neu-100 lg:grid-cols-5\",\"children\":[[[\"$\",\"div\",\"0\",{\"className\":\"typography-menu relative bg-neu-100 py-4 dark:bg-neu-0 lg:py-6 3xl:py-10\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"font-bold lg:mb-4 3xl:mb-10\",\"children\":[\"$\",\"$Ld\",null,{\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"href\":\"/learn\",\"children\":\"Learn\"}]}],[[\"$\",\"$Ld\",null,{\"href\":\"/learn\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":\"Introduction\"}],[\"$\",\"$Ld\",null,{\"href\":\"/learn/best-practices\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":\"Best Practices\"}],[\"$\",\"$Ld\",null,{\"href\":\"/faq\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":[\"$\",\"span\",null,{\"children\":[[\"$\",\"span\",null,{\"className\":\"max-md:hidden\",\"children\":\"Frequently Asked Questions\"}],[\"$\",\"span\",null,{\"className\":\"md:hidden\",\"children\":\"FAQ\"}]]}]}],[\"$\",\"$Ld\",null,{\"href\":\"/community/resources/training-courses\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":\"Training Courses\"}]]]}],[\"$\",\"div\",\"1\",{\"className\":\"typography-menu relative bg-neu-100 py-4 dark:bg-neu-0 lg:py-6 3xl:py-10\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"font-bold lg:mb-4 3xl:mb-10\",\"children\":[\"$\",\"span\",null,{\"className\":\"block p-4 md:px-6 2xl:px-10\",\"children\":\"Code\"}]}],[[\"$\",\"a\",null,{\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"href\":\"https://github.com/graphql\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":\"GitHub\"}],[\"$\",\"a\",null,{\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"href\":\"https://spec.graphql.org\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":\"Specification\"}],[\"$\",\"$Ld\",null,{\"href\":\"/code\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":\"Libraries \u0026 Tools\"}],[\"$\",\"$Ld\",null,{\"href\":\"/code/?tags=services\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":\"Services \u0026 Vendors\"}]]]}],[\"$\",\"div\",\"2\",{\"className\":\"typography-menu relative bg-neu-100 py-4 dark:bg-neu-0 lg:py-6 3xl:py-10\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"font-bold lg:mb-4 3xl:mb-10\",\"children\":[\"$\",\"span\",null,{\"className\":\"block p-4 md:px-6 2xl:px-10\",\"children\":\"Community\"}]}],[[\"$\",\"$Ld\",null,{\"href\":\"/community/resources/official-channels\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":\"Resources\"}],[\"$\",\"$Ld\",null,{\"href\":\"/community/events\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":\"Events\"}],[\"$\",\"$Ld\",null,{\"href\":\"/community/contribute/essential-links\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":[\"$\",\"span\",null,{\"children\":[\"Contribute\",[\"$\",\"span\",null,{\"className\":\"max-md:hidden\",\"children\":\" to GraphQL\"}]]}]}],[\"$\",\"a\",null,{\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"href\":\"https://landscape.graphql.org\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":\"Landscape\"}],[\"$\",\"a\",null,{\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"href\":\"https://store.graphql.org/\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":\"Shop\"}]]]}],[\"$\",\"div\",\"3\",{\"className\":\"typography-menu relative bg-neu-100 py-4 dark:bg-neu-0 lg:py-6 3xl:py-10\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"font-bold lg:mb-4 3xl:mb-10\",\"children\":[\"$\",\"span\",null,{\"className\":\"block p-4 md:px-6 2xl:px-10\",\"children\":\"\u0026 More\"}]}],[[\"$\",\"$Ld\",null,{\"href\":\"/blog\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":\"Blog\"}],[\"$\",\"$Ld\",null,{\"href\":\"/foundation\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":\"GraphQL Foundation\"}],[\"$\",\"$Ld\",null,{\"href\":\"/foundation/community-grant\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":\"Community Grant\"}],[\"$\",\"$Ld\",null,{\"href\":\"/brand\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":\"Brand Guidelines\"}],[\"$\",\"$Ld\",null,{\"href\":\"/codeofconduct\",\"className\":\"gql-focus-visible block p-4 underline-offset-4 hover:underline focus-visible:!-outline-offset-4 md:px-6 2xl:px-10\",\"children\":\"Code of Conduct\"}]]]}]],[\"$\",\"div\",null,{\"className\":\"flex flex-col max-lg:contents\",\"children\":[[\"$\",\"$Ld\",null,{\"href\":\"/conf/2026\",\"className\":\"dark gql-focus-visible group relative inline-flex flex-col bg-pri-base text-neu-900 after:absolute after:inset-0 hover:after:bg-white/[.025] dark:bg-pri-dark z-[2] col-span-full flex-1 max-lg:row-start-1\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-1 flex-col gap-4 border-b border-pri-lighter p-4 dark:border-pri-light/50\",\"children\":[\"$\",\"h2\",null,{\"className\":\"font-mono text-2xl uppercase leading-none md:text-3xl\",\"children\":[[\"$\",\"span\",null,{\"className\":\"max-xs:hidden\",\"children\":\"Join\"}],\" GraphQLConf 2026\"]}]}],[\"$\",\"div\",null,{\"className\":\"typography-body-sm flex font-sans\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex-1 justify-center border-r border-pri-lighter p-4 dark:border-pri-light/50\",\"children\":[\"May \",[\"$\",\"span\",null,{\"className\":\"whitespace-nowrap\",\"children\":\"19â20\"}],[\"$\",\"br\",null,{}],\"Fremont, California\"]}],[\"$\",\"div\",null,{\"className\":\"flex w-[min(calc(25%-.5px),73.5px)] items-center justify-center\",\"children\":[\"$\",\"svg\",null,{\"width\":40,\"height\"
151:40,\"fill\":\"currentColor\",\"viewBox\":\"0 0 40 40\",\"className\":\"size-10 -rotate-90 text-pri-lighter transition group-hover:translate-x-0.5 group-hover:text-neu-900\",\"children\":\"$1c\"}]}]]}]]}],[\"$\",\"div\",null,{\"className\":\"flex items-center gap-1 *:p-2 *:outline-none *:transition-colors hover:*:text-primary focus:*:text-primary focus:*:ring focus:*:ring-primary [\u0026_svg]:h-5 gql-all-anchors-focusable col-span-full gap-px text-pri-base *:flex *:flex-1 *:items-center *:justify-center *:bg-neu-100 *:dark:bg-neu-0 max-sm:*:aspect-square lg:*:aspect-square [\u0026\u003ea:focus]:text-current [\u0026\u003ea:focus]:!-outline-offset-[6px] [\u0026\u003ea:focus]:ring-transparent [\u0026\u003ea:hover]:bg-neu-0/90 [\u0026\u003ea:hover]:text-current [\u0026_svg]:!h-8\",\"children\":[[\"$\",\"a\",null,{\"href\":\"https://github.com/graphql\",\"aria-label\":\"GitHub\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"fill\":\"currentColor\",\"viewBox\":\"0 0 30 30\",\"children\":[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"d\":\"M15.1.413a14.81 14.81 0 0 0-4.684 28.862c.742.138 1.012-.32 1.012-.712 0-.35-.013-1.283-.02-2.518-4.12.893-4.99-1.987-4.99-1.987-.675-1.71-1.643-2.165-1.643-2.165-1.345-.918.1-.9.1-.9 1.488.105 2.27 1.525 2.27 1.525 1.32 2.265 3.466 1.61 4.31 1.23.133-.955.515-1.608.94-1.978-3.29-.375-6.747-1.645-6.747-7.32 0-1.615.577-2.937 1.525-3.975-.15-.372-.66-1.88.145-3.917 0 0 1.242-.4 4.075 1.517a14.3 14.3 0 0 1 3.705-.5 14.2 14.2 0 0 1 3.707.5c2.826-1.915 4.068-1.517 4.068-1.517.807 2.037.3 3.545.15 3.92.95 1.035 1.52 2.357 1.52 3.975 0 5.687-3.462 6.94-6.76 7.305.53.457 1.005 1.36 1.005 2.742 0 1.98-.02 3.575-.02 4.063 0 .395.267.857 1.02.712A14.816 14.816 0 0 0 15.101.413\",\"clipRule\":\"evenodd\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://discord.graphql.org\",\"aria-label\":\"Discord\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"fill\":\"#5865f2\",\"viewBox\":\"0 0 20 20\",\"className\":\"fill-current\",\"children\":\"$85\"}]}],[\"$\",\"a\",null,{\"href\":\"https://twitter.com/graphql\",\"aria-label\":\"Twitter\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"fill\":\"currentColor\",\"viewBox\":\"0 0 20 20\",\"children\":[\"$\",\"path\",null,{\"d\":\"m11.396 9.473 5.461-6.216h-1.293L10.82 8.654 7.034 3.257H2.666l5.726 8.161-5.726 6.518H3.96l5.006-5.7 4 5.7h4.367M4.427 4.212h1.987l9.149 12.816h-1.988\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://linkedin.com/company/graphql-foundation\",\"aria-label\":\"LinkedIn\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"fill\":\"currentColor\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeWidth\":0,\"viewBox\":\"0 0 24 24\",\"children\":[[\"$\",\"path\",null,{\"stroke\":\"none\",\"d\":\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6M2 9h4v12H2z\"}],[\"$\",\"circle\",null,{\"cx\":4,\"cy\":4,\"r\":2,\"stroke\":\"none\"}]]}]}],false]}]]}]]}],[\"$\",\"div\",null,{\"className\":\"relative flex items-center justify-between gap-4 p-4 max-md:justify-center md:px-6 2xl:px-10\",\"children\":[[\"$\",\"div\",null,{\"className\":\"typography-menu flex items-center *:rounded-none dark:*:text-neu-900 max-md:hidden\",\"children\":[\"$\",\"$L84\",null,{}]}],[\"$\",\"p\",null,{\"className\":\"typography-body-xs flex flex-col text-pretty max-md:gap-5\",\"children\":[\"Copyright © \",2026,\" The GraphQL Foundation. All rights reserved.\"]}]]}]]}]]}]]}]]],null],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/cd428ce74986782b.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/b74d54f76d8ddaab.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"scroll-smooth motion-reduce:scroll-auto\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"style\",null,{\"children\":\"html { scroll-padding-top: 5rem }\"}]}],[\"$\",\"body\",null,{\"className\":\"bg-neu-0\",\"children\":[[\"$\",\"$L87\",null,{}],[\"$\",\"$L22\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L23\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[\"$\",\"$L88\",null,{}],\"notFoundStyles\":[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ee72f46acea55a45.
151css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]]}]]}]]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L89\"],\"globalErrorComponent\":\"$8a\",\"missingSlots\":\"$W8b\"}]\n"])</script>
151<script>self.__next_f.push([1,"89:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"GraphQL for AI Agents, MCP, and LLM Tools | GraphQL\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"How AI agents use GraphQL: schema introspection for tool discovery, typed inputs and outputs, and field selection that keeps responses to what was asked for.\"}],[\"$\",\"meta\",\"4\",{\"name\":\"application-name\",\"content\":\"GraphQL.ORG\"}],[\"$\",\"meta\",\"5\",{\"name\":\"keywords\",\"content\":\"GraphQL\"}],[\"$\",\"link\",\"6\",{\"rel\":\"canonical\",\"href\":\"https://graphql.org/ai/\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:title\",\"content\":\"GraphQL for AI Agents, MCP, and LLM Tools\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:description\",\"content\":\"How AI agents use GraphQL: schema introspection for tool discovery, typed inputs and outputs, and field selection that keeps responses to what was asked for.\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:url\",\"content\":\"https://graphql.org/ai/\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image\",\"content\":\"https://graphql.org/img/og-image.png\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:site\",\"content\":\"@graphql\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"GraphQL for AI Agents, MCP, and LLM Tools\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"How AI agents use GraphQL: schema introspection for tool discovery, typed inputs and outputs, and field selection that keeps responses to what was asked for.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://graphql.org/img/og-image.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"icon\",\"href\":\"/icon.svg?38f42ab34b981180\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"meta\",\"18\",{\"name\":\"next-size-adjust\"}]]\n9:null\n"])</script>
151</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.