{
  "data": {
    "a": {
      "slug": "canvas-lms",
      "name": "Instructure Canvas",
      "vendor": "Instructure",
      "vendorUrl": "https://www.instructure.com",
      "kind": "http-api",
      "category": "learning",
      "summary": "Canvas is Instructure's learning management system for schools and universities. Its REST and GraphQL APIs read and change courses, assignments, quizzes, submissions and grades on an institution's Canvas domain, with OAuth2 developer keys its administrators issue and scope.",
      "url": "https://www.anchorterminal.com/tools/canvas-lms",
      "markdownUrl": "https://www.anchorterminal.com/tools/canvas-lms.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/canvas-lms.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/canvas-lms.json",
      "dns": "canvas-lms.grade.anchorterminal.com",
      "repo": "https://github.com/instructure/canvas-lms",
      "license": "AGPL-3.0 (Canvas LMS source); hosted service proprietary",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://\u003cinstitution\u003e.instructure.com/api/v1",
      "packages": [],
      "auth": "oauth",
      "authNotes": "OAuth2 against the institution's Canvas domain. A developer key (client ID and secret) is created by a root account administrator, or by Instructure as a global key an administrator enables, and can be scoped to `url:\u003cverb\u003e|\u003cpath\u003e` endpoints; tokens for keys issued since October 2015 expire after 1 hour and are renewed with a refresh token. A person can also generate a manual access token in their profile for testing, and the API policy forbids asking other users to paste such tokens into an app. Tokens go in the Authorization header; passing `access_token` as a query parameter is supported but discouraged (https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth.md).",
      "pricing": "paid",
      "pricingNotes": "No public price. Canvas is sold to institutions by contract through Instructure's sales team, with tiers compared on the Canvas tiers page. The free Canvas Lite account for individual educators (terms effective 30 September 2026) is limited to 500MB, five published courses and 50 students a course, and its terms say it does not include API token access (https://www.instructure.com/policies/canvas-lite-terms-conditions).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Canvas API docs, the API policy or the OAuth2 guide (checked 2026-11-03).",
        "endpoints": []
      },
      "toolCount": 0,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-03"
      },
      "docsUrl": "https://developerdocs.instructure.com/services/canvas",
      "llmsTxt": "https://developerdocs.instructure.com/llms.txt",
      "capabilities": [
        "learning.lms",
        "learning.courses",
        "learning.quiz",
        "learning.progress"
      ],
      "tags": [
        "hosted",
        "official",
        "oauth",
        "open-source",
        "paid",
        "sales-led",
        "llms-txt",
        "graphql",
        "status-page",
        "security-txt",
        "bug-bounty"
      ],
      "lastRelease": "2026-10-27",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 59.5,
        "grade": "C",
        "agentReady": false,
        "rank": 628,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 3,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 63,
          "maintenance": 72,
          "payments": 0,
          "reliability": 63,
          "schema": 77,
          "security": 61,
          "transparency": 82
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-03"
        },
        "negative": 0,
        "verdict": "A wide REST and GraphQL API over an institution's courses, assignments, quizzes, submissions and grades, with scoped OAuth2 developer keys, Link-header paging, a 90-day deprecation policy and a dated change log. Access depends on an institution's administrator issuing a key, there is no public price or sandbox, and the API policy bars unapproved MCP connections.",
        "bestFor": "An agent acting for a teacher, student or administrator inside an institution that has issued a key, reading assignments and grades or creating course content.",
        "strengths": [
          "REST API over courses, modules, assignments, quizzes, submissions, grades and users, plus a GraphQL endpoint with a GraphiQL explorer",
          "Developer keys scoped to `url:\u003cverb\u003e|\u003cpath\u003e` endpoints, 1-hour access tokens with refresh, and keys controlled by the institution's administrators",
          "API policy requires 90 days' notice before removing an endpoint or field, with a change log dated by announcement",
          "Statuspage with component history, llms.txt on the developer docs, and security.txt valid to 1 January 2027 with a Bugcrowd disclosure programme",
          "Canvas LMS source under AGPL-3.0, from which the API reference and an OpenAPI 3.0 file are generated"
        ],
        "weaknesses": [
          "An agent needs a developer key or OAuth grant from the institution's root administrator; Canvas Lite's terms exclude API token access",
          "No public price, trial or sandbox for the API, and the 2026 API policy forbids connecting through MCP servers Instructure has not approved",
          "Throttling is cost-based with no published quota, 429s carry no Retry-After, and no idempotency keys are documented for writes",
          "25 status entries in 90 days, including hour-plus login, MFA and regional outages for some users",
          "No hosted OpenAPI file or official REST SDK found; the OpenAPI file has to be generated from the source, whose public mirror stopped in May 2026"
        ],
        "agentNotes": [
          "Ask the institution's Canvas administrator for a scoped developer key, or run the OAuth2 flow on the institution's own domain; never ask users to paste manual access tokens",
          "Send the token only in the Authorization header, follow the opaque Link headers for paging and set per_page rather than guessing page counts",
          "Watch X-Request-Cost and X-Rate-Limit-Remaining, keep to one request at a time, and on 429 wait before retrying",
          "Check the API policy before wiring Canvas into an MCP server; it prohibits connections through MCP servers Instructure has not approved",
          "Use the GraphQL endpoint at /api/graphql when you need a few fields from many objects, since REST responses have no field selection"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 59.5
          }
        ],
        "editorialScores": {
          "ergonomics": 63,
          "maintenance": 72,
          "payments": 0,
          "reliability": 63,
          "schema": 77,
          "security": 61,
          "transparency": 71
        },
        "provenanceScore": 93,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-03",
            "maintenance": "2026-11-03",
            "payments": "2026-11-03",
            "reliability": "2026-11-03",
            "schema": "2026-11-03",
            "security": "2026-11-03",
            "transparency": "2026-11-03"
          },
          "last": "2026-11-03",
          "oldest": "2026-11-03",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -H \"Authorization: Bearer \u003cACCESS_TOKEN\u003e\" \"https://\u003cinstitution\u003e.instructure.com/api/v1/courses?per_page=50\""
      },
      "letme": {
        "capability": "https://letme.dev/learning.lms",
        "tool": "https://letme.dev/canvas-lms"
      },
      "area": "everyday",
      "provenance": {
        "legalEntity": "Instructure, Inc.",
        "domain": "instructure.com",
        "domainRegistered": "1998-02-25",
        "endpointOnVendorDomain": true,
        "terms": "https://www.instructure.com/policies/terms-of-use",
        "privacy": "https://www.instructure.com/policies/privacy",
        "statusPage": "https://status.instructure.com",
        "changelog": "https://community.instructure.com/en/categories/canvas-lms-changelog",
        "securityTxt": "valid",
        "checked": "2026-11-03",
        "notes": [
          "The terms of use (effective 12 August 2025) and the API policy (effective 12 August 2025) name Instructure, Inc. and its affiliates; the privacy notice (effective 10 July 2026) also names Instructure Global Ltd. in London.",
          "The terms of use bar accessing or creating accounts by any means other than the publicly supported interfaces, naming scraping; the API is one of those interfaces under the API policy.",
          "developerdocs.instructure.com/robots.txt allows all with Content-Signal ai-train=yes, search=yes, ai-input=yes. status.instructure.com disallows /api/ and /embed/, so the history was read from /history.atom. community.instructure.com disallows search, messages and paged category listings. canvas.instructure.com answered 503 to robots.txt and was not read.",
          "RDAP at Verisign gives instructure.com a registration date of 25 February 1998.",
          "security.txt at www.instructure.com/.well-known/security.txt names security@instructure.com, the vulnerability disclosure page and a PGP key, with Expires 1 January 2027.",
          "The developer docs pages carry text addressed to agents, asking them to query a GitBook endpoint; it was read as data and not acted on."
        ],
        "score": 93
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/canvas-lms.json",
      "live": {
        "slug": "canvas-lms",
        "probe": {
          "target": "https://\u003cinstitution\u003e.instructure.com/api/v1",
          "method": "get",
          "lastAt": "2026-11-04T21:27:43.247677515Z",
          "lastOk": false,
          "lastStatus": 0,
          "lastMs": 0,
          "lastNote": "DNS lookup failed",
          "authRequired": false,
          "uptime24h": 0,
          "uptime30d": 0,
          "p50ms24h": 0,
          "p95ms24h": 0,
          "samples24h": 62,
          "samples30d": 62,
          "days": [
            {
              "date": "2026-11-04",
              "probes": 62,
              "ok": 0
            }
          ],
          "outages": [
            {
              "start": "2026-11-04T15:25:14.852879587Z",
              "end": "0001-01-01T00:00:00Z",
              "note": "DNS lookup failed"
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.instructure.com",
          "indicator": "minor",
          "summary": "Minor Service Outage",
          "checkedAt": "2026-11-04T21:25:18.529700455Z"
        },
        "githubStars": 6902,
        "securityTxt": {
          "url": "https://instructure.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-01-01T00:00:00z",
          "checkedAt": "2026-11-04T15:54:37.398266631Z"
        },
        "updatedAt": "2026-11-04T21:27:43.247677515Z"
      }
    },
    "answer": "Instructure Canvas scores 59.5 (C) on agent readiness against Quizgecko's 33 (F), and leads in 6 of 7 scored categories. Quizgecko leads on payments \u0026 pricing.",
    "b": {
      "slug": "quizgecko",
      "name": "Quizgecko",
      "vendor": "Version Zero Limited",
      "vendorUrl": "https://quizgecko.com",
      "kind": "http-api",
      "category": "learning",
      "summary": "Quizgecko is a study app from Version Zero Limited that turns notes, documents, links and recordings into quizzes, flashcards, notes and podcasts. Its V2 API generates a course from text, a URL, uploads or a topic and edits the quizzes.",
      "url": "https://www.anchorterminal.com/tools/quizgecko",
      "markdownUrl": "https://www.anchorterminal.com/tools/quizgecko.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/quizgecko.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/quizgecko.json",
      "dns": "quizgecko.grade.anchorterminal.com",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.quizgecko.com/v2",
      "packages": [],
      "auth": "api-key",
      "authNotes": "Bearer API token in the Authorization header, generated on the API docs page after logging in; the docs say to contact Quizgecko for API access. The same page documents `?api_key=` as a query parameter for local testing. No scopes, expiry or rotation are described. An unauthenticated GET to api.quizgecko.com/v2/usage answered 302 to the login page rather than 401 on 3 November 2026 (https://quizgecko.com/api-docs).",
      "pricing": "freemium",
      "pricingNotes": "No API price is published. llms.txt gives the app plans as of November 2026 in US dollars, a Free plan with 3 new sets a week, Plus at $16 a month or $108 a year for 20 sets a month, and Ultra at $29 a month or $276 a year for unlimited sets and LMS export. API access is \"contact us\", and /usage reports a monthly course-creation limit per account. The plans page at quizgecko.com/plans answered a Cloudflare challenge (https://quizgecko.com/llms.txt).",
      "priceSummary": "$16 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the API docs, the OpenAPI document, the API catalogue or llms.txt (checked 2026-11-03).",
        "endpoints": []
      },
      "toolCount": 0,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-03"
      },
      "docsUrl": "https://quizgecko.com/api-docs",
      "llmsTxt": "https://quizgecko.com/llms.txt",
      "openapi": "https://quizgecko.com/.well-known/openapi-v2.json",
      "capabilities": [
        "learning.quiz",
        "learning.flashcards",
        "learning.courses"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "openapi",
        "llms-txt",
        "sales-led",
        "freemium",
        "ios",
        "android",
        "uk"
      ],
      "lastRelease": "2026-10-27",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 33,
        "grade": "F",
        "agentReady": false,
        "rank": 1261,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 6,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 45,
          "maintenance": 55,
          "payments": 15,
          "reliability": 20,
          "schema": 68,
          "security": 5,
          "transparency": 35
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-11-03"
        },
        "negative": 0,
        "verdict": "A small OpenAPI 3.1 surface generates a course of quizzes, flashcards and notes from text, a URL or an upload and polls it to completion. API access is granted on request with no published price or rate limit, one bearer token that may travel in the query string, and the terms, privacy policy and security page could not be read.",
        "bestFor": "An agent that has to turn a person's own material into a quiz, flashcards and notes in one call and can wait for generation.",
        "strengths": [
          "Public OpenAPI 3.1.0 document and an RFC 9727 API catalogue at /.well-known, plus llms.txt",
          "One POST /generate call turns text, a URL, uploads or a topic into a course with quizzes, flashcards and study notes, with language, difficulty and question-type options",
          "A generation-status endpoint reports progress and per-module readiness so an agent can poll instead of guessing",
          "App releases on 27 August, 14, 24 and 27 October 2026 on the App Store"
        ],
        "weaknesses": [
          "API access is by contacting Quizgecko, with no published API price, rate limit, SLA or status page",
          "One bearer token with no scopes, and `?api_key=` in the query string is a documented option",
          "The question endpoints and file upload are documented in HTML but missing from the OpenAPI document, and the PUT /quizzes body is an untyped object",
          "Terms, privacy policy, plans and security pages answered a Cloudflare challenge or are disallowed by robots.txt, so data handling is unverified"
        ],
        "agentNotes": [
          "Ask the owner to request API access and generate a token on quizgecko.com/api-docs; there is no self-serve key",
          "Send the token only in the Authorization header, never as `?api_key=`",
          "After POST /generate, poll GET /courses/{course}/generation-status until status is completed or failed, then read the course and its quizzes",
          "Check GET /usage before generating; the monthly course-creation limit returns an error with meta.monthly_limit and meta.monthly_used",
          "Upload files with POST https://api.quizgecko.com/v1/file/upload and pass the returned upload_id in upload_ids"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "F",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 33
          }
        ],
        "editorialScores": {
          "ergonomics": 45,
          "maintenance": 55,
          "payments": 15,
          "reliability": 20,
          "schema": 68,
          "security": 5,
          "transparency": 13
        },
        "provenanceScore": 57,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-03",
            "maintenance": "2026-11-03",
            "payments": "2026-11-03",
            "reliability": "2026-11-03",
            "schema": "2026-11-03",
            "security": "2026-11-03",
            "transparency": "2026-11-03"
          },
          "last": "2026-11-03",
          "oldest": "2026-11-03",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -H \"Authorization: Bearer YOUR_API_KEY_HERE\" https://api.quizgecko.com/v2/usage"
      },
      "letme": {
        "capability": "https://letme.dev/learning.quiz",
        "tool": "https://letme.dev/quizgecko"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Plus plan (app), monthly",
          "unit": "month",
          "usd": 16,
          "note": "$108 a year; 20 new sets a month. API access is by request and has no published price"
        },
        {
          "item": "Ultra plan (app), monthly",
          "unit": "month",
          "usd": 29,
          "note": "$276 a year; unlimited sets, LMS export"
        }
      ],
      "provenance": {
        "legalEntity": "Version Zero Limited",
        "domain": "quizgecko.com",
        "domainRegistered": "2022-10-28",
        "endpointOnVendorDomain": true,
        "terms": "https://quizgecko.com/terms",
        "privacy": "https://quizgecko.com/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-03",
        "notes": [
          "Version Zero Limited is the seller on the App Store listing and company 13849704 at Companies House (incorporated 14 January 2022, London, one director). The terms page answered a Cloudflare challenge, so the entity named in the terms was not read.",
          "The terms and privacy URLs are the ones llms.txt and the API catalogue link. Neither was readable on 3 November 2026, the terms behind a Cloudflare challenge and the privacy page under a robots.txt disallow of /privacy-policy (the /privacy path redirects there per the App Store link).",
          "robots.txt carries Content-Signal search=yes, ai-input=yes, ai-train=no and disallows /api/, /privacy-policy, /billing, /generate and logged-in pages. /api-docs and /.well-known are allowed and were read.",
          "RDAP at Verisign gives quizgecko.com a registration date of 28 October 2022.",
          "No status page found; status.quizgecko.com has no DNS record. The API catalogue links a health endpoint at api.quizgecko.com/health, which answered {\"status\":\"ok\"}.",
          "/.well-known/security.txt returned 404. The security page at quizgecko.com/security answered a Cloudflare challenge."
        ],
        "score": 57
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/quizgecko.json",
      "live": {
        "slug": "quizgecko",
        "probe": {
          "target": "https://api.quizgecko.com/v2",
          "method": "get",
          "lastAt": "2026-11-04T21:28:08.44271974Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 195,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 195,
          "p95ms24h": 408,
          "samples24h": 62,
          "samples30d": 62,
          "days": [
            {
              "date": "2026-11-04",
              "probes": 62,
              "ok": 62
            }
          ]
        },
        "securityTxt": {
          "url": "https://quizgecko.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:52:38.600063854Z"
        },
        "updatedAt": "2026-11-04T21:28:08.44271974Z"
      }
    },
    "edges": [
      {
        "by": 56,
        "category": "security",
        "leads": "canvas-lms",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "OAuth2 with developer keys scoped to `url:\u003cverb\u003e|\u003cpath\u003e` endpoints, 1-hour tokens, refresh tokens, revocation on logout and replace_tokens, but `access_token` as a query parameter is a documented if discouraged option, so 30 less 10 (20 of 30). Scoped keys can be limited to GET endpoints and administrators grant and revoke scopes; masquerading needs a separate permission; no confirmation step for destructive calls (14 of 20). The API returns student submissions, discussion posts and messages with no guidance on treating them as untrusted (5 of 15). Administrators control keys and tokens, and Canvas keeps authentication and course audit logs, but per-call API visibility for a key was not confirmed (6 of 15). security.txt valid to 1 January 2027, a Bugcrowd disclosure form, a bounty programme joined on request, SOC and other reports behind the customer trust portal (16 of 20). 20 + 14 + 5 + 6 + 16 = 61.",
          "b": "One bearer token per account with no scopes, expiry or rotation described, and `?api_key=` is documented as a query-string option, so 10 less 10 (0 of 30). No read-only mode or confirmation for edits (0 of 20). The API fetches URLs and uploads the owner supplies and returns generated text; no guidance on treating fetched content as untrusted (3 of 15). GET /usage shows counts only, no per-call log (2 of 15). /.well-known/security.txt returned 404, the security page answered a Cloudflare challenge and no disclosure policy, bounty or certification was found elsewhere (0 of 20, with the security page unchecked). 0 + 0 + 3 + 2 + 0 = 5."
        },
        "scores": {
          "a": 61,
          "b": 5
        }
      },
      {
        "by": 47,
        "category": "transparency",
        "leads": "canvas-lms",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Canvas LMS source under AGPL-3.0 with clear terms of use and an API policy for the hosted service (28 of 30). Privacy notice effective 10 July 2026 with a 30-day deletion commitment, an AI privacy notice (27 October 2025) saying student data does not train Instructure's models and naming Anthropic, Meta and Cohere models, but no retention periods and no subprocessor list (15 of 30). A written 90-day deprecation notice in the API policy, applied in a dated change log (20). Hosting in the United States stated for Canvas Lite and offices named, model providers named for the AI tools, no subprocessor list or regions for the main service (8 of 20). 28 + 15 + 20 + 8 = 71.",
          "b": "Closed service. The terms page answered a Cloudflare challenge, so the entity and terms were read only from Companies House and the App Store (8 of 30). The privacy policy is disallowed by robots.txt and the security page is behind the challenge, so retention and data-handling statements are unread (0 of 30). V1 is called legacy and still served, with no date or policy (5 of 20). No subprocessors or data locations found on the readable pages (0 of 20). 8 + 0 + 5 + 0 = 13."
        },
        "scores": {
          "a": 82,
          "b": 35
        }
      },
      {
        "by": 43,
        "category": "reliability",
        "leads": "canvas-lms",
        "name": "Reliability",
        "reasons": {
          "a": "Read with the hosted lines on the hosted Canvas API. Statuspage at status.instructure.com with components and history (20). From 24 August to 30 October 2026 the feed lists 25 entries, most of them slow pages or errors for some users lasting under an hour, and four of an hour or more, MFA SMS delivery (2 hours 12 minutes, 24 August), a Portland-region heavy-load outage (5 hours 17 minutes, 31 August), a login failure for some users (1 hour 46 minutes, 15 October) and Canvas Data 2 errors (1 hour 48 minutes, 21 October). Each affected a region or a subset rather than the API for everyone, read as one major outage with many minor ones (10). Throttling is documented as a cost-based quota with headers but no bucket size or refill rate (8 of 15). A 429 is documented with \"retry later\", no Retry-After or backoff numbers and no idempotency keys for writes (7 of 15). The trust centre states 99.9 per cent annual uptime; contract SLAs sit behind the customer portal (8 of 10). The REST API is generally available (10). 20 + 10 + 8 + 7 + 8 + 10 = 63.",
          "b": "Read with the hosted lines. No status page found, and status.quizgecko.com has no DNS record; the API catalogue links only a health endpoint that answered {\"status\":\"ok\"} (0). No readable incident history (5). No rate limit with numbers; the OpenAPI document lists a 429 and GET /usage reports a monthly course-creation limit, which is a quota, not a rate (5 of 15). No Retry-After, backoff guidance or idempotency keys, and generation is a write that creates a course each time (0). No SLA (0). V2 is the current API and is not marked beta (10). 0 + 5 + 5 + 0 + 0 + 10 = 20."
        },
        "scores": {
          "a": 63,
          "b": 20
        }
      },
      {
        "by": 18,
        "category": "ergonomics",
        "leads": "canvas-lms",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "include[] parameters and per_page size REST responses, and GraphQL selects fields (22 of 25). Link-header paging on every list, with filters such as enrollment_type and state on courses (20). Error bodies are a JSON errors array, documented per endpoint rather than centrally, and 401 with WWW-Authenticate for expired tokens is explained (10 of 20). No idempotency keys; reads are safe to repeat and writes are not addressed (5 of 20). Few required parameters per call, but no official REST SDK (community libraries only) and the official client is the DAP CLI for data exports (6 of 15). 22 + 20 + 10 + 5 + 6 = 63.",
          "b": "Six operations with compact responses, a generation-status call that returns progress without the course body, and no field selection (15 of 25). No list endpoints, so no pagination or filtering to speak of (5 of 20). Validation errors are keyed by field and the monthly-limit error carries the limit and usage, but HTTP codes are documented only in the spec (12 of 20). No idempotency key; a retried POST /generate creates another course, and regeneration through quiz_id is the only guard (5 of 20). One source field is enough to generate, options have defaults, but there are no SDKs (8 of 15). 15 + 5 + 12 + 5 + 8 = 45."
        },
        "scores": {
          "a": 63,
          "b": 45
        }
      },
      {
        "by": 17,
        "category": "maintenance",
        "leads": "canvas-lms",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Read for a closed hosted service. Change log entries announced 27 October 2026 and scheduled through 9 November (30). Entries on 2, 23 and 28 September and 9 and 27 October 2026, with deploys every two weeks (20). A dated community change log, community forums and Instructure support; replies on the public repository could not be read (12 of 15). No official REST SDK; the DAP client library for data exports is current on PyPI per the change log (6 of 15). The public canvas-lms mirror's master feed ends 30 April 2026 and its last release tag is release/2026-05-20, so package health and CI can't be read, though the hosted service keeps shipping (4 of 10). 30 + 20 + 12 + 6 + 4 = 72.",
          "b": "Read for a closed service. The iOS app reached 8.0.1 on 27 October 2026 and llms.txt gives prices as of November 2026 (30). App versions on 27 August, 14 October, 24 October and 27 October 2026 (20). No API changelog; support@quizgecko.com in the docs metadata, untested (5 of 15). No SDKs (0). No package to judge (0). 30 + 20 + 5 + 0 + 0 = 55."
        },
        "scores": {
          "a": 72,
          "b": 55
        }
      },
      {
        "by": 15,
        "category": "payments",
        "leads": "quizgecko",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "Read with the hosted rubric. No x402, MPP or L402 (0). No price published; Canvas is sold by contract, and the tiers page compares access levels without prices (0). The only free account, Canvas Lite, excludes API token access per its terms of 30 September 2026, so there is no free tier for the API (0). A developer key or OAuth grant needs an institution's administrator (0). 0 + 0 + 0 + 0 = 0.",
          "b": "No x402, MPP or L402 (0). App plan prices are public in llms.txt, but API access is \"contact us\" with no API price (5 of 20). A free app plan exists, but API access needs a request to the company and whether a card is needed could not be read (10 of 20). A person has to log in and ask for access (0). 0 + 5 + 10 + 0 = 15."
        },
        "scores": {
          "a": 0,
          "b": 15
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Instructure",
        "b": "Version Zero Limited",
        "name": "Vendor"
      },
      {
        "a": "https://\u003cinstitution\u003e.instructure.com/api/v1",
        "b": "https://api.quizgecko.com/v2",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "AGPL-3.0 (Canvas LMS source); hosted service proprietary",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "0",
        "b": "0",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-27",
        "b": "2026-10-27",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2026-09-12",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-10-21",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      }
    ],
    "faq": [
      {
        "answer": "Instructure Canvas scores 59.5 (C) on agent readiness against Quizgecko's 33 (F), and leads in 6 of 7 scored categories. Quizgecko leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, Instructure Canvas or Quizgecko?"
      },
      {
        "answer": "Instructure Canvas uses an OAuth sign-in. Quizgecko needs an API key.",
        "question": "Do Instructure Canvas and Quizgecko need an API key?"
      },
      {
        "answer": "Yes. Instructure Canvas has a hosted endpoint at https://\u003cinstitution\u003e.instructure.com/api/v1 and Quizgecko at https://api.quizgecko.com/v2.",
        "question": "Can an agent call Instructure Canvas and Quizgecko without installing anything?"
      },
      {
        "answer": "Instructure Canvas is open source (AGPL-3.0 (Canvas LMS source); hosted service proprietary). No open-source release is listed for Quizgecko.",
        "question": "Are Instructure Canvas and Quizgecko open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 63 against 20",
          "Schema \u0026 documentation, 77 against 68",
          "Agent ergonomics, 63 against 45",
          "Security \u0026 auth, 61 against 5",
          "Maintenance \u0026 community, 72 against 55",
          "Transparency \u0026 trust, 82 against 35"
        ],
        "also": [
          "Open source"
        ],
        "goodFor": "An agent acting for a teacher, student or administrator inside an institution that has issued a key, reading assignments and grades or creating course content.",
        "slug": "canvas-lms",
        "watchFor": "An agent needs a developer key or OAuth grant from the institution's root administrator; Canvas Lite's terms exclude API token access"
      },
      {
        "aheadOn": [
          "Payments \u0026 pricing, 15 against 0"
        ],
        "also": null,
        "goodFor": "An agent that has to turn a person's own material into a quiz, flashcards and notes in one call and can wait for generation.",
        "slug": "quizgecko",
        "watchFor": "API access is by contacting Quizgecko, with no published API price, rate limit, SLA or status page"
      }
    ],
    "history": null,
    "job": {
      "capability": "learning.quiz",
      "name": "Learning quiz"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/canvas-lms-vs-learnosity.json",
        "title": "Instructure Canvas vs Learnosity",
        "url": "https://www.anchorterminal.com/compare/canvas-lms-vs-learnosity"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kahoot-vs-quizgecko.json",
        "title": "Kahoot! vs Quizgecko",
        "url": "https://www.anchorterminal.com/compare/kahoot-vs-quizgecko"
      },
      {
        "json": "https://www.anchorterminal.com/compare/learnosity-vs-quizgecko.json",
        "title": "Learnosity vs Quizgecko",
        "url": "https://www.anchorterminal.com/compare/learnosity-vs-quizgecko"
      },
      {
        "json": "https://www.anchorterminal.com/compare/moodle-vs-quizgecko.json",
        "title": "Moodle vs Quizgecko",
        "url": "https://www.anchorterminal.com/compare/moodle-vs-quizgecko"
      },
      {
        "json": "https://www.anchorterminal.com/compare/canvas-lms-vs-kahoot.json",
        "title": "Instructure Canvas vs Kahoot!",
        "url": "https://www.anchorterminal.com/compare/canvas-lms-vs-kahoot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/canvas-lms-vs-moodle.json",
        "title": "Instructure Canvas vs Moodle",
        "url": "https://www.anchorterminal.com/compare/canvas-lms-vs-moodle"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 43,
        "canvas-lms": 63,
        "edge": "canvas-lms",
        "key": "reliability",
        "name": "Reliability",
        "quizgecko": 20,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 9,
        "canvas-lms": 77,
        "edge": "canvas-lms",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "quizgecko": 68,
        "weight": 13
      },
      {
        "by": 18,
        "canvas-lms": 63,
        "edge": "canvas-lms",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "quizgecko": 45,
        "weight": 13
      },
      {
        "by": 56,
        "canvas-lms": 61,
        "edge": "canvas-lms",
        "key": "security",
        "name": "Security \u0026 auth",
        "quizgecko": 5,
        "weight": 14
      },
      {
        "by": 15,
        "canvas-lms": 0,
        "edge": "quizgecko",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "quizgecko": 15,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 17,
        "canvas-lms": 72,
        "edge": "canvas-lms",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "quizgecko": 55,
        "weight": 7
      },
      {
        "by": 47,
        "canvas-lms": 82,
        "edge": "canvas-lms",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "quizgecko": 35,
        "weight": 7
      }
    ],
    "summary": "Instructure Canvas scores 59.5 (C) on agent readiness against Quizgecko's 33 (F), and leads in 6 of 7 scored categories. Quizgecko leads on payments \u0026 pricing. Both do learning quiz.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "canvas-lms": "A wide REST and GraphQL API over an institution's courses, assignments, quizzes, submissions and grades, with scoped OAuth2 developer keys, Link-header paging, a 90-day deprecation policy and a dated change log. Access depends on an institution's administrator issuing a key, there is no public price or sandbox, and the API policy bars unapproved MCP connections.",
      "quizgecko": "A small OpenAPI 3.1 surface generates a course of quizzes, flashcards and notes from text, a URL or an upload and polls it to completion. API access is granted on request with no published price or rate limit, one bearer token that may travel in the query string, and the terms, privacy policy and security page could not be read."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/canvas-lms-vs-quizgecko",
    "json": "https://www.anchorterminal.com/compare/canvas-lms-vs-quizgecko.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/canvas-lms-vs-quizgecko.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/canvas-lms-vs-quizgecko.min.md"
  },
  "markdown": "Instructure Canvas scores 59.5 (C) on agent readiness against Quizgecko's 33 (F), and leads in 6 of 7 scored categories. Quizgecko leads on payments \u0026 pricing. Both do learning quiz.\n\n- Instructure Canvas: grade C, 59.5/100, rank #628 of 1349. Markdown https://www.anchorterminal.com/tools/canvas-lms.md · JSON https://www.anchorterminal.com/api/v1/tools/canvas-lms.json\n- Quizgecko: grade F, 33/100, rank #1261 of 1349. Markdown https://www.anchorterminal.com/tools/quizgecko.md · JSON https://www.anchorterminal.com/api/v1/tools/quizgecko.json\n- Best learning, tutoring and assessment tools for AI agents: https://www.anchorterminal.com/best/learning/index.md\n- All 10 learning comparisons: https://www.anchorterminal.com/compare/learning/index.md\n\n## Which one, for what\n\n### Instructure Canvas (C)\n\nGood for: An agent acting for a teacher, student or administrator inside an institution that has issued a key, reading assignments and grades or creating course content.\n\nAhead on:\n- Reliability, 63 against 20\n- Schema \u0026 documentation, 77 against 68\n- Agent ergonomics, 63 against 45\n- Security \u0026 auth, 61 against 5\n- Maintenance \u0026 community, 72 against 55\n- Transparency \u0026 trust, 82 against 35\n\nAlso in its favour:\n- Open source\n\nWatch for: An agent needs a developer key or OAuth grant from the institution's root administrator; Canvas Lite's terms exclude API token access\n\n### Quizgecko (F)\n\nGood for: An agent that has to turn a person's own material into a quiz, flashcards and notes in one call and can wait for generation.\n\nAhead on:\n- Payments \u0026 pricing, 15 against 0\n\nWatch for: API access is by contacting Quizgecko, with no published API price, rate limit, SLA or status page\n\n\n## Why the edge\n\n### Security \u0026 auth: Instructure Canvas +56\n\n- Instructure Canvas (61): OAuth2 with developer keys scoped to `url:\u003cverb\u003e|\u003cpath\u003e` endpoints, 1-hour tokens, refresh tokens, revocation on logout and replace_tokens, but `access_token` as a query parameter is a documented if discouraged option, so 30 less 10 (20 of 30). Scoped keys can be limited to GET endpoints and administrators grant and revoke scopes; masquerading needs a separate permission; no confirmation step for destructive calls (14 of 20). The API returns student submissions, discussion posts and messages with no guidance on treating them as untrusted (5 of 15). Administrators control keys and tokens, and Canvas keeps authentication and course audit logs, but per-call API visibility for a key was not confirmed (6 of 15). security.txt valid to 1 January 2027, a Bugcrowd disclosure form, a bounty programme joined on request, SOC and other reports behind the customer trust portal (16 of 20). 20 + 14 + 5 + 6 + 16 = 61.\n- Quizgecko (5): One bearer token per account with no scopes, expiry or rotation described, and `?api_key=` is documented as a query-string option, so 10 less 10 (0 of 30). No read-only mode or confirmation for edits (0 of 20). The API fetches URLs and uploads the owner supplies and returns generated text; no guidance on treating fetched content as untrusted (3 of 15). GET /usage shows counts only, no per-call log (2 of 15). /.well-known/security.txt returned 404, the security page answered a Cloudflare challenge and no disclosure policy, bounty or certification was found elsewhere (0 of 20, with the security page unchecked). 0 + 0 + 3 + 2 + 0 = 5.\n\n### Transparency \u0026 trust: Instructure Canvas +47\n\n- Instructure Canvas (82): Canvas LMS source under AGPL-3.0 with clear terms of use and an API policy for the hosted service (28 of 30). Privacy notice effective 10 July 2026 with a 30-day deletion commitment, an AI privacy notice (27 October 2025) saying student data does not train Instructure's models and naming Anthropic, Meta and Cohere models, but no retention periods and no subprocessor list (15 of 30). A written 90-day deprecation notice in the API policy, applied in a dated change log (20). Hosting in the United States stated for Canvas Lite and offices named, model providers named for the AI tools, no subprocessor list or regions for the main service (8 of 20). 28 + 15 + 20 + 8 = 71.\n- Quizgecko (35): Closed service. The terms page answered a Cloudflare challenge, so the entity and terms were read only from Companies House and the App Store (8 of 30). The privacy policy is disallowed by robots.txt and the security page is behind the challenge, so retention and data-handling statements are unread (0 of 30). V1 is called legacy and still served, with no date or policy (5 of 20). No subprocessors or data locations found on the readable pages (0 of 20). 8 + 0 + 5 + 0 = 13.\n\n### Reliability: Instructure Canvas +43\n\n- Instructure Canvas (63): Read with the hosted lines on the hosted Canvas API. Statuspage at status.instructure.com with components and history (20). From 24 August to 30 October 2026 the feed lists 25 entries, most of them slow pages or errors for some users lasting under an hour, and four of an hour or more, MFA SMS delivery (2 hours 12 minutes, 24 August), a Portland-region heavy-load outage (5 hours 17 minutes, 31 August), a login failure for some users (1 hour 46 minutes, 15 October) and Canvas Data 2 errors (1 hour 48 minutes, 21 October). Each affected a region or a subset rather than the API for everyone, read as one major outage with many minor ones (10). Throttling is documented as a cost-based quota with headers but no bucket size or refill rate (8 of 15). A 429 is documented with \"retry later\", no Retry-After or backoff numbers and no idempotency keys for writes (7 of 15). The trust centre states 99.9 per cent annual uptime; contract SLAs sit behind the customer portal (8 of 10). The REST API is generally available (10). 20 + 10 + 8 + 7 + 8 + 10 = 63.\n- Quizgecko (20): Read with the hosted lines. No status page found, and status.quizgecko.com has no DNS record; the API catalogue links only a health endpoint that answered {\"status\":\"ok\"} (0). No readable incident history (5). No rate limit with numbers; the OpenAPI document lists a 429 and GET /usage reports a monthly course-creation limit, which is a quota, not a rate (5 of 15). No Retry-After, backoff guidance or idempotency keys, and generation is a write that creates a course each time (0). No SLA (0). V2 is the current API and is not marked beta (10). 0 + 5 + 5 + 0 + 0 + 10 = 20.\n\n### Agent ergonomics: Instructure Canvas +18\n\n- Instructure Canvas (63): include[] parameters and per_page size REST responses, and GraphQL selects fields (22 of 25). Link-header paging on every list, with filters such as enrollment_type and state on courses (20). Error bodies are a JSON errors array, documented per endpoint rather than centrally, and 401 with WWW-Authenticate for expired tokens is explained (10 of 20). No idempotency keys; reads are safe to repeat and writes are not addressed (5 of 20). Few required parameters per call, but no official REST SDK (community libraries only) and the official client is the DAP CLI for data exports (6 of 15). 22 + 20 + 10 + 5 + 6 = 63.\n- Quizgecko (45): Six operations with compact responses, a generation-status call that returns progress without the course body, and no field selection (15 of 25). No list endpoints, so no pagination or filtering to speak of (5 of 20). Validation errors are keyed by field and the monthly-limit error carries the limit and usage, but HTTP codes are documented only in the spec (12 of 20). No idempotency key; a retried POST /generate creates another course, and regeneration through quiz_id is the only guard (5 of 20). One source field is enough to generate, options have defaults, but there are no SDKs (8 of 15). 15 + 5 + 12 + 5 + 8 = 45.\n\n### Maintenance \u0026 community: Instructure Canvas +17\n\n- Instructure Canvas (72): Read for a closed hosted service. Change log entries announced 27 October 2026 and scheduled through 9 November (30). Entries on 2, 23 and 28 September and 9 and 27 October 2026, with deploys every two weeks (20). A dated community change log, community forums and Instructure support; replies on the public repository could not be read (12 of 15). No official REST SDK; the DAP client library for data exports is current on PyPI per the change log (6 of 15). The public canvas-lms mirror's master feed ends 30 April 2026 and its last release tag is release/2026-05-20, so package health and CI can't be read, though the hosted service keeps shipping (4 of 10). 30 + 20 + 12 + 6 + 4 = 72.\n- Quizgecko (55): Read for a closed service. The iOS app reached 8.0.1 on 27 October 2026 and llms.txt gives prices as of November 2026 (30). App versions on 27 August, 14 October, 24 October and 27 October 2026 (20). No API changelog; support@quizgecko.com in the docs metadata, untested (5 of 15). No SDKs (0). No package to judge (0). 30 + 20 + 5 + 0 + 0 = 55.\n\n### Payments \u0026 pricing: Quizgecko +15\n\n- Instructure Canvas (0): Read with the hosted rubric. No x402, MPP or L402 (0). No price published; Canvas is sold by contract, and the tiers page compares access levels without prices (0). The only free account, Canvas Lite, excludes API token access per its terms of 30 September 2026, so there is no free tier for the API (0). A developer key or OAuth grant needs an institution's administrator (0). 0 + 0 + 0 + 0 = 0.\n- Quizgecko (15): No x402, MPP or L402 (0). App plan prices are public in llms.txt, but API access is \"contact us\" with no API price (5 of 20). A free app plan exists, but API access needs a request to the company and whether a card is needed could not be read (10 of 20). A person has to log in and ask for access (0). 0 + 5 + 10 + 0 = 15.\n\n## Score by category\n\n| Category | Weight | Instructure Canvas | Quizgecko | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 63 | 20 | Instructure Canvas +43 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 77 | 68 | Instructure Canvas +9 |\n| Agent ergonomics | 13% (16.2 this run) | 63 | 45 | Instructure Canvas +18 |\n| Security \u0026 auth | 14% (17.5 this run) | 61 | 5 | Instructure Canvas +56 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 0 | 15 | Quizgecko +15 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 72 | 55 | Instructure Canvas +17 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 82 | 35 | Instructure Canvas +47 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **59.5 · C** | **33 · F** | |\n\n## Facts side by side\n\n| Fact | Instructure Canvas | Quizgecko |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Instructure | Version Zero Limited |\n| Hosted endpoint | `https://\u003cinstitution\u003e.instructure.com/api/v1` | `https://api.quizgecko.com/v2` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth | API key |\n| Pricing | Paid | Freemium |\n| x402 | no | no |\n| Licence | AGPL-3.0 (Canvas LMS source); hosted service proprietary | none |\n| Tools exposed | 0 | 0 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-27 | 2026-10-27 |\n| Terms last updated | no date given | 2026-09-12 |\n| Privacy policy last updated | no date given | 2026-10-21 |\n| Customer content may train models | not found in the text | yes |\n| Terms restrict automated access | yes | yes |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n\n## Verdicts\n\n**Instructure Canvas.** A wide REST and GraphQL API over an institution's courses, assignments, quizzes, submissions and grades, with scoped OAuth2 developer keys, Link-header paging, a 90-day deprecation policy and a dated change log. Access depends on an institution's administrator issuing a key, there is no public price or sandbox, and the API policy bars unapproved MCP connections.\n\n**Quizgecko.** A small OpenAPI 3.1 surface generates a course of quizzes, flashcards and notes from text, a URL or an upload and polls it to completion. API access is granted on request with no published price or rate limit, one bearer token that may travel in the query string, and the terms, privacy policy and security page could not be read.\n\n## Before you call either\n\n### Instructure Canvas\n\n1. Ask the institution's Canvas administrator for a scoped developer key, or run the OAuth2 flow on the institution's own domain; never ask users to paste manual access tokens\n2. Send the token only in the Authorization header, follow the opaque Link headers for paging and set per_page rather than guessing page counts\n3. Watch X-Request-Cost and X-Rate-Limit-Remaining, keep to one request at a time, and on 429 wait before retrying\n4. Check the API policy before wiring Canvas into an MCP server; it prohibits connections through MCP servers Instructure has not approved\n5. Use the GraphQL endpoint at /api/graphql when you need a few fields from many objects, since REST responses have no field selection\n\n### Quizgecko\n\n1. Ask the owner to request API access and generate a token on quizgecko.com/api-docs; there is no self-serve key\n2. Send the token only in the Authorization header, never as `?api_key=`\n3. After POST /generate, poll GET /courses/{course}/generation-status until status is completed or failed, then read the course and its quizzes\n4. Check GET /usage before generating; the monthly course-creation limit returns an error with meta.monthly_limit and meta.monthly_used\n5. Upload files with POST https://api.quizgecko.com/v1/file/upload and pass the returned upload_id in upload_ids\n\n## Questions\n\n### Which is better for AI agents, Instructure Canvas or Quizgecko?\n\nInstructure Canvas scores 59.5 (C) on agent readiness against Quizgecko's 33 (F), and leads in 6 of 7 scored categories. Quizgecko leads on payments \u0026 pricing.\n\n### Do Instructure Canvas and Quizgecko need an API key?\n\nInstructure Canvas uses an OAuth sign-in. Quizgecko needs an API key.\n\n### Can an agent call Instructure Canvas and Quizgecko without installing anything?\n\nYes. Instructure Canvas has a hosted endpoint at https://\u003cinstitution\u003e.instructure.com/api/v1 and Quizgecko at https://api.quizgecko.com/v2.\n\n### Are Instructure Canvas and Quizgecko open source?\n\nInstructure Canvas is open source (AGPL-3.0 (Canvas LMS source); hosted service proprietary). No open-source release is listed for Quizgecko.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/canvas-lms-vs-quizgecko.json, and with the fewest tokens: https://www.anchorterminal.com/compare/canvas-lms-vs-quizgecko.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"canvas-lms\", \"b\": \"quizgecko\"}`. From a terminal: `anchor compare canvas-lms quizgecko`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/canvas-lms.json and https://www.anchorterminal.com/api/v1/tools/quizgecko.json\n\n## Other comparisons with Instructure Canvas or Quizgecko\n\n- [Instructure Canvas vs Learnosity](https://www.anchorterminal.com/compare/canvas-lms-vs-learnosity.md)\n- [Kahoot! vs Quizgecko](https://www.anchorterminal.com/compare/kahoot-vs-quizgecko.md)\n- [Learnosity vs Quizgecko](https://www.anchorterminal.com/compare/learnosity-vs-quizgecko.md)\n- [Moodle vs Quizgecko](https://www.anchorterminal.com/compare/moodle-vs-quizgecko.md)\n- [Instructure Canvas vs Kahoot!](https://www.anchorterminal.com/compare/canvas-lms-vs-kahoot.md)\n- [Instructure Canvas vs Moodle](https://www.anchorterminal.com/compare/canvas-lms-vs-moodle.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Instructure Canvas vs Quizgecko",
        "url": ""
      }
    ],
    "description": "Instructure Canvas scores 59.5 (C) to Quizgecko's 33 (F) for learning quiz. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Instructure Canvas C 59.5",
      "Quizgecko F 33",
      "scores"
    ],
    "h1": "Instructure Canvas vs Quizgecko",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/canvas-lms-vs-quizgecko",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Instructure Canvas vs Quizgecko for AI agents (2026) | Anchor Terminal",
    "toc": null,
    "updated": "2026-11-04",
    "url": "https://www.anchorterminal.com/compare/canvas-lms-vs-quizgecko"
  },
  "tokens": {
    "markdown": 4100,
    "slim": 2580
  },
  "version": 1
}
