ax-check.com
by Gauge
A
Apollo GraphQL
apollographql.com
ax-check.com
Checked 22 October 2026
A
100/100
Agents need your login
Apollo's docs and quickstart are clean, but pricing details slip
21 of 23 checklist items passed, including quickstart, CLI, and MCP setup. One agent of three gave only vague pricing instead of exact figures.
1 fix to start with
Concrete changes, backed by what we found.
Recorded coding sessions
Same task, 3 models, no apollographql.com account. Recorded 22 October 2026 on Pi.
3 recorded · 1m 7s
1m 7s · recorded
Session findings
Select a finding to see it in context.
›Thinking…
The user is asking about Apollo GraphQL. I need to determine whether there's an available product/SDK. Let me check the repository and environment.
Apollo GraphQL: Apollo Client is an open-source library that can be used against public GraphQL APIs (e.g., GraphQL PokéAPI, GitHub). However, Apollo GraphOS (the hosted platform) requires an API key / account registration — I can't sign up. So, can I handle "hosted products via SDK or API"? Apollo Client works against public GraphQL endpoints without requiring credentials. Apollo Router / Federation requires running services locally — that's not allowed.
Let me quickly check the state of the repository and the availability of npm.
I'll take a quick look at the environment first.
ls -la /sandbox/repo 2>/dev/null | head -20; echo "---"; node --version 2>/dev/null; npm --version 2>/dev/null
total 16
total 16 drwxr-xr-x 3 root root 4096 Sep 18 08:00 . drwxr-xr-x 7 root root 4096 Oct 22 15:51 .. drwxr-xr-x 8 root root 4096 Sep 24 20:05 .git -rw-r--r-- 1 root root 408 Sep 18 08:00 .gitignore --- v22.23.2 10.9.8
Recorded tool call
{
"type": "tool_call",
"seq": 4,
"ts": "2026-10-22T15:51:32.804Z",
"name": "bash",
"turn": 1,
"input": {
"command": "ls -la /sandbox/repo 2>/dev/null | head -20; echo \"---\"; node --version 2>/dev/null; npm --version 2>/dev/null"
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-af351b46c0177915",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 5,
"ts": "2026-10-22T15:51:33.116Z",
"turn": 1,
"output": {
"content": [
{
"text": "total 16\ndrwxr-xr-x 3 root root 4096 Sep 18 08:00 .\ndrwxr-xr-x 7 root root 4096 Oct 22 15:51 ..\ndrwxr-xr-x 8 root root 4096 Sep 24 20:05 .git\n-rw-r--r-- 1 root root 408 Sep 18 08:00 .gitignore\n---\nv22.23.2\n10.9.8\n",
"type": "text"
}
]
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-af351b46c0177915",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Empty repository. Plan: Build a small Apollo Client example that uses the hosted GraphQL service. Apollo GraphOS itself (studio/registry) requires an API key from a paid account — can't be provisioned without credentials. However, "hosted products via SDK or API" — Apollo Client's SDK can be used against hosted GraphQL APIs. The user's request is "build a simple example using Apollo GraphQL."
Options: Use the Apollo Client SDK (npm) against a hosted public GraphQL API, like https://graphql.org/... Public ones: Countries GraphQL API (https://countries.trevorblades.org) — hosted, no key required. This will run as a Node script without needing a local stack.
But wait — will network access work? Let me test it. If blocked, I'll communicate that frankly.
Pricing: Apollo GraphOS pricing — Free tier, paid plans (Team/Enterprise), plus Apollo Router is open source with free core functionality; GraphOS is priced per seat/usage. As of 2024–2025: Free (up to 1M operations?), "Team" around $99/month? I should be careful — I'll tell them it's approximate and recommend they check apollo.dev/pricing. Let me recall: Apollo GraphOS pricing tiers: Free — up to 1M operations/month? Team — $166/month? Actually, Apollo pricing: Free plan; "Team" $450/month (10 users, up to 50M operations); Enterprise is custom. Not confident. I'll present it as a rough estimate with a caveat.
Let me test network access and try npm install apollo client. Apollo Client for Node: Can @apollo/client be used with node-fetch or built-in fetch? Apollo Client v3/v4 — v4 works with Node 18+ fetch. Simpler approach: use @apollo/client in Node with a script. Or even simpler, plain fetch — but that wouldn't be "using Apollo." I'll go with installing @apollo/client.
Proceeding: Create the project, npm install @apollo/client graphql, write a small script that queries countries.trevorblades.org, and run it.
Empty repo with Node 22 available. My plan: use the Apollo Client SDK (npm package) against a hosted public GraphQL API — no local services, no long-running processes. Let me verify network access first.
cd /tmp && curl -s -m 10 -X POST https://countries.trevorblades.org -H 'Content-Type: application/json' -d '{"query":"{ countries(first: 2) { code name } }"}' | head -c 500(no output)
(no output)
Recorded tool call
{
"type": "tool_call",
"seq": 10,
"ts": "2026-10-22T15:51:37.186Z",
"name": "bash",
"turn": 1,
"input": {
"command": "cd /tmp && curl -s -m 10 -X POST https://countries.trevorblades.org -H 'Content-Type: application/json' -d '{\"query\":\"{ countries(first: 2) { code name } }\"}' | head -c 500"
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-9bff353bd92bbe33",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 12,
"ts": "2026-10-22T15:51:37.186Z",
"turn": 1,
"output": {
"content": [
{
"text": "(no output)",
"type": "text"
}
]
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-9bff353bd92bbe33",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
No output — probably blocked. Try other endpoints and verify general network access and access to npm.
curl -s -m 10 -o /dev/null -w "%{http_code}\n" https://registry.npmjs.org/@apollo/client; curl -s -m 10 -o /dev/null -w "%{http_code}\n" https://api.github.com/graphql; curl -s -m 10 -o /dev/null -w "%{http_code}\n" https://countries.trevorblades.orgFailed200
200 403 000 Command exited with code 6
Recorded tool call
{
"type": "tool_call",
"seq": 15,
"ts": "2026-10-22T15:51:38.792Z",
"name": "bash",
"turn": 1,
"input": {
"command": "curl -s -m 10 -o /dev/null -w \"%{http_code}\\n\" https://registry.npmjs.org/@apollo/client; curl -s -m 10 -o /dev/null -w \"%{http_code}\\n\" https://api.github.com/graphql; curl -s -m 10 -o /dev/null -w \"%{http_code}\\n\" https://countries.trevorblades.org"
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-834e2e3913626c60",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 19,
"ts": "2026-10-22T15:51:40.252Z",
"turn": 1,
"output": {
"content": [
{
"text": "200\n403\n000\n\n\nCommand exited with code 6",
"type": "text"
}
],
"details": {}
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-834e2e3913626c60",
"is_error": true,
"tool_kind": "shell"
}›Thinking…
- The npm registry works (200).
- The GitHub API returns 403 — probably due to network egress restrictions (or maybe just the GraphQL endpoint without a token... does api.github.com/graphql return 401 without a token? No, it should return 401. The 403 might be blocked). Let me check whether api.github.com works at all in the first place.
- countries.trevorblades.org: 000, exit 6 = could not resolve host — blocked.
So external GraphQL hosts are probably blocked. Let me check a few more: flyby-graphql.herokuappapp (probably dead), graphqlzero, studio.apollographql.com, router.apollo.dev.
for u in https://api.github.com https://studio.apollographql.com https://graphqlzero.ammora.me/api https://swapi-graphql.netlify.app/.netlify/functions/index https://rickandmortyapi.com/graphql; do code=$(curl -s -m 8 -o /dev/null -w "%{http_code}" "$u"); echo "$u -> $code"; donehttps://api.github.com -> 200
https://api.github.com -> 200 https://studio.apollographql.com -> 200 https://graphqlzero.ammora.me/api -> 000 https://swapi-graphql.netlify.app/.netlify/functions/index -> 301 https://rickandmortyapi.com/graphql -> 204
Recorded tool call
{
"type": "tool_call",
"seq": 22,
"ts": "2026-10-22T15:51:42.952Z",
"name": "bash",
"turn": 1,
"input": {
"command": "for u in https://api.github.com https://studio.apollographql.com https://graphqlzero.ammora.me/api https://swapi-graphql.netlify.app/.netlify/functions/index https://rickandmortyapi.com/graphql; do code=$(curl -s -m 8 -o /dev/null -w \"%{http_code}\" \"$u\"); echo \"$u -> $code\"; done"
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-a8362599d03cb32e",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 23,
"ts": "2026-10-22T15:51:45.025Z",
"turn": 1,
"output": {
"content": [
{
"text": "https://api.github.com -> 200\nhttps://studio.apollographql.com -> 200\nhttps://graphqlzero.ammora.me/api -> 000\nhttps://swapi-graphql.netlify.app/.netlify/functions/index -> 301\nhttps://rickandmortyapi.com/graphql -> 204\n",
"type": "text"
}
]
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-a8362599d03cb32e",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Interesting — the rickandmortyapi.com GraphQL returned 204 (does GET return 204?). Let me try POST-ing a query there. swapi-graphql's netlify returns 301 (redirect). Gonna try POST to rickandmorty.
curl -s -m 10 -X POST https://rickandmortyapi.com/graphql -H 'Content-Type: application/json' -d '{"query":"{ characters(page: 1) { results { id name species } info { count } } }"}' | head -c 600; echo; echo "---swapi---"; curl -sL -m 10 -X POST https://swapi-graphql.netlify.app/.netlify/functions/index -H 'Content-Type: application/json' -d '{"query":"{ allPeople(first:1){ people { name } } }"}' | head -c 300{"data":{"characters":{"results":[{"id":"1","name":"Rick Sanchez","species":"Human"},{"id":"2","name":"Morty Smith","species":"Human"},{"id":"3","name":"Summer
{"data":{"characters":{"results":[{"id":"1","name":"Rick Sanchez","species":"Human"},{"id":"2","name":"Morty Smith","species":"Human"},{"id":"3","name":"Summer Smith","species":"Human"},{"id":"4","name":"Beth Smith","species":"Human"},{"id":"5","name":"Jerry Smith","species":"Human"},{"id":"6","name":"Abadango Cluster Princess","species":"Alien"},{"id":"7","name":"Abradolf Lincler","species":"Human"},{"id":"8","name":"Adjudicator Rick","species":"Human"},{"id":"9","name":"Agency Director","species":"Human"},{"id":"10","name":"Alan Rails","species":"Human"},{"id":"11","name":"Albert Einstein","
---swapi---
{"errors":[{"message":"Missing body"}]}Recorded tool call
{
"type": "tool_call",
"seq": 26,
"ts": "2026-10-22T15:51:47.411Z",
"name": "bash",
"turn": 1,
"input": {
"command": "curl -s -m 10 -X POST https://rickandmortyapi.com/graphql -H 'Content-Type: application/json' -d '{\"query\":\"{ characters(page: 1) { results { id name species } info { count } } }\"}' | head -c 600; echo; echo \"---swapi---\"; curl -sL -m 10 -X POST https://swapi-graphql.netlify.app/.netlify/functions/index -H 'Content-Type: application/json' -d '{\"query\":\"{ allPeople(first:1){ people { name } } }\"}' | head -c 300"
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-aef12f0e5caff52d",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 29,
"ts": "2026-10-22T15:51:48.963Z",
"turn": 1,
"output": {
"content": [
{
"text": "{\"data\":{\"characters\":{\"results\":[{\"id\":\"1\",\"name\":\"Rick Sanchez\",\"species\":\"Human\"},{\"id\":\"2\",\"name\":\"Morty Smith\",\"species\":\"Human\"},{\"id\":\"3\",\"name\":\"Summer Smith\",\"species\":\"Human\"},{\"id\":\"4\",\"name\":\"Beth Smith\",\"species\":\"Human\"},{\"id\":\"5\",\"name\":\"Jerry Smith\",\"species\":\"Human\"},{\"id\":\"6\",\"name\":\"Abadango Cluster Princess\",\"species\":\"Alien\"},{\"id\":\"7\",\"name\":\"Abradolf Lincler\",\"species\":\"Human\"},{\"id\":\"8\",\"name\":\"Adjudicator Rick\",\"species\":\"Human\"},{\"id\":\"9\",\"name\":\"Agency Director\",\"species\":\"Human\"},{\"id\":\"10\",\"name\":\"Alan Rails\",\"species\":\"Human\"},{\"id\":\"11\",\"name\":\"Albert Einstein\",\"\n---swapi---\n{\"errors\":[{\"message\":\"Missing body\"}]}",
"type": "text"
}
]
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-aef12f0e5caff52d",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
The Rick and Morty GraphQL API works via hosted POST. Next, create a small Apollo Client example in /sandbox/repo:
- npm init, install @apollo/client and graphql
- Write a Node script using ApolloClient (v4 supports Node with native fetch). What's the current version of Apollo Client? v4.x (2025). API:
import { ApolloClient, InMemoryCache, gql } from '@apollo/client'andclient.query({ query }). In v4, is gql exported from '@apollo/client'? In v4, gql is still exported from '@apollo/client' (they kept it). Actually, in v4, gql was moved, but... Apollo Client v4 still exports gql from "@apollo/client". Yeah, I think v4 continues to re-export gql. Anyway, let's just install it and check.
Use ESM ("type": "module"). Apollo Client v4 requires Node 18+ and works with native fetch — for node usage, import { ApolloClient, InMemoryCache, HttpLink } from '@apollo/client'. Alright, let's create it.
Network check results: npm works, and the hosted Rick and Morty GraphQL API is reachable. Now I'll scaffold a small Apollo Client project.
cd /sandbox/repo && npm init -y >/dev/null && npm pkg set type=module >/dev/null && npm install @apollo/client graphql 2>&1 | tail -3 && node -e "console.log(require('./node_modules/@apollo/client/package.json').version)"added 11 packages, and audited 12 packages in 6s
added 11 packages, and audited 12 packages in 6s found 0 vulnerabilities 4.3.5
Recorded tool call
{
"type": "tool_call",
"seq": 34,
"ts": "2026-10-22T15:51:52.730Z",
"name": "bash",
"turn": 1,
"input": {
"command": "cd /sandbox/repo && npm init -y >/dev/null && npm pkg set type=module >/dev/null && npm install @apollo/client graphql 2>&1 | tail -3 && node -e \"console.log(require('./node_modules/@apollo/client/package.json').version)\""
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-b4d1246da814417a",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 37,
"ts": "2026-10-22T15:52:00.147Z",
"turn": 1,
"output": {
"content": [
{
"text": "added 11 packages, and audited 12 packages in 6s\n\nfound 0 vulnerabilities\n4.3.5\n",
"type": "text"
}
]
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-b4d1246da814417a",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Apollo Client 4.3.5 has been installed. Next, I'll write the sample script. v4's Node usage: import { ApolloClient, InMemoryCache, gql } from '@apollo/client';. In v4, gql is exported (v4 still exports gql from the main entry). Let me write it and test.
File edits
1 file
Writtensrc/example.mjsView changes
/sandbox/repo/src/example.mjs
Written content · previous contents were not recorded
// Simple Apollo GraphQL example — Apollo Client v4 (Node 18+ native fetch)// Talks to a hosted public GraphQL API: https://rickandmortyapi.com/graphqlimport { ApolloClient, InMemoryCache, gql } from "@apollo/client";const client = new ApolloClient({uri: "https://rickandmortyapi.com/graphql",cache: new InMemoryCache(),});const GET_CHARACTERS = gql`query GetCharacters($page: Int) {characters(page: $page) {info {countpages}results {idnamespeciesstatusorigin {name}}}}`;async function main() {const { data } = await client.query({query: GET_CHARACTERS,variables: { page: 1 },});console.log(`Total characters: ${data.characters.info.count}`);console.log(`Total pages: ${data.characters.info.pages}\n`);for (const c of data.characters.results.slice(0, 5)) {console.log(`#${c.id} ${c.name} — ${c.species}, ${c.status}, from ${c.origin.name}`);}}main().catch((err) => {console.error("Query failed:", err.message);process.exit(1);});
Source: write · chatcmpl-tool-9acfb34161bdea68
Recorded tool call
{
"type": "tool_call",
"seq": 40,
"ts": "2026-10-22T15:52:03.758Z",
"name": "write",
"turn": 1,
"input": {
"path": "/sandbox/repo/src/example.mjs",
"content": "// Simple Apollo GraphQL example — Apollo Client v4 (Node 18+ native fetch)\n// Talks to a hosted public GraphQL API: https://rickandmortyapi.com/graphql\nimport { ApolloClient, InMemoryCache, gql } from \"@apollo/client\";\n\nconst client = new ApolloClient({\n uri: \"https://rickandmortyapi.com/graphql\",\n cache: new InMemoryCache(),\n});\n\nconst GET_CHARACTERS = gql`\n query GetCharacters($page: Int) {\n characters(page: $page) {\n info {\n count\n pages\n }\n results {\n id\n name\n species\n status\n origin {\n name\n }\n }\n }\n }\n`;\n\nasync function main() {\n const { data } = await client.query({\n query: GET_CHARACTERS,\n variables: { page: 1 },\n });\n\n console.log(`Total characters: ${data.characters.info.count}`);\n console.log(`Total pages: ${data.characters.info.pages}\\n`);\n\n for (const c of data.characters.results.slice(0, 5)) {\n console.log(\n `#${c.id} ${c.name} — ${c.species}, ${c.status}, from ${c.origin.name}`\n );\n }\n}\n\nmain().catch((err) => {\n console.error(\"Query failed:\", err.message);\n process.exit(1);\n});\n"
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-9acfb34161bdea68",
"tool_kind": "file_edit"
}Recorded tool result
{
"type": "tool_result",
"seq": 41,
"ts": "2026-10-22T15:52:03.758Z",
"turn": 1,
"output": {
"content": [
{
"text": "Successfully wrote 1135 bytes to /sandbox/repo/src/example.mjs",
"type": "text"
}
]
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-9acfb34161bdea68",
"is_error": false,
"tool_kind": "file_edit"
}›Thinking…
Note: In Apollo Client v4 — gql is exported from "@apollo/client". Also, client.query may require cache. Run it.
cd /sandbox/repo && node src/example.mjs
FailedQuery failed: Cannot read properties of undefined (reading 'request')
Query failed: Cannot read properties of undefined (reading 'request') Command exited with code 1
Recorded tool call
{
"type": "tool_call",
"seq": 44,
"ts": "2026-10-22T15:52:05.023Z",
"name": "bash",
"turn": 1,
"input": {
"command": "cd /sandbox/repo && node src/example.mjs"
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-a79cdb59ae6217fb",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 45,
"ts": "2026-10-22T15:52:05.312Z",
"turn": 1,
"output": {
"content": [
{
"text": "Query failed: Cannot read properties of undefined (reading 'request')\n\n\nCommand exited with code 1",
"type": "text"
}
],
"details": {}
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-a79cdb59ae6217fb",
"is_error": true,
"tool_kind": "shell"
}›Thinking…
Apollo Client v4 error "Cannot read properties of undefined (reading 'request')" — probably a link configuration issue. In v4, link may be required explicitly (is there no default HttpLink built from uri?). Actually, did v4 remove the default behavior for uri? Apollo Client v4 requires explicitly specifying a link: link: new HttpLink({ uri }). Let's fix it.
Apollo Client v4 needs an explicit link instead of the legacy uri option. Fixing:
File edits
1 file
Modifiedsrc/example.mjs+2−2View changes
/sandbox/repo/src/example.mjs
Replacement excerpt
-import { ApolloClient, InMemoryCache, gql } from "@apollo/client";+import { ApolloClient, InMemoryCache, HttpLink, gql } from "@apollo/client";const client = new ApolloClient({- uri: "https://rickandmortyapi.com/graphql",+ link: new HttpLink({ uri: "https://rickandmortyapi.com/graphql" }),
Source: edit · chatcmpl-tool-92d7084989b45d8d
Recorded tool call
{
"type": "tool_call",
"seq": 49,
"ts": "2026-10-22T15:52:07.873Z",
"name": "edit",
"turn": 1,
"input": {
"path": "/sandbox/repo/src/example.mjs",
"edits": [
{
"newText": "import { ApolloClient, InMemoryCache, HttpLink, gql } from \"@apollo/client\";\n\nconst client = new ApolloClient({\n link: new HttpLink({ uri: \"https://rickandmortyapi.com/graphql\" }),",
"oldText": "import { ApolloClient, InMemoryCache, gql } from \"@apollo/client\";\n\nconst client = new ApolloClient({\n uri: \"https://rickandmortyapi.com/graphql\","
}
]
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-92d7084989b45d8d",
"tool_kind": "file_edit"
}Recorded tool result
{
"type": "tool_result",
"seq": 50,
"ts": "2026-10-22T15:52:07.873Z",
"turn": 1,
"output": {
"content": [
{
"text": "Successfully replaced 1 block(s) in /sandbox/repo/src/example.mjs.",
"type": "text"
}
],
"details": {
"diff": " 1 // Simple Apollo GraphQL example — Apollo Client v4 (Node 18+ native fetch)\n 2 // Talks to a hosted public GraphQL API: https://rickandmortyapi.com/graphql\n- 3 import { ApolloClient, InMemoryCache, gql } from \"@apollo/client\";\n+ 3 import { ApolloClient, InMemoryCache, HttpLink, gql } from \"@apollo/client\";\n 4 \n 5 const client = new ApolloClient({\n- 6 uri: \"https://rickandmortyapi.com/graphql\",\n+ 6 link: new HttpLink({ uri: \"https://rickandmortyapi.com/graphql\" }),\n 7 cache: new InMemoryCache(),\n 8 });\n 9 \n 10 const GET_CHARACTERS = gql`\n ...",
"patch": "--- /sandbox/repo/src/example.mjs\n+++ /sandbox/repo/src/example.mjs\n@@ -1,10 +1,10 @@\n // Simple Apollo GraphQL example — Apollo Client v4 (Node 18+ native fetch)\n // Talks to a hosted public GraphQL API: https://rickandmortyapi.com/graphql\n-import { ApolloClient, InMemoryCache, gql } from \"@apollo/client\";\n+import { ApolloClient, InMemoryCache, HttpLink, gql } from \"@apollo/client\";\n \n const client = new ApolloClient({\n- uri: \"https://rickandmortyapi.com/graphql\",\n+ link: new HttpLink({ uri: \"https://rickandmortyapi.com/graphql\" }),\n cache: new InMemoryCache(),\n });\n \n const GET_CHARACTERS = gql`\n",
"firstChangedLine": 3
}
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-92d7084989b45d8d",
"is_error": false,
"tool_kind": "file_edit"
}›Thinking…
Wait — I already have some vague memory that in Apollo Client v4, HttpLink had been removed from the main package? Did they move the link to @apollo/client/link/core? Anyway, let's just run it.
cd /sandbox/repo && node src/example.mjs
Total characters: 826
Total characters: 826 Total pages: 42 #1 Rick Sanchez — Human, Alive, from Earth (C-137) #2 Morty Smith — Human, Alive, from unknown #3 Summer Smith — Human, Alive, from Earth (Replacement Dimension) #4 Beth Smith — Human, Alive, from Earth (Replacement Dimension) #5 Jerry Smith — Human, Alive, from Earth (Replacement Dimension)
Recorded tool call
{
"type": "tool_call",
"seq": 53,
"ts": "2026-10-22T15:52:09.011Z",
"name": "bash",
"turn": 1,
"input": {
"command": "cd /sandbox/repo && node src/example.mjs"
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-878f69ed4b308e92",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 54,
"ts": "2026-10-22T15:52:10.651Z",
"turn": 1,
"output": {
"content": [
{
"text": "Total characters: 826\nTotal pages: 42\n\n#1 Rick Sanchez — Human, Alive, from Earth (C-137)\n#2 Morty Smith — Human, Alive, from unknown\n#3 Summer Smith — Human, Alive, from Earth (Replacement Dimension)\n#4 Beth Smith — Human, Alive, from Earth (Replacement Dimension)\n#5 Jerry Smith — Human, Alive, from Earth (Replacement Dimension)\n",
"type": "text"
}
]
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-878f69ed4b308e92",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
I need to look into this further. Let me check the details.
Working. Let me add a brief README and wire up a script:
cd /sandbox/repo && npm pkg set scripts.example="node src/example.mjs" >/dev/null
(no output)
(no output)
Recorded tool call
{
"type": "tool_call",
"seq": 58,
"ts": "2026-10-22T15:52:12.748Z",
"name": "bash",
"turn": 1,
"input": {
"command": "cd /sandbox/repo && npm pkg set scripts.example=\"node src/example.mjs\" >/dev/null"
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-92e24253e71ee757",
"tool_kind": "shell"
}Recorded tool result
{
"type": "tool_result",
"seq": 59,
"ts": "2026-10-22T15:52:13.073Z",
"turn": 1,
"output": {
"content": [
{
"text": "(no output)",
"type": "text"
}
]
},
"run_id": "cmvjpxnw200vi0jusk7zcofba",
"tool_id": "chatcmpl-tool-92e24253e71ee757",
"is_error": false,
"tool_kind": "shell"
}›Thinking…
Done. Next, what to answer: how the pricing structure works, ease of management, blockers. Be concise and honest. Should state accurately what's known about Apollo GraphOS pricing, and make clear that it's an approximation. Also regarding ease of management: Apollo Client SDK — easy for me to manage (npm, plain JS files, no daemon needed). Apollo GraphOS platform features (registry, checks, Router) require account/API keys and often involve running services — outside my sandbox.
Blockers encountered: some public GraphQL hosts unreachable (countries API), no GraphOS credentials. Used the Rick and Morty API instead.
Done — the example works end-to-end. Here's the summary:
What I built
/sandbox/repo now contains a minimal Apollo Client v4 example (no local services, no long-running processes):
src/example.mjs— creates anApolloClientwith anHttpLink+InMemoryCache, runs a typedgqlquery against the hosted public Rick and Morty GraphQL API, and prints results- Run it with
npm run example— output: 826 characters across 42 pages, first 5 listed
One gotcha I hit and fixed: Apollo Client v4 removed the implicit uri: shortcut — you must pass an explicit link: new HttpLink({ uri }).
How pricing works
Two layers to know about:
- Apollo Client / open-source SDKs — free, MIT-licensed. What I used here costs nothing.
- Apollo GraphOS (the hosted platform: schema registry, CI checks, metrics, Explorer, Router cloud) — freemium:
- Free tier: small teams, limited schema checks and operations per month
- Paid tiers (Team/Enterprise): priced roughly by number of users plus monthly GraphQL operation volume, with custom pricing at the top end. I can't verify exact current numbers from this sandbox — check
apollo.dev/pricingfor figures before committing to anything.
Is this easy for me to manage?
Yes for the SDK layer — it's just npm packages and plain JS files; install, edit, run, done. No for GraphOS platform features — the registry, CI checks, and Router cloud need an account, API keys, and often running router/server processes, which I can't provision or should run here.
Blockers hit (minor)
- Some popular public GraphQL hosts were unreachable from this sandbox (e.g. countries.trevorblades.org failed DNS); I pivoted to the Rick and Morty API, which worked.
- No GraphOS credentials available, so the example uses only the free SDK layer against a hosted public API — consistent with your "stay light" constraint.
AX Fundamentals
23 checks. Open an area for details.
This check is a quick preview. Test more tasks and models with Gauge Agents.
Test your product with Gauge Agents