{"schemaVersion":"1.0","category":{"id":"rich-text-editors","label":"Embeddable rich text editors","jobToBeDone":"put a real editor inside a product","page":"https://letagentsin.com/c/rich-text-editors"},"generatedAt":"2026-10-03T03:47:49.794Z","formulaVersion":"9.57","measured":10,"inCategory":10,"interpretation":"This is not a product recommendation. clear means no barrier we test stopped an unattended agent; blocked names where it stopped; unknown was not measurable from our vantage.","providers":{"clear":[],"blocked":[{"domain":"ckeditor.com","stopsAt":"no door built for a machine","barriers":["no door built for a machine"],"measuredAt":"2026-08-24","evidence":"https://letagentsin.com/r/ckeditor-com-20260824144204-999853d5a9183c2e","unknown":true},{"domain":"tiny.cloud","stopsAt":"the signup form is not in the served HTML","barriers":["the signup form is not in the served HTML","no documented way to get a credential"],"measuredAt":"2026-08-24","evidence":"https://letagentsin.com/r/tiny-cloud-20260824144208-43b2a33d80c776e8","unknown":true},{"domain":"tiptap.dev","stopsAt":"no door built for a machine","barriers":["no door built for a machine","a CAPTCHA sits in the signup HTML","no documented way to get a credential"],"measuredAt":"2026-08-24","evidence":"https://letagentsin.com/r/tiptap-dev-20260824144213-83febbc27b57556b"},{"domain":"lexical.dev","stopsAt":"no door built for a machine","barriers":["no door built for a machine"],"measuredAt":"2026-08-24","evidence":"https://letagentsin.com/r/lexical-dev-20260824144215-7d026554aa082808","unknown":true},{"domain":"prosemirror.net","stopsAt":"no door built for a machine","barriers":["no door built for a machine"],"measuredAt":"2026-08-24","evidence":"https://letagentsin.com/r/prosemirror-net-20260824144223-ff70398f2afeea42","unknown":true},{"domain":"editorjs.io","stopsAt":"no door built for a machine","barriers":["no door built for a machine"],"measuredAt":"2026-08-24","evidence":"https://letagentsin.com/r/editorjs-io-20260824144226-f564dcff147ee4b0","unknown":true},{"domain":"slatejs.org","stopsAt":"no door built for a machine","barriers":["no door built for a machine"],"measuredAt":"2026-08-24","evidence":"https://letagentsin.com/r/slatejs-org-20260824144239-ece4a5d29862b7ea","unknown":true},{"domain":"liveblocks.io","stopsAt":"no door built for a machine","barriers":["no door built for a machine"],"measuredAt":"2026-08-24","evidence":"https://letagentsin.com/r/liveblocks-io-20260824144254-46cec1173d2796bd","unknown":true}],"unknown":[{"domain":"quilljs.com","stopsAt":null,"barriers":[],"measuredAt":"2026-08-24","evidence":"https://letagentsin.com/r/quilljs-com-20260824144220-15624a1dc2c3383a","unknown":true},{"domain":"froala.com","stopsAt":null,"barriers":[],"measuredAt":"2026-08-24","evidence":"https://letagentsin.com/r/froala-com-20260824151232-97c52d5a1599a802","unknown":true}]},"checks":[{"id":"answers_plain_request","stage":"discovery","label":"Answers an agent user-agent","max":1,"helpUri":"https://letagentsin.com/methodology#answers_plain_request","tally":{"pass":10,"partial":0,"fail":0,"unmeasured":0,"notApplicable":0,"measured":10}},{"id":"price_in_snippet","stage":"discovery","label":"Price or entry condition in the search snippet","max":1,"helpUri":"https://letagentsin.com/methodology#price_in_snippet","tally":{"pass":1,"partial":0,"fail":3,"unmeasured":1,"notApplicable":5,"measured":4}},{"id":"llms_txt","stage":"discovery","label":"llms.txt published","max":1,"helpUri":"https://letagentsin.com/methodology#llms_txt","tally":{"pass":6,"partial":0,"fail":4,"unmeasured":0,"notApplicable":0,"measured":10}},{"id":"docs_without_js","stage":"discovery","label":"Docs readable without JavaScript","max":1,"helpUri":"https://letagentsin.com/methodology#docs_without_js","tally":{"pass":7,"partial":0,"fail":0,"unmeasured":3,"notApplicable":0,"measured":7}},{"id":"user_agents_allowed","stage":"discovery","label":"On-demand agents not blocked","max":1,"helpUri":"https://letagentsin.com/methodology#user_agents_allowed","tally":{"pass":9,"partial":0,"fail":1,"unmeasured":0,"notApplicable":0,"measured":10}},{"id":"robots_paths_resolve","stage":"discovery","label":"Paths robots.txt points at answer","max":1,"helpUri":"https://letagentsin.com/methodology#robots_paths_resolve","tally":{"pass":0,"partial":0,"fail":0,"unmeasured":0,"notApplicable":10,"measured":0}},{"id":"no_crawl_delay","stage":"discovery","label":"No punishing crawl delay","max":1,"helpUri":"https://letagentsin.com/methodology#no_crawl_delay","tally":{"pass":9,"partial":0,"fail":1,"unmeasured":0,"notApplicable":0,"measured":10}},{"id":"agent_entry_point","stage":"entry","label":"Agent entry point","max":2,"helpUri":"https://letagentsin.com/methodology#agent_entry_point","tally":{"pass":0,"partial":0,"fail":9,"unmeasured":1,"notApplicable":0,"measured":9}},{"id":"oauth_dcr","stage":"entry","label":"OAuth dynamic client registration","max":1,"helpUri":"https://letagentsin.com/methodology#oauth_dcr","tally":{"pass":1,"partial":0,"fail":4,"unmeasured":0,"notApplicable":5,"measured":5}},{"id":"mcp_present","stage":"entry","label":"MCP surface","max":1,"helpUri":"https://letagentsin.com/methodology#mcp_present","tally":{"pass":0,"partial":0,"fail":9,"unmeasured":1,"notApplicable":0,"measured":9}},{"id":"signup_no_captcha","stage":"signup","label":"No CAPTCHA in the signup HTML","max":1,"helpUri":"https://letagentsin.com/methodology#signup_no_captcha","tally":{"pass":1,"partial":0,"fail":1,"unmeasured":3,"notApplicable":5,"measured":2}},{"id":"signup_reachable","stage":"signup","label":"Signup reachable without a browser","max":1,"helpUri":"https://letagentsin.com/methodology#signup_reachable","tally":{"pass":2,"partial":0,"fail":1,"unmeasured":2,"notApplicable":5,"measured":3}},{"id":"programmatic_provisioning","stage":"provisioning","label":"Programmatic key provisioning","max":2,"helpUri":"https://letagentsin.com/methodology#programmatic_provisioning","tally":{"pass":0,"partial":1,"fail":2,"unmeasured":7,"notApplicable":0,"measured":3}},{"id":"self_serve","stage":"provisioning","label":"Free tier or no-card trial stated in text","max":1,"helpUri":"https://letagentsin.com/methodology#self_serve","tally":{"pass":4,"partial":0,"fail":0,"unmeasured":1,"notApplicable":5,"measured":4}},{"id":"typed_package","stage":"integration","label":"Typed SDK on the registry","max":1,"helpUri":"https://letagentsin.com/methodology#typed_package","tally":{"pass":10,"partial":0,"fail":0,"unmeasured":0,"notApplicable":0,"measured":10}},{"id":"machine_readable_api","stage":"integration","label":"Machine-readable API description","max":1,"helpUri":"https://letagentsin.com/methodology#machine_readable_api","tally":{"pass":4,"partial":0,"fail":6,"unmeasured":0,"notApplicable":0,"measured":10}}],"rows":[{"domain":"ckeditor.com","category":"Embeddable rich text editors","total":9,"measurable":15,"max":18,"share":0.6,"scannedAt":"2026-08-24T14:42:04.872Z","rateLimited":false,"refusesAgentsAtSignup":false,"measuredOn":null,"alsoNames":[],"unattendedGrant":null,"npmSource":"registry-search","scorecardUrl":"https://letagentsin.com/r/ckeditor-com-20260824144204-999853d5a9183c2e","vendorUrl":"https://letagentsin.com/v/ckeditor.com","checks":[{"id":"answers_plain_request","verdict":"pass","points":1,"max":1,"detail":"Answered 200 to LetAgentsIn/1.0 (+https://letagentsin.com/bot)"},{"id":"price_in_snippet","verdict":"fail","points":0,"max":1,"detail":"Your pricing page's description tag names no amount and no entry condition: “Choose your CKEditor commercial license for upgrades and support.”"},{"id":"llms_txt","verdict":"pass","points":1,"max":1,"detail":"llms.txt and llms-full.txt present at https://ckeditor.com/llms.txt and https://ckeditor.com/llms-full.txt, and the 12 links we sampled across both files all answer"},{"id":"docs_without_js","verdict":"pass","points":1,"max":1,"detail":"15,167 characters of text without JS, on https://ckeditor.com/docs/ckeditor5/latest/getting-started/index.html rather than on https://ckeditor.com/docs/"},{"id":"user_agents_allowed","verdict":"pass","points":1,"max":1,"detail":"No on-demand agent is blocked"},{"id":"robots_paths_resolve","verdict":"notApplicable","points":0,"max":1,"detail":"robots.txt names no concrete path, only patterns or nothing, so there is no claim to check"},{"id":"no_crawl_delay","verdict":"fail","points":0,"max":1,"detail":"Crawl-delay: 10s in https://ckeditor.com/robots.txt applies to the agents we check"},{"id":"agent_entry_point","verdict":"fail","points":0,"max":2,"detail":"None of the 13 agent entry paths we asked on your site returns a file rather than your page shell"},{"id":"oauth_dcr","verdict":"fail","points":0,"max":1,"detail":"No OAuth metadata on any of the 14 hosts probed: https://ckeditor.com, https://portal.ckeditor.com, https://auth.ckeditor.com, https://login.ckeditor.com, and 10 more"},{"id":"mcp_present","verdict":"fail","points":0,"max":1,"detail":"MCP mentioned 4x in your own files, but nothing spoke MCP at mcp.ckeditor.com, mcp.ckeditor.com/mcp, mcp.ckeditor.com/v1/mcp, api.ckeditor.com/mcp, api.ckeditor.com/v1/mcp, /mcp or /api/mcp, and any address you publish in the MCP registry"},{"id":"signup_no_captcha","verdict":"pass","points":1,"max":1,"detail":"No CAPTCHA vendor in the server HTML. A widget mounted later by JavaScript would not show here."},{"id":"signup_reachable","verdict":"pass","points":1,"max":1,"detail":"Form renders in server HTML at https://portal.ckeditor.com/signup/"},{"id":"programmatic_provisioning","verdict":"unmeasured","points":0,"max":2,"detail":"Unmeasurable: none of the 4 documentation pages we reached is about keys or authentication, so their silence about creating one says nothing"},{"id":"self_serve","verdict":"pass","points":1,"max":1,"detail":"Free tier or no-card signals at https://ckeditor.com/pricing/: \"Free plan\", \"free trial\", \"Free forever\""},{"id":"typed_package","verdict":"pass","points":1,"max":1,"detail":"@ckeditor/ckeditor5-ui@48.4.0 ships types, matched from the registry by who publishes it rather than by a link on your site"},{"id":"machine_readable_api","verdict":"pass","points":1,"max":1,"detail":"Docs serve markdown to machines, at https://ckeditor.com/docs/ckeditor5/latest/getting-started/index.html"}]},{"domain":"editorjs.io","category":"Embeddable rich text editors","total":4,"measurable":9,"max":18,"share":0.4444,"scannedAt":"2026-08-24T14:42:26.334Z","rateLimited":false,"refusesAgentsAtSignup":false,"measuredOn":null,"alsoNames":[],"unattendedGrant":null,"npmSource":"registry-search","scorecardUrl":"https://letagentsin.com/r/editorjs-io-20260824144226-f564dcff147ee4b0","vendorUrl":"https://letagentsin.com/v/editorjs.io","checks":[{"id":"answers_plain_request","verdict":"pass","points":1,"max":1,"detail":"Answered 200 to LetAgentsIn/1.0 (+https://letagentsin.com/bot)"},{"id":"price_in_snippet","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no price for a search result to carry"},{"id":"llms_txt","verdict":"fail","points":0,"max":1,"detail":"No llms.txt at any of the 3 locations probed: https://editorjs.io/llms.txt, https://editorjs.io/llms-full.txt, https://docs.editorjs.io/llms.txt"},{"id":"docs_without_js","verdict":"unmeasured","points":0,"max":1,"detail":"Unmeasurable: no documentation page could be found to read"},{"id":"user_agents_allowed","verdict":"pass","points":1,"max":1,"detail":"No on-demand agent is blocked"},{"id":"robots_paths_resolve","verdict":"notApplicable","points":0,"max":1,"detail":"robots.txt names no concrete path, only patterns or nothing, so there is no claim to check"},{"id":"no_crawl_delay","verdict":"pass","points":1,"max":1,"detail":"No Crawl-delay applies to the agents we check"},{"id":"agent_entry_point","verdict":"fail","points":0,"max":2,"detail":"None of the 13 agent entry paths we asked on your site returns a file rather than your page shell"},{"id":"oauth_dcr","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no client for an agent to register"},{"id":"mcp_present","verdict":"fail","points":0,"max":1,"detail":"No MCP surface: nothing spoke MCP at mcp.editorjs.io, mcp.editorjs.io/mcp, mcp.editorjs.io/v1/mcp, api.editorjs.io/mcp, api.editorjs.io/v1/mcp, /mcp or /api/mcp, and any address you publish in the MCP registry, and no file mentions MCP"},{"id":"signup_no_captcha","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no gate to measure"},{"id":"signup_reachable","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs"},{"id":"programmatic_provisioning","verdict":"unmeasured","points":0,"max":2,"detail":"Unmeasurable: we could not read a single documentation page, so there was nothing to look in"},{"id":"self_serve","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no tier to state"},{"id":"typed_package","verdict":"pass","points":1,"max":1,"detail":"@editorjs/editorjs@2.31.6 ships types, matched from the registry by who publishes it rather than by a link on your site"},{"id":"machine_readable_api","verdict":"fail","points":0,"max":1,"detail":"No OpenAPI spec at the 5 usual paths, none declared by https://editorjs.io, and no markdown negotiation"}]},{"domain":"froala.com","category":"Embeddable rich text editors","total":5,"measurable":8,"max":18,"share":0.625,"scannedAt":"2026-08-24T15:12:32.461Z","rateLimited":false,"refusesAgentsAtSignup":false,"measuredOn":null,"alsoNames":[],"unattendedGrant":null,"npmSource":"llms","scorecardUrl":"https://letagentsin.com/r/froala-com-20260824151232-97c52d5a1599a802","vendorUrl":"https://letagentsin.com/v/froala.com","checks":[{"id":"answers_plain_request","verdict":"pass","points":1,"max":1,"detail":"Answered 200 to LetAgentsIn/1.0 (+https://letagentsin.com/bot) across 3 tries (403, 200, 200)"},{"id":"price_in_snippet","verdict":"unmeasured","points":0,"max":1,"detail":"Unmeasurable: no pricing page answered us, so we did not read what a search result would quote about your price"},{"id":"llms_txt","verdict":"pass","points":1,"max":1,"detail":"llms.txt present at https://froala.com/llms.txt, and the 12 links we sampled across the file all answer"},{"id":"docs_without_js","verdict":"unmeasured","points":0,"max":1,"detail":"Unmeasurable: no documentation page could be found to read"},{"id":"user_agents_allowed","verdict":"pass","points":1,"max":1,"detail":"No on-demand agent is blocked"},{"id":"robots_paths_resolve","verdict":"notApplicable","points":0,"max":1,"detail":"robots.txt names no concrete path, only patterns or nothing, so there is no claim to check"},{"id":"no_crawl_delay","verdict":"pass","points":1,"max":1,"detail":"No Crawl-delay applies to the agents we check"},{"id":"agent_entry_point","verdict":"unmeasured","points":0,"max":2,"detail":"Unmeasurable: 3 of the 10 agent entry paths we asked on your site answered with a refusal rather than a file or a 404, so what you publish there is not something we measured"},{"id":"oauth_dcr","verdict":"fail","points":0,"max":1,"detail":"No OAuth metadata on any of the 13 hosts probed: https://froala.com, https://auth.froala.com, https://login.froala.com, https://accounts.froala.com, and 9 more"},{"id":"mcp_present","verdict":"fail","points":0,"max":1,"detail":"No MCP surface: nothing spoke MCP at mcp.froala.com, mcp.froala.com/mcp, mcp.froala.com/v1/mcp, api.froala.com/mcp, api.froala.com/v1/mcp, /mcp or /api/mcp, and any address you publish in the MCP registry, and no file mentions MCP"},{"id":"signup_no_captcha","verdict":"unmeasured","points":0,"max":1,"detail":"Unmeasurable: https://froala.com/signup did not serve us the signup page, so its gates are not something we read"},{"id":"signup_reachable","verdict":"unmeasured","points":0,"max":1,"detail":"Unmeasurable: https://froala.com/signup answers 404 to an agent and 403 to a Chrome user-agent, so nothing gets in from here and the difference we test for cannot be seen"},{"id":"programmatic_provisioning","verdict":"unmeasured","points":0,"max":2,"detail":"Unmeasurable: we could not read a single documentation page, so there was nothing to look in"},{"id":"self_serve","verdict":"unmeasured","points":0,"max":1,"detail":"Unmeasurable: no pricing page could be fetched"},{"id":"typed_package","verdict":"pass","points":1,"max":1,"detail":"froala-editor@5.4.0 ships types"},{"id":"machine_readable_api","verdict":"fail","points":0,"max":1,"detail":"No OpenAPI spec at the 5 usual paths, none declared by https://froala.com, and no markdown negotiation"}]},{"domain":"lexical.dev","category":"Embeddable rich text editors","total":4,"measurable":9,"max":18,"share":0.4444,"scannedAt":"2026-08-24T14:42:15.887Z","rateLimited":false,"refusesAgentsAtSignup":false,"measuredOn":null,"alsoNames":[],"unattendedGrant":null,"npmSource":"registry-search","scorecardUrl":"https://letagentsin.com/r/lexical-dev-20260824144215-7d026554aa082808","vendorUrl":"https://letagentsin.com/v/lexical.dev","checks":[{"id":"answers_plain_request","verdict":"pass","points":1,"max":1,"detail":"Answered 200 to LetAgentsIn/1.0 (+https://letagentsin.com/bot)"},{"id":"price_in_snippet","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no price for a search result to carry"},{"id":"llms_txt","verdict":"fail","points":0,"max":1,"detail":"No llms.txt at any of the 3 locations probed: https://lexical.dev/llms.txt, https://lexical.dev/llms-full.txt, https://docs.lexical.dev/llms.txt"},{"id":"docs_without_js","verdict":"unmeasured","points":0,"max":1,"detail":"Unmeasurable: no documentation page could be found to read"},{"id":"user_agents_allowed","verdict":"pass","points":1,"max":1,"detail":"No robots.txt, so nothing is disallowed for anyone"},{"id":"robots_paths_resolve","verdict":"notApplicable","points":0,"max":1,"detail":"No robots.txt, so it points nowhere"},{"id":"no_crawl_delay","verdict":"pass","points":1,"max":1,"detail":"No robots.txt, so no Crawl-delay applies"},{"id":"agent_entry_point","verdict":"fail","points":0,"max":2,"detail":"None of the 13 agent entry paths we asked on your site returns a file rather than your page shell"},{"id":"oauth_dcr","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no client for an agent to register"},{"id":"mcp_present","verdict":"fail","points":0,"max":1,"detail":"No MCP surface: nothing spoke MCP at mcp.lexical.dev, mcp.lexical.dev/mcp, mcp.lexical.dev/v1/mcp, api.lexical.dev/mcp, api.lexical.dev/v1/mcp, /mcp or /api/mcp, and any address you publish in the MCP registry, and no file mentions MCP"},{"id":"signup_no_captcha","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no gate to measure"},{"id":"signup_reachable","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs"},{"id":"programmatic_provisioning","verdict":"unmeasured","points":0,"max":2,"detail":"Unmeasurable: we could not read a single documentation page, so there was nothing to look in"},{"id":"self_serve","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no tier to state"},{"id":"typed_package","verdict":"pass","points":1,"max":1,"detail":"lexical@0.49.0 ships types, matched from the registry by who publishes it rather than by a link on your site"},{"id":"machine_readable_api","verdict":"fail","points":0,"max":1,"detail":"No OpenAPI spec at the 5 usual paths, none declared by https://lexical.dev, and no markdown negotiation"}]},{"domain":"liveblocks.io","category":"Embeddable rich text editors","total":10,"measurable":15,"max":18,"share":0.6667,"scannedAt":"2026-08-24T14:42:54.552Z","rateLimited":false,"refusesAgentsAtSignup":false,"measuredOn":null,"alsoNames":[],"unattendedGrant":null,"npmSource":"registry-search","scorecardUrl":"https://letagentsin.com/r/liveblocks-io-20260824144254-46cec1173d2796bd","vendorUrl":"https://letagentsin.com/v/liveblocks.io","checks":[{"id":"answers_plain_request","verdict":"pass","points":1,"max":1,"detail":"Answered 200 to LetAgentsIn/1.0 (+https://letagentsin.com/bot)"},{"id":"price_in_snippet","verdict":"pass","points":1,"max":1,"detail":"Your description tag carries an amount and a rate and free entry: “Start free” and “Upgrade to Pro for $25/month, Team for $500/month, or get custom Enterprise plans”"},{"id":"llms_txt","verdict":"pass","points":1,"max":1,"detail":"llms.txt and llms-full.txt present at https://liveblocks.io/llms.txt and https://liveblocks.io/llms-full.txt, and the 12 links we sampled across both files all answer"},{"id":"docs_without_js","verdict":"pass","points":1,"max":1,"detail":"9,746 characters of text without JS, on https://liveblocks.io/docs/authentication rather than on https://liveblocks.io/docs"},{"id":"user_agents_allowed","verdict":"pass","points":1,"max":1,"detail":"No on-demand agent is blocked"},{"id":"robots_paths_resolve","verdict":"notApplicable","points":0,"max":1,"detail":"robots.txt names no concrete path, only patterns or nothing, so there is no claim to check"},{"id":"no_crawl_delay","verdict":"pass","points":1,"max":1,"detail":"No Crawl-delay applies to the agents we check"},{"id":"agent_entry_point","verdict":"fail","points":0,"max":2,"detail":"None of the 13 agent entry paths we asked on your site returns a file rather than your page shell"},{"id":"oauth_dcr","verdict":"fail","points":0,"max":1,"detail":"OAuth metadata published at https://auth2.liveblocks.io/.well-known/oauth-authorization-server, but no registration_endpoint in it"},{"id":"mcp_present","verdict":"fail","points":0,"max":1,"detail":"MCP mentioned 1x in your own files, but nothing spoke MCP at mcp.liveblocks.io, mcp.liveblocks.io/mcp, mcp.liveblocks.io/v1/mcp, api.liveblocks.io/mcp, api.liveblocks.io/v1/mcp, /mcp or /api/mcp, and any address you publish in the MCP registry, nor at any address in https://liveblocks.io/docs/tools/mcp-server"},{"id":"signup_no_captcha","verdict":"unmeasured","points":0,"max":1,"detail":"Unmeasurable: https://liveblocks.io/auth/signup did not serve us the signup page, so its gates are not something we read"},{"id":"signup_reachable","verdict":"unmeasured","points":0,"max":1,"detail":"Unmeasurable: https://liveblocks.io/auth/signup answers 403 to an agent and 403 to a Chrome user-agent, so nothing gets in from here and the difference we test for cannot be seen"},{"id":"programmatic_provisioning","verdict":"partial","points":1,"max":2,"detail":"1 of 7 provisioning phrases across the 4 documentation pages and 2 machine-readable files we read: \"management api, beside a credential or something being created\", matched in: “Requires a team owner Management API access tokens are team-linked and can only be created by team owners”"},{"id":"self_serve","verdict":"pass","points":1,"max":1,"detail":"Free tier or no-card signals at https://liveblocks.io/pricing: \"No credit card\", \"Get started for free\", \"started for free\""},{"id":"typed_package","verdict":"pass","points":1,"max":1,"detail":"@liveblocks/client@3.24.1 ships types, matched from the registry by who publishes it rather than by a link on your site"},{"id":"machine_readable_api","verdict":"pass","points":1,"max":1,"detail":"Docs serve markdown to machines, at https://liveblocks.io/docs/authentication"}]},{"domain":"prosemirror.net","category":"Embeddable rich text editors","total":4,"measurable":10,"max":18,"share":0.4,"scannedAt":"2026-08-24T14:42:23.884Z","rateLimited":false,"refusesAgentsAtSignup":false,"measuredOn":null,"alsoNames":[],"unattendedGrant":null,"npmSource":"registry-search","scorecardUrl":"https://letagentsin.com/r/prosemirror-net-20260824144223-ff70398f2afeea42","vendorUrl":"https://letagentsin.com/v/prosemirror.net","checks":[{"id":"answers_plain_request","verdict":"pass","points":1,"max":1,"detail":"Answered 200 to LetAgentsIn/1.0 (+https://letagentsin.com/bot)"},{"id":"price_in_snippet","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no price for a search result to carry"},{"id":"llms_txt","verdict":"fail","points":0,"max":1,"detail":"No llms.txt at any of the 4 locations probed: https://prosemirror.net/llms.txt, https://prosemirror.net/llms-full.txt, https://docs.prosemirror.net/llms.txt, https://prosemirror.net/docs/llms.txt"},{"id":"docs_without_js","verdict":"pass","points":1,"max":1,"detail":"647 characters of text without JS"},{"id":"user_agents_allowed","verdict":"fail","points":0,"max":1,"detail":"robots.txt permits them, but your edge answered ChatGPT-User 403 at https://prosemirror.net/docs/, which a browser is served"},{"id":"robots_paths_resolve","verdict":"notApplicable","points":0,"max":1,"detail":"robots.txt names no concrete path, only patterns or nothing, so there is no claim to check"},{"id":"no_crawl_delay","verdict":"pass","points":1,"max":1,"detail":"No Crawl-delay applies to the agents we check"},{"id":"agent_entry_point","verdict":"fail","points":0,"max":2,"detail":"None of the 13 agent entry paths we asked on your site returns a file rather than your page shell"},{"id":"oauth_dcr","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no client for an agent to register"},{"id":"mcp_present","verdict":"fail","points":0,"max":1,"detail":"No MCP surface: nothing spoke MCP at mcp.prosemirror.net, mcp.prosemirror.net/mcp, mcp.prosemirror.net/v1/mcp, api.prosemirror.net/mcp, api.prosemirror.net/v1/mcp, /mcp or /api/mcp, and any address you publish in the MCP registry, and no file mentions MCP"},{"id":"signup_no_captcha","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no gate to measure"},{"id":"signup_reachable","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs"},{"id":"programmatic_provisioning","verdict":"unmeasured","points":0,"max":2,"detail":"Unmeasurable: only 1 documentation page could be read, which is too little to conclude anything"},{"id":"self_serve","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no tier to state"},{"id":"typed_package","verdict":"pass","points":1,"max":1,"detail":"prosemirror-view@1.42.2 ships types, matched from the registry by who publishes it rather than by a link on your site"},{"id":"machine_readable_api","verdict":"fail","points":0,"max":1,"detail":"No OpenAPI spec at the 5 usual paths, none declared by https://prosemirror.net/docs/, and no markdown negotiation"}]},{"domain":"quilljs.com","category":"Embeddable rich text editors","total":5,"measurable":9,"max":18,"share":0.5556,"scannedAt":"2026-08-24T14:42:20.916Z","rateLimited":false,"refusesAgentsAtSignup":false,"measuredOn":null,"alsoNames":[],"unattendedGrant":null,"npmSource":"registry-search","scorecardUrl":"https://letagentsin.com/r/quilljs-com-20260824144220-15624a1dc2c3383a","vendorUrl":"https://letagentsin.com/v/quilljs.com","checks":[{"id":"answers_plain_request","verdict":"pass","points":1,"max":1,"detail":"Answered 200 to LetAgentsIn/1.0 (+https://letagentsin.com/bot)"},{"id":"price_in_snippet","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no price for a search result to carry"},{"id":"llms_txt","verdict":"fail","points":0,"max":1,"detail":"No llms.txt at any of the 4 locations probed: https://quilljs.com/llms.txt, https://quilljs.com/llms-full.txt, https://docs.quilljs.com/llms.txt, https://quilljs.com/docs/quickstart/llms.txt"},{"id":"docs_without_js","verdict":"pass","points":1,"max":1,"detail":"2,041 characters of text without JS"},{"id":"user_agents_allowed","verdict":"pass","points":1,"max":1,"detail":"No on-demand agent is blocked"},{"id":"robots_paths_resolve","verdict":"notApplicable","points":0,"max":1,"detail":"robots.txt names no concrete path, only patterns or nothing, so there is no claim to check"},{"id":"no_crawl_delay","verdict":"pass","points":1,"max":1,"detail":"No Crawl-delay applies to the agents we check"},{"id":"agent_entry_point","verdict":"fail","points":0,"max":2,"detail":"None of the 13 agent entry paths we asked on your site returns a file rather than your page shell"},{"id":"oauth_dcr","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no client for an agent to register"},{"id":"mcp_present","verdict":"unmeasured","points":0,"max":1,"detail":"Unmeasurable: every JSON-RPC POST we sent came back with an empty 2xx, including one to a path nobody registered, so what answered was your edge rather than your server"},{"id":"signup_no_captcha","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no gate to measure"},{"id":"signup_reachable","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs"},{"id":"programmatic_provisioning","verdict":"unmeasured","points":0,"max":2,"detail":"Unmeasurable: only 1 documentation page could be read, which is too little to conclude anything"},{"id":"self_serve","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no tier to state"},{"id":"typed_package","verdict":"pass","points":1,"max":1,"detail":"quill@2.0.3 ships types, matched from the registry by who publishes it rather than by a link on your site"},{"id":"machine_readable_api","verdict":"fail","points":0,"max":1,"detail":"No OpenAPI spec at the 5 usual paths, none declared by https://quilljs.com/docs/quickstart, and no markdown negotiation"}]},{"domain":"slatejs.org","category":"Embeddable rich text editors","total":7,"measurable":10,"max":18,"share":0.7,"scannedAt":"2026-08-24T14:42:39.580Z","rateLimited":false,"refusesAgentsAtSignup":false,"measuredOn":null,"alsoNames":["github.com"],"unattendedGrant":null,"npmSource":"registry-search","scorecardUrl":"https://letagentsin.com/r/slatejs-org-20260824144239-ece4a5d29862b7ea","vendorUrl":"https://letagentsin.com/v/slatejs.org","checks":[{"id":"answers_plain_request","verdict":"pass","points":1,"max":1,"detail":"Answered 200 to LetAgentsIn/1.0 (+https://letagentsin.com/bot)"},{"id":"price_in_snippet","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no price for a search result to carry"},{"id":"llms_txt","verdict":"pass","points":1,"max":1,"detail":"llms.txt and llms-full.txt present at https://docs.slatejs.org/llms.txt and https://docs.slatejs.org/llms-full.txt, and 11 of the 12 links we sampled across both files answer. One is gone: https://github.com/ianstormtaylor/slate/tree/master/packages/slate/Changelog.md"},{"id":"docs_without_js","verdict":"pass","points":1,"max":1,"detail":"7,783 characters of text without JS"},{"id":"user_agents_allowed","verdict":"pass","points":1,"max":1,"detail":"No robots.txt, so nothing is disallowed for anyone"},{"id":"robots_paths_resolve","verdict":"notApplicable","points":0,"max":1,"detail":"No robots.txt, so it points nowhere"},{"id":"no_crawl_delay","verdict":"pass","points":1,"max":1,"detail":"No robots.txt, so no Crawl-delay applies"},{"id":"agent_entry_point","verdict":"fail","points":0,"max":2,"detail":"None of the 23 agent entry paths we asked on your site and your documentation host returns a file rather than your page shell"},{"id":"oauth_dcr","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no client for an agent to register"},{"id":"mcp_present","verdict":"fail","points":0,"max":1,"detail":"No MCP surface: nothing spoke MCP at mcp.slatejs.org, mcp.slatejs.org/mcp, mcp.slatejs.org/v1/mcp, api.slatejs.org/mcp, api.slatejs.org/v1/mcp, /mcp or /api/mcp, and any address you publish in the MCP registry, and no file mentions MCP"},{"id":"signup_no_captcha","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no gate to measure"},{"id":"signup_reachable","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs"},{"id":"programmatic_provisioning","verdict":"unmeasured","points":0,"max":2,"detail":"Unmeasurable: only 1 documentation page could be read, which is too little to conclude anything"},{"id":"self_serve","verdict":"notApplicable","points":0,"max":1,"detail":"Not applicable: we found no pricing page and no signup page of theirs, so there is no tier to state"},{"id":"typed_package","verdict":"pass","points":1,"max":1,"detail":"slate@0.126.2 ships types, matched from the registry by who publishes it rather than by a link on your site"},{"id":"machine_readable_api","verdict":"pass","points":1,"max":1,"detail":"Docs serve markdown to machines, at https://docs.slatejs.org/"}]},{"domain":"tiny.cloud","category":"Embeddable rich text editors","total":8,"measurable":16,"max":18,"share":0.5,"scannedAt":"2026-08-24T14:42:08.138Z","rateLimited":false,"refusesAgentsAtSignup":false,"measuredOn":null,"alsoNames":[],"unattendedGrant":true,"npmSource":"docs","scorecardUrl":"https://letagentsin.com/r/tiny-cloud-20260824144208-43b2a33d80c776e8","vendorUrl":"https://letagentsin.com/v/tiny.cloud","checks":[{"id":"answers_plain_request","verdict":"pass","points":1,"max":1,"detail":"Answered 200 to LetAgentsIn/1.0 (+https://letagentsin.com/bot)"},{"id":"price_in_snippet","verdict":"fail","points":0,"max":1,"detail":"Your pricing page's description tag names no amount and no entry condition: “Pricing. TinyMCE WYSIWYG HTML Editor Pricing. The most advanced features designed to simplify website content creation.”"},{"id":"llms_txt","verdict":"pass","points":1,"max":1,"detail":"llms.txt present at https://www.tiny.cloud/llms.txt, and the 12 links we sampled across the file all answer"},{"id":"docs_without_js","verdict":"pass","points":1,"max":1,"detail":"20,663 characters of text without JS, on https://www.tiny.cloud/docs/tinymce/6/rtc-jwt-authentication/ rather than on https://www.tiny.cloud/docs/tinymce/latest/"},{"id":"user_agents_allowed","verdict":"pass","points":1,"max":1,"detail":"No on-demand agent is blocked"},{"id":"robots_paths_resolve","verdict":"notApplicable","points":0,"max":1,"detail":"robots.txt names no concrete path, only patterns or nothing, so there is no claim to check"},{"id":"no_crawl_delay","verdict":"pass","points":1,"max":1,"detail":"No Crawl-delay applies to the agents we check"},{"id":"agent_entry_point","verdict":"fail","points":0,"max":2,"detail":"None of the 13 agent entry paths we asked on your site returns a file rather than your page shell"},{"id":"oauth_dcr","verdict":"pass","points":1,"max":1,"detail":"registration_endpoint published, and client_credentials is among the 13 advertised grants, so an unattended agent has a documented path to a token"},{"id":"mcp_present","verdict":"fail","points":0,"max":1,"detail":"No MCP surface: nothing spoke MCP at mcp.tiny.cloud, mcp.tiny.cloud/mcp, mcp.tiny.cloud/v1/mcp, api.tiny.cloud/mcp, api.tiny.cloud/v1/mcp, /mcp or /api/mcp, and any address you publish in the MCP registry, and no file mentions MCP"},{"id":"signup_no_captcha","verdict":"unmeasured","points":0,"max":1,"detail":"Unmeasurable: the signup form at https://www.tiny.cloud/auth/signup/ is not in the server HTML, so its gates are not either"},{"id":"signup_reachable","verdict":"fail","points":0,"max":1,"detail":"https://www.tiny.cloud/auth/signup/ is reachable, but its form needs JavaScript"},{"id":"programmatic_provisioning","verdict":"fail","points":0,"max":2,"detail":"None of the 7 provisioning phrases appears in the 4 documentation pages and 1 machine-readable file we read, including https://www.tiny.cloud/docs/tinymce/7/invalid-api-key/ and https://www.tiny.cloud/docs/tinymce/6/rtc-jwt-authentication/"},{"id":"self_serve","verdict":"pass","points":1,"max":1,"detail":"Free tier or no-card signals at https://www.tiny.cloud/pricing/: \"Free Trial\", \"$0\""},{"id":"typed_package","verdict":"pass","points":1,"max":1,"detail":"tinymce@8.8.2 ships types"},{"id":"machine_readable_api","verdict":"fail","points":0,"max":1,"detail":"No OpenAPI spec at the 5 usual paths, none declared by https://www.tiny.cloud/docs/tinymce/latest/, and no markdown negotiation"}]},{"domain":"tiptap.dev","category":"Embeddable rich text editors","total":9,"measurable":17,"max":18,"share":0.5294,"scannedAt":"2026-08-24T14:42:13.510Z","rateLimited":false,"refusesAgentsAtSignup":false,"measuredOn":null,"alsoNames":[],"unattendedGrant":null,"npmSource":"site","scorecardUrl":"https://letagentsin.com/r/tiptap-dev-20260824144213-83febbc27b57556b","vendorUrl":"https://letagentsin.com/v/tiptap.dev","checks":[{"id":"answers_plain_request","verdict":"pass","points":1,"max":1,"detail":"Answered 200 to LetAgentsIn/1.0 (+https://letagentsin.com/bot)"},{"id":"price_in_snippet","verdict":"fail","points":0,"max":1,"detail":"Your pricing page's description tag names no amount and no entry condition: “From building a new app to scaling globally to millions of documents and users, Tiptap covers your editor's growth.”"},{"id":"llms_txt","verdict":"pass","points":1,"max":1,"detail":"llms.txt present at https://tiptap.dev/llms.txt, and the 12 links we sampled across the file all answer"},{"id":"docs_without_js","verdict":"pass","points":1,"max":1,"detail":"15,590 characters of text without JS, on https://tiptap.dev/docs/editor/markdown/advanced-usage/custom-tokenizer rather than on https://tiptap.dev/docs/resources/changelog"},{"id":"user_agents_allowed","verdict":"pass","points":1,"max":1,"detail":"No on-demand agent is blocked"},{"id":"robots_paths_resolve","verdict":"notApplicable","points":0,"max":1,"detail":"robots.txt names no concrete path, only patterns or nothing, so there is no claim to check"},{"id":"no_crawl_delay","verdict":"pass","points":1,"max":1,"detail":"No Crawl-delay applies to the agents we check"},{"id":"agent_entry_point","verdict":"fail","points":0,"max":2,"detail":"None of the 13 agent entry paths we asked on your site returns a file rather than your page shell"},{"id":"oauth_dcr","verdict":"fail","points":0,"max":1,"detail":"No OAuth metadata on any of the 14 hosts probed: https://tiptap.dev, https://cloud.tiptap.dev, https://auth.tiptap.dev, https://login.tiptap.dev, and 10 more"},{"id":"mcp_present","verdict":"fail","points":0,"max":1,"detail":"No MCP surface: nothing spoke MCP at mcp.tiptap.dev, mcp.tiptap.dev/mcp, mcp.tiptap.dev/v1/mcp, api.tiptap.dev/mcp, api.tiptap.dev/v1/mcp, /mcp or /api/mcp, and any address you publish in the MCP registry, and no file mentions MCP"},{"id":"signup_no_captcha","verdict":"fail","points":0,"max":1,"detail":"turnstile appears in the server HTML of https://cloud.tiptap.dev/register"},{"id":"signup_reachable","verdict":"pass","points":1,"max":1,"detail":"Form renders in server HTML at https://cloud.tiptap.dev/register"},{"id":"programmatic_provisioning","verdict":"fail","points":0,"max":2,"detail":"None of the 7 provisioning phrases appears in the 4 documentation pages and 1 machine-readable file we read, including https://tiptap.dev/docs/authentication"},{"id":"self_serve","verdict":"pass","points":1,"max":1,"detail":"Free tier or no-card signals at https://tiptap.dev/pricing: \"no credit card\", \"free trial\", \"open source to Platform See what’s free\""},{"id":"typed_package","verdict":"pass","points":1,"max":1,"detail":"@tiptap/react@3.30.2 ships types"},{"id":"machine_readable_api","verdict":"pass","points":1,"max":1,"detail":"Docs serve markdown to machines, at https://tiptap.dev/docs/resources/changelog"}]}],"methodology":"https://letagentsin.com/methodology","terms":"Free to use, quote and republish with attribution to Let Agents In and a link to the methodology.","fullCorpus":"https://letagentsin.com/corpus.json","notes":["One row per domain, the most recent scan we hold, scored under a single formula version.","domains is how many we can publish under one formula and curated is how many we hold. When they differ, a reseed is part way through: scores from two formula versions are not comparable, so the rest wait for their next scan rather than appear here under a number that cannot be compared with the others.","share is total divided by measurable, not by max. A domain that refused our requests has a smaller denominator, not a worse number, so ranking on total alone would be wrong.","A verdict of unmeasured means we could not evaluate the check, and notApplicable means it does not apply to a product of this kind. Neither is a failure and neither counts in measurable.","Each entry in checks carries a tally, so nobody has to derive one. Filtering rows on points < max is the obvious way to count failures and it is wrong: it sweeps in every row we could not measure and every row the check does not apply to. Use tally.fail, and tally.measured as the denominator.","unattendedGrant is null when a vendor publishes no registration endpoint or no grant list, false when every advertised grant needs a person at a browser, true when client_credentials is among them. device_code counts as false: approving on another screen is still a person.","rateLimited means a 429 came back anywhere in that scan, at the door, at the signup or at a documentation page, so some checks are unmeasured for a reason that is ours and not theirs. Those rows are thinner than the site, and filtering them out is reasonable.","alsoNames lists the other registrable domains a row's own sentences name, which is how a row can be scored on a form at app.hellosign.com under the name dropboxsign.com. Anything counted across the corpus should read it for the same reason it reads measuredOn.","measuredOn names the domain a row was actually read on, when the home page landed somewhere else. Those rows describe the journey an agent takes from the domain in the name, and the files they score belong to the domain in measuredOn: sendgrid.com answers robots.txt with a redirect to twilio.com/robots.txt, and twilio.com is a row of its own, so anything counted across the corpus counts that file twice.","These are vendors we have no relationship with. Every check is one HTTP request with a published rule, so any row here can be reproduced or disputed."]}