{
  "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": 622,
        "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-04T19:34:26.664413251Z",
          "lastOk": false,
          "lastStatus": 0,
          "lastMs": 0,
          "lastNote": "DNS lookup failed",
          "authRequired": false,
          "uptime24h": 0,
          "uptime30d": 0,
          "p50ms24h": 0,
          "p95ms24h": 0,
          "samples24h": 43,
          "samples30d": 43,
          "days": [
            {
              "date": "2026-11-04",
              "probes": 43,
              "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-04T19:31:06.18345823Z"
        },
        "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-04T19:34:26.664413251Z"
      }
    },
    "answer": "Learnosity and Instructure Canvas score within a point of each other on agent readiness, 60.2 (C) and 59.5 (C). Instructure Canvas leads on schema \u0026 documentation, security \u0026 auth and transparency \u0026 trust.",
    "b": {
      "slug": "learnosity",
      "name": "Learnosity",
      "vendor": "Learnosity",
      "vendorUrl": "https://learnosity.com",
      "kind": "http-api",
      "category": "learning",
      "summary": "Learnosity is an assessment platform that education companies embed in their products. Its Data API imports item banks and reads learner sessions, responses and scores, with browser APIs for authoring and delivery and a hosted MCP server for its documentation.",
      "url": "https://www.anchorterminal.com/tools/learnosity",
      "markdownUrl": "https://www.anchorterminal.com/tools/learnosity.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/learnosity.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/learnosity.json",
      "dns": "learnosity.grade.anchorterminal.com",
      "repo": "https://github.com/Learnosity/learnosity-sdk-python",
      "license": "Proprietary service; SDKs Apache-2.0",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.learnosity.com/build/aide",
      "packages": [
        {
          "registry": "pypi",
          "name": "learnosity_sdk"
        },
        {
          "registry": "npm",
          "name": "learnosity-sdk-nodejs"
        }
      ],
      "auth": "api-key",
      "authNotes": "A consumer key and consumer secret issued under a commercial agreement. Every Data API and browser API request is signed server-side with the SDK (consumer key, domain, timestamp and user in the signature, the secret never sent), so an agent needs the SDK or the signing routine in its own code. The Build Aide MCP server needs no key or account. The demos site uses Learnosity's public demos consumer key (https://github.com/Learnosity/learnosity-sdk-python).",
      "pricing": "paid",
      "pricingNotes": "No prices are published. Learnosity sells an annual SaaS licence priced by the number of users the customer sells access to, in Standard (up to 100,000 users), Scale (100,000 to 500,000) and Enterprise (more than 500,000) tiers, with add-ons for adaptive testing, premium analytics, single tenancy and extra regions, and Silver, Gold or Platinum support with 99.8 or 99.9 per cent SLA uptime. Quotes come from a sales conversation. The Build Aide MCP server is free (https://learnosity.com/company/licences/).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Data API docs, the licences page, the SDK repositories or the MCP articles (checked 2026-11-03).",
        "endpoints": []
      },
      "toolCount": 8,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-03"
      },
      "docsUrl": "https://help.learnosity.com/hc/en-us/categories/16266193425053-Developer-Documentation",
      "capabilities": [
        "learning.quiz",
        "learning.progress",
        "learning.courses"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "paid",
        "sales-led",
        "mcp",
        "remote-mcp",
        "python",
        "typescript",
        "status-page",
        "sla",
        "iso-27001"
      ],
      "lastRelease": "2026-10-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 60.2,
        "grade": "C",
        "agentReady": false,
        "rank": 581,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 2,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 61,
          "maintenance": 85,
          "payments": 10,
          "reliability": 75,
          "schema": 67,
          "security": 54,
          "transparency": 71
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-03"
        },
        "negative": 0,
        "verdict": "A commercial assessment platform whose Data API reads and writes item banks, learner sessions and scores through signed requests, with published per-endpoint rate limits, dated LTS versions and a free hosted MCP server for its documentation. Access needs an annual per-user contract with no public price, no public OpenAPI document was found, and the subprocessor list is unreadable to crawlers.",
        "bestFor": "A product team embedding assessment at scale, where an agent imports items, reads sessions and scores, or runs reports under an existing contract.",
        "strengths": [
          "Data API covers item banks, learner sessions, responses, scores, scoring jobs and reports, with import and export endpoints",
          "Rate limits published per endpoint in 5-second windows, a 429 with meta.code 42000 and a stated wait",
          "LTS versions every February, June and October with 24 months of support and dated end-of-life and sunset tables",
          "Hosted Build Aide MCP server with eight read-only documentation tools, no key, and published rate limits",
          "SDKs for Python, Node.js and PHP under Apache-2.0 with CI, the Node SDK released on 2 October 2026"
        ],
        "weaknesses": [
          "Access needs a commercial agreement; no price, trial or self-serve key is published",
          "No public OpenAPI document or llms.txt was found; the reference is help-centre articles behind a Cloudflare challenge for crawlers",
          "Every call must be signed with the consumer secret, so an agent needs the SDK or the signing routine, and no read-only key type was found",
          "No idempotency keys or Retry-After header documented; writes are limited to 50 per 5 seconds per endpoint",
          "The subprocessor list and DPA are disallowed by robots.txt, and the privacy policy gives no retention periods"
        ],
        "agentNotes": [
          "Sign every Data API request with the SDK's Init helper using the consumer key, domain and secret; the secret stays on the server and never goes in a request",
          "Keep writes under 50 per 5 seconds per endpoint and UPDATE /sessions/item to 1 per 5 seconds; on a 429 wait 5 seconds before retrying",
          "Pin production code to the current LTS (v2026.2.LTS) and read the migration guide before moving; developer builds change every two weeks",
          "Use https://mcp.learnosity.com/build/aide for documentation lookups only; it cannot call the Data API, and a -32000 error means a rate limit, so stop looping and wait",
          "Ask the owner for the consumer credentials and which LTS version their consumer is pinned to before building"
        ],
        "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": 60.2
          }
        ],
        "editorialScores": {
          "ergonomics": 61,
          "maintenance": 85,
          "payments": 10,
          "reliability": 75,
          "schema": 67,
          "security": 54,
          "transparency": 55
        },
        "provenanceScore": 87,
        "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": {
        "install": "pip install learnosity_sdk",
        "claudeCode": "claude mcp add learnosity-build-aide --transport http https://mcp.learnosity.com/build/aide",
        "config": {
          "mcpServers": {
            "learnosity-build-aide": {
              "type": "http",
              "url": "https://mcp.learnosity.com/build/aide"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/learning.quiz",
        "tool": "https://letme.dev/learnosity"
      },
      "area": "everyday",
      "provenance": {
        "legalEntity": "Learnosity Limited",
        "domain": "learnosity.com",
        "domainRegistered": "2007-07-13",
        "endpointOnVendorDomain": true,
        "terms": "https://learnosity.com/legal/terms-of-use/",
        "privacy": "https://learnosity.com/legal/privacy-policy/",
        "statusPage": "https://status.learnosity.com",
        "changelog": "https://help.learnosity.com/hc/en-us/articles/19629981258653-Developer-Release-Logs",
        "securityTxt": "none",
        "checked": "2026-11-03",
        "notes": [
          "The website terms of use name Learnosity Limited and cover the website only, with no date. Platform terms sit in customer agreements and were not read. The privacy policy (last updated 26 May 2026) names Learnosity Limited with subsidiaries Learnosity Inc. and Learnosity Pty Ltd and the Questionmark affiliates.",
          "The Build Aide MCP server has its own terms of service, an article dated 30 October 2026, which call it as-available with no uptime or support commitment.",
          "learnosity.com/robots.txt disallows /subprocessors, /dpa, /partnerdpa, /data-protection-protocols/ and the Feedback Aide subprocessor pages, so none was read. help.learnosity.com's HTML answers a Cloudflare challenge; its JSON API (api/v2/help_center) is not disallowed and was used.",
          "RDAP at Verisign gives learnosity.com a registration date of 13 July 2007.",
          "status.learnosity.com is a Statuspage site; its robots.txt disallows /api/ and /embed/, so the history was read from /history.atom.",
          "No security.txt at learnosity.com (404). The security page names security@learnosity.com and authorises good-faith research."
        ],
        "score": 87
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/learnosity.json",
      "live": {
        "slug": "learnosity",
        "probe": {
          "target": "https://mcp.learnosity.com/build/aide",
          "method": "get",
          "lastAt": "2026-11-04T19:34:50.6954684Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 575,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 614,
          "p95ms24h": 680,
          "samples24h": 43,
          "samples30d": 43,
          "days": [
            {
              "date": "2026-11-04",
              "probes": 43,
              "ok": 43
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.learnosity.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-04T19:31:42.454459832Z"
        },
        "securityTxt": {
          "url": "https://learnosity.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:54:27.652030504Z"
        },
        "updatedAt": "2026-11-04T19:34:50.6954684Z"
      }
    },
    "edges": [
      {
        "by": 13,
        "category": "maintenance",
        "leads": "learnosity",
        "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. Developer release log dated 28 October 2026 and v2026.2.LTS on 10 June 2026 (30). Developer builds about every two weeks with dated logs in September and October (20). Release logs per API, support tickets, the Build Aide feedback widget, and SDK repositories with pull requests merged through 16 October 2026 (12 of 15). Current SDKs for Python (v0.3.13, 14 January 2026, commits to 16 October), Node.js (v0.7.3, 2 October 2026) and PHP (v1.2.1), under Apache-2.0 (15). GitHub Actions CI on the Python and Node.js SDKs; the Node SDK removed express from its dependencies in v0.7.3 (8 of 10). 30 + 20 + 12 + 15 + 8 = 85."
        },
        "scores": {
          "a": 72,
          "b": 85
        }
      },
      {
        "by": 12,
        "category": "reliability",
        "leads": "learnosity",
        "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 on the Data API. Statuspage at status.learnosity.com with component history (20). From 1 August to 3 November 2026 the feed lists six entries, Enhanced Math scoring delays in US-East-1 on 11 September, 2 October and 20 October (the last touching the Data API scoring endpoint for about 4 hours 40 minutes), an LTS remapping issue on 8 October, a demos-site maintenance on 21 to 22 October and Item Pools degraded in all regions for about 2 hours 20 minutes on 26 October, so one incident of an hour or more on a core endpoint and the rest regional or partial (10). Rate limits published per endpoint in 5-second windows (15). A 429 with meta.code 42000 and a stated 5-second wait, but no Retry-After header and no idempotency keys for SET and UPDATE (10 of 15). SLA uptime of 99.8 or 99.9 per cent by support tier on the licences page (10). The APIs are generally available, with LTS versions (10). 20 + 10 + 15 + 10 + 10 + 10 = 75."
        },
        "scores": {
          "a": 63,
          "b": 75
        }
      },
      {
        "by": 11,
        "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 website terms name Learnosity Limited and cover the website only, platform terms are in customer contracts, and the SDKs are Apache-2.0 (12 of 30). Privacy policy last updated 26 May 2026, a least-data principle on the product security policy, a DPA and data-protection protocols behind robots.txt disallows, and no retention periods (15 of 30). LTS lifecycle with dated deprecation, end-of-life and sunset for every version (20). AWS hosting in the US, EU and Australia with the customer choosing the region; the subprocessor list is disallowed to crawlers (8 of 20). 12 + 15 + 20 + 8 = 55."
        },
        "scores": {
          "a": 82,
          "b": 71
        }
      },
      {
        "by": 10,
        "category": "schema",
        "leads": "canvas-lms",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "An OpenAPI 3.0 file is generated from the source with `rake doc:openapi`, and the reference is generated the same way, but no hosted copy of the file was found, so an agent has to build it from a repository whose public mirror ended in May 2026 (15 of 25). llms.txt on developerdocs.instructure.com indexes the Canvas resources and basics (10). Each resource page states what the endpoint does and its parameters, with little when-not-to-use guidance (16 of 20). Parameters are typed with allowed values and required flags in the resource pages (12 of 15). Request examples per endpoint, but no central error page, and the throttling page itself gives the status as \"429 Forbidden (Rate Limit Exceeded)\" (9 of 15). A change log dated by announcement and a written 90-day deprecation policy (15). 15 + 10 + 16 + 12 + 9 + 15 = 77.",
          "b": "No public OpenAPI or similar document was found for the Data API; the reference is help-centre articles, and only the Build Aide MCP server has typed tool inputs, over documentation rather than data (8 of 25). No llms.txt, but the hosted MCP server serves the documentation to agents with source citations (8 of 10). Endpoint articles state what each category is for and when to use the Data API instead of the pre-built APIs (15 of 20). Parameters are typed per endpoint in the articles, read only in part through the JSON API, so partial credit (9 of 15). Troubleshooting articles per HTTP code with the error body, and SDK examples in five languages (12 of 15). Dated LTS versions, release logs per API and developer release logs every two weeks (15). 8 + 8 + 15 + 9 + 12 + 15 = 67."
        },
        "scores": {
          "a": 77,
          "b": 67
        }
      },
      {
        "by": 10,
        "category": "payments",
        "leads": "learnosity",
        "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). No price published; tiers and support levels are described and a quote comes from sales (0). No free tier or trial for the platform; the demos site runs on a public demos consumer key and the MCP server is free, which is documentation rather than the product (5 of 20). A contract and credentials from Learnosity are needed; only the documentation MCP server is reachable without a person (5 of 20). 0 + 0 + 5 + 5 = 10."
        },
        "scores": {
          "a": 0,
          "b": 10
        }
      },
      {
        "by": 7,
        "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": "A consumer key and secret per consumer, with every request signed server-side and the secret never sent; rotation and revocation are not described on public pages (22 of 30). Access is scoped per consumer and the MCP server is read-only, but no read-only Data API credential or confirmation for session deletion was found (8 of 20). The Data API returns learner responses, which are untrusted text, with no guidance (5 of 15). No per-call audit log for the operator found on public pages (3 of 15). ISO 27001 certificate, CSA STAR, a public HECVAT, EU-US DPF and a FedRAMP Moderate authorisation stated by the CTO, security@learnosity.com and a good-faith research authorisation; no security.txt or paid bounty (16 of 20). 22 + 8 + 5 + 3 + 16 = 54."
        },
        "scores": {
          "a": 61,
          "b": 54
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Instructure",
        "b": "Learnosity",
        "name": "Vendor"
      },
      {
        "a": "https://\u003cinstitution\u003e.instructure.com/api/v1",
        "b": "https://mcp.learnosity.com/build/aide",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "AGPL-3.0 (Canvas LMS source); hosted service proprietary",
        "b": "Proprietary service; SDKs Apache-2.0",
        "name": "Licence"
      },
      {
        "a": "0",
        "b": "8",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-27",
        "b": "2026-10-28",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-05-26",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "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": "not found in the text",
        "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": "Learnosity and Instructure Canvas score within a point of each other on agent readiness, 60.2 (C) and 59.5 (C). Instructure Canvas leads on schema \u0026 documentation, security \u0026 auth and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Instructure Canvas or Learnosity?"
      },
      {
        "answer": "Instructure Canvas uses an OAuth sign-in. Learnosity needs an API key.",
        "question": "Do Instructure Canvas and Learnosity need an API key?"
      },
      {
        "answer": "Yes. Instructure Canvas has a hosted endpoint at https://\u003cinstitution\u003e.instructure.com/api/v1 and Learnosity at https://mcp.learnosity.com/build/aide.",
        "question": "Can an agent call Instructure Canvas and Learnosity 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 Learnosity.",
        "question": "Are Instructure Canvas and Learnosity open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 77 against 67",
          "Security \u0026 auth, 61 against 54",
          "Transparency \u0026 trust, 82 against 71"
        ],
        "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": [
          "Reliability, 75 against 63",
          "Payments \u0026 pricing, 10 against 0",
          "Maintenance \u0026 community, 85 against 72"
        ],
        "also": null,
        "goodFor": "A product team embedding assessment at scale, where an agent imports items, reads sessions and scores, or runs reports under an existing contract.",
        "slug": "learnosity",
        "watchFor": "Access needs a commercial agreement; no price, trial or self-serve key is published"
      }
    ],
    "history": null,
    "job": {
      "capability": "learning.quiz",
      "name": "Learning quiz"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/canvas-lms-vs-quizgecko.json",
        "title": "Instructure Canvas vs Quizgecko",
        "url": "https://www.anchorterminal.com/compare/canvas-lms-vs-quizgecko"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kahoot-vs-learnosity.json",
        "title": "Kahoot! vs Learnosity",
        "url": "https://www.anchorterminal.com/compare/kahoot-vs-learnosity"
      },
      {
        "json": "https://www.anchorterminal.com/compare/learnosity-vs-moodle.json",
        "title": "Learnosity vs Moodle",
        "url": "https://www.anchorterminal.com/compare/learnosity-vs-moodle"
      },
      {
        "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/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": 12,
        "canvas-lms": 63,
        "edge": "learnosity",
        "key": "reliability",
        "learnosity": 75,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 10,
        "canvas-lms": 77,
        "edge": "canvas-lms",
        "key": "schema",
        "learnosity": 67,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 2,
        "canvas-lms": 63,
        "edge": "canvas-lms",
        "key": "ergonomics",
        "learnosity": 61,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 7,
        "canvas-lms": 61,
        "edge": "canvas-lms",
        "key": "security",
        "learnosity": 54,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 10,
        "canvas-lms": 0,
        "edge": "learnosity",
        "key": "payments",
        "learnosity": 10,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 13,
        "canvas-lms": 72,
        "edge": "learnosity",
        "key": "maintenance",
        "learnosity": 85,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 11,
        "canvas-lms": 82,
        "edge": "canvas-lms",
        "key": "transparency",
        "learnosity": 71,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Learnosity and Instructure Canvas score within a point of each other on agent readiness, 60.2 (C) and 59.5 (C). Instructure Canvas leads on schema \u0026 documentation, security \u0026 auth and transparency \u0026 trust. 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.",
      "learnosity": "A commercial assessment platform whose Data API reads and writes item banks, learner sessions and scores through signed requests, with published per-endpoint rate limits, dated LTS versions and a free hosted MCP server for its documentation. Access needs an annual per-user contract with no public price, no public OpenAPI document was found, and the subprocessor list is unreadable to crawlers."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/canvas-lms-vs-learnosity",
    "json": "https://www.anchorterminal.com/compare/canvas-lms-vs-learnosity.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/canvas-lms-vs-learnosity.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/canvas-lms-vs-learnosity.min.md"
  },
  "markdown": "Learnosity and Instructure Canvas score within a point of each other on agent readiness, 60.2 (C) and 59.5 (C). Instructure Canvas leads on schema \u0026 documentation, security \u0026 auth and transparency \u0026 trust. Both do learning quiz.\n\n- Instructure Canvas: grade C, 59.5/100, rank #622 of 1349. Markdown https://www.anchorterminal.com/tools/canvas-lms.md · JSON https://www.anchorterminal.com/api/v1/tools/canvas-lms.json\n- Learnosity: grade C, 60.2/100, rank #581 of 1349. Markdown https://www.anchorterminal.com/tools/learnosity.md · JSON https://www.anchorterminal.com/api/v1/tools/learnosity.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- Schema \u0026 documentation, 77 against 67\n- Security \u0026 auth, 61 against 54\n- Transparency \u0026 trust, 82 against 71\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### Learnosity (C)\n\nGood for: A product team embedding assessment at scale, where an agent imports items, reads sessions and scores, or runs reports under an existing contract.\n\nAhead on:\n- Reliability, 75 against 63\n- Payments \u0026 pricing, 10 against 0\n- Maintenance \u0026 community, 85 against 72\n\nWatch for: Access needs a commercial agreement; no price, trial or self-serve key is published\n\n\n## Why the edge\n\n### Maintenance \u0026 community: Learnosity +13\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- Learnosity (85): Read for a closed service. Developer release log dated 28 October 2026 and v2026.2.LTS on 10 June 2026 (30). Developer builds about every two weeks with dated logs in September and October (20). Release logs per API, support tickets, the Build Aide feedback widget, and SDK repositories with pull requests merged through 16 October 2026 (12 of 15). Current SDKs for Python (v0.3.13, 14 January 2026, commits to 16 October), Node.js (v0.7.3, 2 October 2026) and PHP (v1.2.1), under Apache-2.0 (15). GitHub Actions CI on the Python and Node.js SDKs; the Node SDK removed express from its dependencies in v0.7.3 (8 of 10). 30 + 20 + 12 + 15 + 8 = 85.\n\n### Reliability: Learnosity +12\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- Learnosity (75): Read with the hosted lines on the Data API. Statuspage at status.learnosity.com with component history (20). From 1 August to 3 November 2026 the feed lists six entries, Enhanced Math scoring delays in US-East-1 on 11 September, 2 October and 20 October (the last touching the Data API scoring endpoint for about 4 hours 40 minutes), an LTS remapping issue on 8 October, a demos-site maintenance on 21 to 22 October and Item Pools degraded in all regions for about 2 hours 20 minutes on 26 October, so one incident of an hour or more on a core endpoint and the rest regional or partial (10). Rate limits published per endpoint in 5-second windows (15). A 429 with meta.code 42000 and a stated 5-second wait, but no Retry-After header and no idempotency keys for SET and UPDATE (10 of 15). SLA uptime of 99.8 or 99.9 per cent by support tier on the licences page (10). The APIs are generally available, with LTS versions (10). 20 + 10 + 15 + 10 + 10 + 10 = 75.\n\n### Transparency \u0026 trust: Instructure Canvas +11\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- Learnosity (71): Closed service; the website terms name Learnosity Limited and cover the website only, platform terms are in customer contracts, and the SDKs are Apache-2.0 (12 of 30). Privacy policy last updated 26 May 2026, a least-data principle on the product security policy, a DPA and data-protection protocols behind robots.txt disallows, and no retention periods (15 of 30). LTS lifecycle with dated deprecation, end-of-life and sunset for every version (20). AWS hosting in the US, EU and Australia with the customer choosing the region; the subprocessor list is disallowed to crawlers (8 of 20). 12 + 15 + 20 + 8 = 55.\n\n### Schema \u0026 documentation: Instructure Canvas +10\n\n- Instructure Canvas (77): An OpenAPI 3.0 file is generated from the source with `rake doc:openapi`, and the reference is generated the same way, but no hosted copy of the file was found, so an agent has to build it from a repository whose public mirror ended in May 2026 (15 of 25). llms.txt on developerdocs.instructure.com indexes the Canvas resources and basics (10). Each resource page states what the endpoint does and its parameters, with little when-not-to-use guidance (16 of 20). Parameters are typed with allowed values and required flags in the resource pages (12 of 15). Request examples per endpoint, but no central error page, and the throttling page itself gives the status as \"429 Forbidden (Rate Limit Exceeded)\" (9 of 15). A change log dated by announcement and a written 90-day deprecation policy (15). 15 + 10 + 16 + 12 + 9 + 15 = 77.\n- Learnosity (67): No public OpenAPI or similar document was found for the Data API; the reference is help-centre articles, and only the Build Aide MCP server has typed tool inputs, over documentation rather than data (8 of 25). No llms.txt, but the hosted MCP server serves the documentation to agents with source citations (8 of 10). Endpoint articles state what each category is for and when to use the Data API instead of the pre-built APIs (15 of 20). Parameters are typed per endpoint in the articles, read only in part through the JSON API, so partial credit (9 of 15). Troubleshooting articles per HTTP code with the error body, and SDK examples in five languages (12 of 15). Dated LTS versions, release logs per API and developer release logs every two weeks (15). 8 + 8 + 15 + 9 + 12 + 15 = 67.\n\n### Payments \u0026 pricing: Learnosity +10\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- Learnosity (10): No x402, MPP or L402 (0). No price published; tiers and support levels are described and a quote comes from sales (0). No free tier or trial for the platform; the demos site runs on a public demos consumer key and the MCP server is free, which is documentation rather than the product (5 of 20). A contract and credentials from Learnosity are needed; only the documentation MCP server is reachable without a person (5 of 20). 0 + 0 + 5 + 5 = 10.\n\n### Security \u0026 auth: Instructure Canvas +7\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- Learnosity (54): A consumer key and secret per consumer, with every request signed server-side and the secret never sent; rotation and revocation are not described on public pages (22 of 30). Access is scoped per consumer and the MCP server is read-only, but no read-only Data API credential or confirmation for session deletion was found (8 of 20). The Data API returns learner responses, which are untrusted text, with no guidance (5 of 15). No per-call audit log for the operator found on public pages (3 of 15). ISO 27001 certificate, CSA STAR, a public HECVAT, EU-US DPF and a FedRAMP Moderate authorisation stated by the CTO, security@learnosity.com and a good-faith research authorisation; no security.txt or paid bounty (16 of 20). 22 + 8 + 5 + 3 + 16 = 54.\n\n## Score by category\n\n| Category | Weight | Instructure Canvas | Learnosity | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 63 | 75 | Learnosity +12 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 77 | 67 | Instructure Canvas +10 |\n| Agent ergonomics | 13% (16.2 this run) | 63 | 61 | Instructure Canvas +2 |\n| Security \u0026 auth | 14% (17.5 this run) | 61 | 54 | Instructure Canvas +7 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 0 | 10 | Learnosity +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 72 | 85 | Learnosity +13 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 82 | 71 | Instructure Canvas +11 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **59.5 · C** | **60.2 · C** | |\n\n## Facts side by side\n\n| Fact | Instructure Canvas | Learnosity |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Instructure | Learnosity |\n| Hosted endpoint | `https://\u003cinstitution\u003e.instructure.com/api/v1` | `https://mcp.learnosity.com/build/aide` |\n| Transports | HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth | API key |\n| Pricing | Paid | Paid |\n| x402 | no | no |\n| Licence | AGPL-3.0 (Canvas LMS source); hosted service proprietary | Proprietary service; SDKs Apache-2.0 |\n| Tools exposed | 0 | 8 |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | no |\n| Last release | 2026-10-27 | 2026-10-28 |\n| Terms last updated | no date given | no date given |\n| Privacy policy last updated | no date given | 2026-05-26 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | yes | not found in the text |\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 | not found in the text |\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**Learnosity.** A commercial assessment platform whose Data API reads and writes item banks, learner sessions and scores through signed requests, with published per-endpoint rate limits, dated LTS versions and a free hosted MCP server for its documentation. Access needs an annual per-user contract with no public price, no public OpenAPI document was found, and the subprocessor list is unreadable to crawlers.\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### Learnosity\n\n1. Sign every Data API request with the SDK's Init helper using the consumer key, domain and secret; the secret stays on the server and never goes in a request\n2. Keep writes under 50 per 5 seconds per endpoint and UPDATE /sessions/item to 1 per 5 seconds; on a 429 wait 5 seconds before retrying\n3. Pin production code to the current LTS (v2026.2.LTS) and read the migration guide before moving; developer builds change every two weeks\n4. Use https://mcp.learnosity.com/build/aide for documentation lookups only; it cannot call the Data API, and a -32000 error means a rate limit, so stop looping and wait\n5. Ask the owner for the consumer credentials and which LTS version their consumer is pinned to before building\n\n## Questions\n\n### Which is better for AI agents, Instructure Canvas or Learnosity?\n\nLearnosity and Instructure Canvas score within a point of each other on agent readiness, 60.2 (C) and 59.5 (C). Instructure Canvas leads on schema \u0026 documentation, security \u0026 auth and transparency \u0026 trust.\n\n### Do Instructure Canvas and Learnosity need an API key?\n\nInstructure Canvas uses an OAuth sign-in. Learnosity needs an API key.\n\n### Can an agent call Instructure Canvas and Learnosity without installing anything?\n\nYes. Instructure Canvas has a hosted endpoint at https://\u003cinstitution\u003e.instructure.com/api/v1 and Learnosity at https://mcp.learnosity.com/build/aide.\n\n### Are Instructure Canvas and Learnosity open source?\n\nInstructure Canvas is open source (AGPL-3.0 (Canvas LMS source); hosted service proprietary). No open-source release is listed for Learnosity.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/canvas-lms-vs-learnosity.json, and with the fewest tokens: https://www.anchorterminal.com/compare/canvas-lms-vs-learnosity.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"canvas-lms\", \"b\": \"learnosity\"}`. From a terminal: `anchor compare canvas-lms learnosity`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/canvas-lms.json and https://www.anchorterminal.com/api/v1/tools/learnosity.json\n\n## Other comparisons with Instructure Canvas or Learnosity\n\n- [Instructure Canvas vs Quizgecko](https://www.anchorterminal.com/compare/canvas-lms-vs-quizgecko.md)\n- [Kahoot! vs Learnosity](https://www.anchorterminal.com/compare/kahoot-vs-learnosity.md)\n- [Learnosity vs Moodle](https://www.anchorterminal.com/compare/learnosity-vs-moodle.md)\n- [Learnosity vs Quizgecko](https://www.anchorterminal.com/compare/learnosity-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 Learnosity",
        "url": ""
      }
    ],
    "description": "Learnosity and Instructure Canvas score within a point of each other for learning quiz, 60.2 and 59.5 out of 100. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Instructure Canvas C 59.5",
      "Learnosity C 60.2",
      "scores"
    ],
    "h1": "Instructure Canvas vs Learnosity",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/canvas-lms-vs-learnosity",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Instructure Canvas vs Learnosity for AI agents (2026)",
    "toc": null,
    "updated": "2026-11-03",
    "url": "https://www.anchorterminal.com/compare/canvas-lms-vs-learnosity"
  },
  "tokens": {
    "markdown": 4550,
    "slim": 2980
  },
  "version": 1
}
