{"ok":true,"kind":"crawlcheck-capability-registry-entry","v":1,"domain":"reducto.ai","page":"https://crawlcheck.io/registry/capabilities/reducto.ai","row":{"domain":"reducto.ai","host":"reducto.ai","report_id":"8dio0dsfj6","scanned_at":"2026-10-04T18:18:09.478Z","manifest":"bf9ab51f51aae3f83683ea83d3124cfb8172ae6f54800908a7ff9f41290a6330","declared":38,"protocols":["a2a","agent_skill","api","mcp","openapi"],"by_policy":{"metadata":4,"unknown":27,"authenticated_read_only":2,"irreversible_write":3,"external_communication":1,"public_read_only":1},"verified":0,"mismatches":0,"self_scan":false},"policy_classes":[{"id":"public_read_only","safety":"read_only_public","label":"Public read-only","automatic":true,"invoke":"May be called without credentials. CrawlCheck calls it only to check the declaration: GET with no input, on the scanned origin."},{"id":"authenticated_read_only","safety":"read_only_authenticated","label":"Authenticated read-only","automatic":false,"invoke":"Never called by CrawlCheck. An agent needs the user's own credentials and consent."},{"id":"reversible_write","safety":"reversible_write","label":"Reversible write","automatic":false,"invoke":"Never invoked automatically. Needs the owner's written authorisation and a test account."},{"id":"irreversible_write","safety":"irreversible_write","label":"Irreversible write","automatic":false,"invoke":"Never invoked automatically. Deletes or changes something that cannot be undone."},{"id":"financial","safety":"financial","label":"Financial","automatic":false,"invoke":"Never invoked automatically. Moves money or creates a charge."},{"id":"external_communication","safety":"external_communication","label":"External communication","automatic":false,"invoke":"Never invoked automatically. Sends a message, email or notification to someone."},{"id":"identity","safety":"identity_or_account","label":"Identity and accounts","automatic":false,"invoke":"Never invoked automatically. Creates, signs in to or changes an account or credential."},{"id":"unknown","safety":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},{"id":"metadata","safety":"metadata_only","label":"Metadata","automatic":false,"invoke":"Nothing to invoke: a listing, a server card or a skill file, not an operation."}],"items":[{"capability_id":"cap1:88e3910cc57f71296ed8","protocol":"api","operation":null,"method":null,"endpoint":"https://accounts.reducto.ai","declared":{"by":"https://reducto.ai/.well-known/api-catalog","declaration_sha256":"77ff8a3223f21e6cd69fc1621478eaeb0644b99ab48c16b11802ddfa4ef1d7c6","authentication":"unknown","params_required":null,"media":null,"safety_class":"metadata_only","safety_basis":"an API the catalog lists; its operations are in its own description"},"policy":{"id":"metadata","label":"Metadata","automatic":false,"invoke":"Nothing to invoke: a listing, a server card or a skill file, not an operation."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"on another origin (accounts.reducto.ai): only the scanned origin is called"}},{"capability_id":"cap1:33bfbc3e7a9695768a29","protocol":"api","operation":null,"method":null,"endpoint":"https://platform.reducto.ai","declared":{"by":"https://reducto.ai/.well-known/api-catalog","declaration_sha256":"77ff8a3223f21e6cd69fc1621478eaeb0644b99ab48c16b11802ddfa4ef1d7c6","authentication":"unknown","params_required":null,"media":null,"safety_class":"metadata_only","safety_basis":"an API the catalog lists; its operations are in its own description"},"policy":{"id":"metadata","label":"Metadata","automatic":false,"invoke":"Nothing to invoke: a listing, a server card or a skill file, not an operation."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"on another origin (platform.reducto.ai): only the scanned origin is called"}},{"capability_id":"cap1:b97371117716b308552f","protocol":"api","operation":null,"method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared":{"by":"https://reducto.ai/.well-known/api-catalog","declaration_sha256":"77ff8a3223f21e6cd69fc1621478eaeb0644b99ab48c16b11802ddfa4ef1d7c6","authentication":"unknown","params_required":null,"media":null,"safety_class":"metadata_only","safety_basis":"an API the catalog lists; its operations are in its own description"},"policy":{"id":"metadata","label":"Metadata","automatic":false,"invoke":"Nothing to invoke: a listing, a server card or a skill file, not an operation."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"on another origin (mcp.reducto.ai): only the scanned origin is called"}},{"capability_id":"cap1:6bfb2f35d513f647fff9","protocol":"openapi","operation":"parse_parse_post","method":"POST","endpoint":"https://platform.reducto.ai/parse","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":1,"media":["application/json"],"safety_class":"unknown","safety_basis":"POST with no declared reversibility"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:45450e25d1372e8de819","protocol":"openapi","operation":"async_parse_parse_async_post","method":"POST","endpoint":"https://platform.reducto.ai/parse_async","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":1,"media":["application/json"],"safety_class":"unknown","safety_basis":"POST with no declared reversibility"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:1fe46265b56c25de33a7","protocol":"openapi","operation":"extract_extract_post","method":"POST","endpoint":"https://platform.reducto.ai/extract","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":1,"media":["application/json"],"safety_class":"unknown","safety_basis":"POST with no declared reversibility"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:1f17fabfb1961531f9ec","protocol":"openapi","operation":"extract_async_extract_async_post","method":"POST","endpoint":"https://platform.reducto.ai/extract_async","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":1,"media":["application/json"],"safety_class":"unknown","safety_basis":"POST with no declared reversibility"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:c0953d2e8907c6252c4a","protocol":"openapi","operation":"split_split_post","method":"POST","endpoint":"https://platform.reducto.ai/split","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":1,"media":["application/json"],"safety_class":"unknown","safety_basis":"POST with no declared reversibility"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:2a31861847a9e323bd98","protocol":"openapi","operation":"split_async_split_async_post","method":"POST","endpoint":"https://platform.reducto.ai/split_async","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":1,"media":["application/json"],"safety_class":"unknown","safety_basis":"POST with no declared reversibility"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:51e59983f4cb2c4e2e02","protocol":"openapi","operation":"edit_edit_post","method":"POST","endpoint":"https://platform.reducto.ai/edit","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":1,"media":["application/json"],"safety_class":"unknown","safety_basis":"POST with no declared reversibility"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:728f9029c20d72eda590","protocol":"openapi","operation":"edit_async_edit_async_post","method":"POST","endpoint":"https://platform.reducto.ai/edit_async","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":1,"media":["application/json"],"safety_class":"unknown","safety_basis":"POST with no declared reversibility"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:beccac427b67b900cc27","protocol":"openapi","operation":"pipeline_pipeline_post","method":"POST","endpoint":"https://platform.reducto.ai/pipeline","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":1,"media":["application/json"],"safety_class":"unknown","safety_basis":"POST with no declared reversibility"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:bf1cf66a0c27a263f740","protocol":"openapi","operation":"pipeline_async_pipeline_async_post","method":"POST","endpoint":"https://platform.reducto.ai/pipeline_async","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":1,"media":["application/json"],"safety_class":"unknown","safety_basis":"POST with no declared reversibility"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:68f8f3a38ecc130ecb45","protocol":"openapi","operation":"classify_classify_post","method":"POST","endpoint":"https://platform.reducto.ai/classify","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":1,"media":["application/json"],"safety_class":"unknown","safety_basis":"POST with no declared reversibility"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:897b223644965c7904a2","protocol":"openapi","operation":"classify_async_classify_async_post","method":"POST","endpoint":"https://platform.reducto.ai/classify_async","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":1,"media":["application/json"],"safety_class":"unknown","safety_basis":"POST with no declared reversibility"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:358b0e1e49d0917e2f90","protocol":"openapi","operation":"retrieve_parse_job__job_id__get","method":"GET","endpoint":"https://platform.reducto.ai/job/{job_id}","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":1,"media":["application/json"],"safety_class":"read_only_authenticated","safety_basis":"HTTP GET behind http_bearer"},"policy":{"id":"authenticated_read_only","label":"Authenticated read-only","automatic":false,"invoke":"Never called by CrawlCheck. An agent needs the user's own credentials and consent."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:17b2f80abb97367d37ba","protocol":"openapi","operation":"delete_parse_job_job__job_id__delete","method":"DELETE","endpoint":"https://platform.reducto.ai/job/{job_id}","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":1,"media":null,"safety_class":"irreversible_write","safety_basis":"HTTP DELETE"},"policy":{"id":"irreversible_write","label":"Irreversible write","automatic":false,"invoke":"Never invoked automatically. Deletes or changes something that cannot be undone."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:8a5d2ce193b01a0444fc","protocol":"openapi","operation":"cancel_job_cancel__job_id__post","method":"POST","endpoint":"https://platform.reducto.ai/cancel/{job_id}","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":1,"media":["application/json"],"safety_class":"irreversible_write","safety_basis":"a write whose name contains “cancel”"},"policy":{"id":"irreversible_write","label":"Irreversible write","automatic":false,"invoke":"Never invoked automatically. Deletes or changes something that cannot be undone."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:e975357ceb56364a0f2a","protocol":"openapi","operation":"get_jobs_jobs_get","method":"GET","endpoint":"https://platform.reducto.ai/jobs","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":0,"media":["application/json"],"safety_class":"read_only_authenticated","safety_basis":"HTTP GET behind http_bearer"},"policy":{"id":"authenticated_read_only","label":"Authenticated read-only","automatic":false,"invoke":"Never called by CrawlCheck. An agent needs the user's own credentials and consent."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:515215b232818f303635","protocol":"openapi","operation":"upload_upload_post","method":"POST","endpoint":"https://platform.reducto.ai/upload","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":0,"media":["application/json"],"safety_class":"unknown","safety_basis":"POST with no declared reversibility"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:fa6a32fbee1b7022c47f","protocol":"openapi","operation":"delete_uploaded_file_upload__file_id__delete","method":"DELETE","endpoint":"https://platform.reducto.ai/upload/{file_id}","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":1,"media":["application/json"],"safety_class":"irreversible_write","safety_basis":"HTTP DELETE"},"policy":{"id":"irreversible_write","label":"Irreversible write","automatic":false,"invoke":"Never invoked automatically. Deletes or changes something that cannot be undone."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:96ed6f6a6c876ba215b9","protocol":"openapi","operation":"webhook_portal_configure_webhook_post","method":"POST","endpoint":"https://platform.reducto.ai/configure_webhook","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"http_bearer","params_required":0,"media":["application/json"],"safety_class":"external_communication","safety_basis":"its name contains “webhook”"},"policy":{"id":"external_communication","label":"External communication","automatic":false,"invoke":"Never invoked automatically. Sends a message, email or notification to someone."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:9a6f361cff032c53e407","protocol":"openapi","operation":"get_version_version_get","method":"GET","endpoint":"https://platform.reducto.ai/version","declared":{"by":"https://reducto.ai/openapi.json","declaration_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","authentication":"none","params_required":0,"media":["application/json"],"safety_class":"read_only_public","safety_basis":"HTTP GET with no declared security"},"policy":{"id":"public_read_only","label":"Public read-only","automatic":true,"invoke":"May be called without credentials. CrawlCheck calls it only to check the declaration: GET with no input, on the scanned origin."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"on another origin (platform.reducto.ai): only the scanned origin is called"}},{"capability_id":"cap1:8c5a5e17eef807dec1f5","protocol":"mcp","operation":"get_documentation","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared":{"by":"https://reducto.ai/.well-known/mcp/server-card.json","declaration_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","authentication":"none","params_required":null,"media":null,"safety_class":"unknown","safety_basis":"its effect is not stated in the declaration"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"on another origin (mcp.reducto.ai): only the scanned origin is called"}},{"capability_id":"cap1:9dc979d5b8934c257245","protocol":"mcp","operation":"upload_file","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared":{"by":"https://reducto.ai/.well-known/mcp/server-card.json","declaration_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","authentication":"none","params_required":null,"media":null,"safety_class":"unknown","safety_basis":"its effect is not stated in the declaration"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"on another origin (mcp.reducto.ai): only the scanned origin is called"}},{"capability_id":"cap1:f8eb30b1141cb3f43259","protocol":"mcp","operation":"parse_document","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared":{"by":"https://reducto.ai/.well-known/mcp/server-card.json","declaration_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","authentication":"none","params_required":null,"media":null,"safety_class":"unknown","safety_basis":"its effect is not stated in the declaration"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"on another origin (mcp.reducto.ai): only the scanned origin is called"}},{"capability_id":"cap1:0c37e6e10647a171ac83","protocol":"mcp","operation":"extract_data","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared":{"by":"https://reducto.ai/.well-known/mcp/server-card.json","declaration_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","authentication":"none","params_required":null,"media":null,"safety_class":"unknown","safety_basis":"its effect is not stated in the declaration"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"on another origin (mcp.reducto.ai): only the scanned origin is called"}},{"capability_id":"cap1:e6a578ec4476a00aed70","protocol":"mcp","operation":"split_document","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared":{"by":"https://reducto.ai/.well-known/mcp/server-card.json","declaration_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","authentication":"none","params_required":null,"media":null,"safety_class":"unknown","safety_basis":"its effect is not stated in the declaration"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"on another origin (mcp.reducto.ai): only the scanned origin is called"}},{"capability_id":"cap1:79090769d675fa8929dd","protocol":"mcp","operation":"classify_document","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared":{"by":"https://reducto.ai/.well-known/mcp/server-card.json","declaration_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","authentication":"none","params_required":null,"media":null,"safety_class":"unknown","safety_basis":"its effect is not stated in the declaration"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"on another origin (mcp.reducto.ai): only the scanned origin is called"}},{"capability_id":"cap1:0b71c1e1e31d7ddb50bf","protocol":"mcp","operation":"edit_document","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared":{"by":"https://reducto.ai/.well-known/mcp/server-card.json","declaration_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","authentication":"none","params_required":null,"media":null,"safety_class":"unknown","safety_basis":"its effect is not stated in the declaration"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"on another origin (mcp.reducto.ai): only the scanned origin is called"}},{"capability_id":"cap1:913f087c9cf2b26708f5","protocol":"mcp","operation":"get_job","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared":{"by":"https://reducto.ai/.well-known/mcp/server-card.json","declaration_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","authentication":"none","params_required":null,"media":null,"safety_class":"unknown","safety_basis":"its effect is not stated in the declaration"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"on another origin (mcp.reducto.ai): only the scanned origin is called"}},{"capability_id":"cap1:aeb814c2e93965790bc3","protocol":"mcp","operation":"list_jobs","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared":{"by":"https://reducto.ai/.well-known/mcp/server-card.json","declaration_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","authentication":"none","params_required":null,"media":null,"safety_class":"unknown","safety_basis":"its effect is not stated in the declaration"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"on another origin (mcp.reducto.ai): only the scanned origin is called"}},{"capability_id":"cap1:3c172f1f34ba05904729","protocol":"a2a","operation":"parse","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared":{"by":"https://reducto.ai/.well-known/agent-card.json","declaration_sha256":"35af3aee091a5566effb76f399b8c3e8d9b04d77230c19796ed864bd81a41b6f","authentication":"http_bearer","params_required":null,"media":null,"safety_class":"unknown","safety_basis":"its effect is not stated in the declaration"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:634a5d83f85e6d496eea","protocol":"a2a","operation":"extract","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared":{"by":"https://reducto.ai/.well-known/agent-card.json","declaration_sha256":"35af3aee091a5566effb76f399b8c3e8d9b04d77230c19796ed864bd81a41b6f","authentication":"http_bearer","params_required":null,"media":null,"safety_class":"unknown","safety_basis":"its effect is not stated in the declaration"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:7349a37b8463f00aa292","protocol":"a2a","operation":"split","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared":{"by":"https://reducto.ai/.well-known/agent-card.json","declaration_sha256":"35af3aee091a5566effb76f399b8c3e8d9b04d77230c19796ed864bd81a41b6f","authentication":"http_bearer","params_required":null,"media":null,"safety_class":"unknown","safety_basis":"its effect is not stated in the declaration"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:44f664e67eca124e678d","protocol":"a2a","operation":"classify","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared":{"by":"https://reducto.ai/.well-known/agent-card.json","declaration_sha256":"35af3aee091a5566effb76f399b8c3e8d9b04d77230c19796ed864bd81a41b6f","authentication":"http_bearer","params_required":null,"media":null,"safety_class":"unknown","safety_basis":"its effect is not stated in the declaration"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:2a38c8f2328a0f0a490a","protocol":"a2a","operation":"edit","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared":{"by":"https://reducto.ai/.well-known/agent-card.json","declaration_sha256":"35af3aee091a5566effb76f399b8c3e8d9b04d77230c19796ed864bd81a41b6f","authentication":"http_bearer","params_required":null,"media":null,"safety_class":"unknown","safety_basis":"its effect is not stated in the declaration"},"policy":{"id":"unknown","label":"Unknown","automatic":false,"invoke":"Never invoked. Its effect cannot be read from the declaration, so it is treated as the riskiest case."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"requires http_bearer: never called without the operator's own credentials"}},{"capability_id":"cap1:a2b991789121a5872889","protocol":"agent_skill","operation":"reducto","method":null,"endpoint":"https://reducto.ai/SKILL.md","declared":{"by":"https://reducto.ai/.well-known/agent-skills/index.json","declaration_sha256":"41568202d00bcefde447b90cfbea36a687459862478bacabf951a6c127474410","authentication":"none","params_required":null,"media":null,"safety_class":"metadata_only","safety_basis":"an instruction file an agent reads; not an operation"},"policy":{"id":"metadata","label":"Metadata","automatic":false,"invoke":"Nothing to invoke: a listing, a server card or a skill file, not an operation."},"observed":{"state":"not_attempted","verified":false,"at":null,"status":null,"content_type":null,"sha256":null,"mismatches":[],"not_attempted_because":"metadata: describes a surface, is not itself an action"}}],"mismatches":[],"certificate":{"certificate_id":"ccap1:f96e7b7c4b4ca8cdce7dc9090183df120e22d2f5e911469e78d8c940f3b1df26","certificate":{"kind":"crawlcheck-capability-certificate","v":1,"subject":"reducto.ai","domain":"reducto.ai","record":"8dio0dsfj6","report":"https://crawlcheck.io/r/8dio0dsfj6","manifest_sha256":"bf9ab51f51aae3f83683ea83d3124cfb8172ae6f54800908a7ff9f41290a6330","measured_at":"2026-10-04T18:18:09.478Z","verification_checked_at":"2026-10-04T18:18:13.828Z","verification_policy":"public GETs with no required input and one read-only MCP tool with no required input, on the scanned origin only; redirects recorded, not followed","invocation_rule":"capabilities are read from declarations only; nothing is invoked. Later verification may call read_only_public operations alone; every other class needs the site owner's authorisation and a test account, and unknown is never called","counts":{"declared":38,"verified":0,"mismatches":0},"items":[{"id":"cap1:88e3910cc57f71296ed8","protocol":"api","operation":null,"method":null,"endpoint":"https://accounts.reducto.ai","declared_by_sha256":"77ff8a3223f21e6cd69fc1621478eaeb0644b99ab48c16b11802ddfa4ef1d7c6","safety_class":"metadata_only","policy":"metadata","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:33bfbc3e7a9695768a29","protocol":"api","operation":null,"method":null,"endpoint":"https://platform.reducto.ai","declared_by_sha256":"77ff8a3223f21e6cd69fc1621478eaeb0644b99ab48c16b11802ddfa4ef1d7c6","safety_class":"metadata_only","policy":"metadata","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:b97371117716b308552f","protocol":"api","operation":null,"method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared_by_sha256":"77ff8a3223f21e6cd69fc1621478eaeb0644b99ab48c16b11802ddfa4ef1d7c6","safety_class":"metadata_only","policy":"metadata","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:6bfb2f35d513f647fff9","protocol":"openapi","operation":"parse_parse_post","method":"POST","endpoint":"https://platform.reducto.ai/parse","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:45450e25d1372e8de819","protocol":"openapi","operation":"async_parse_parse_async_post","method":"POST","endpoint":"https://platform.reducto.ai/parse_async","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:1fe46265b56c25de33a7","protocol":"openapi","operation":"extract_extract_post","method":"POST","endpoint":"https://platform.reducto.ai/extract","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:1f17fabfb1961531f9ec","protocol":"openapi","operation":"extract_async_extract_async_post","method":"POST","endpoint":"https://platform.reducto.ai/extract_async","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:c0953d2e8907c6252c4a","protocol":"openapi","operation":"split_split_post","method":"POST","endpoint":"https://platform.reducto.ai/split","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:2a31861847a9e323bd98","protocol":"openapi","operation":"split_async_split_async_post","method":"POST","endpoint":"https://platform.reducto.ai/split_async","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:51e59983f4cb2c4e2e02","protocol":"openapi","operation":"edit_edit_post","method":"POST","endpoint":"https://platform.reducto.ai/edit","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:728f9029c20d72eda590","protocol":"openapi","operation":"edit_async_edit_async_post","method":"POST","endpoint":"https://platform.reducto.ai/edit_async","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:beccac427b67b900cc27","protocol":"openapi","operation":"pipeline_pipeline_post","method":"POST","endpoint":"https://platform.reducto.ai/pipeline","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:bf1cf66a0c27a263f740","protocol":"openapi","operation":"pipeline_async_pipeline_async_post","method":"POST","endpoint":"https://platform.reducto.ai/pipeline_async","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:68f8f3a38ecc130ecb45","protocol":"openapi","operation":"classify_classify_post","method":"POST","endpoint":"https://platform.reducto.ai/classify","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:897b223644965c7904a2","protocol":"openapi","operation":"classify_async_classify_async_post","method":"POST","endpoint":"https://platform.reducto.ai/classify_async","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:358b0e1e49d0917e2f90","protocol":"openapi","operation":"retrieve_parse_job__job_id__get","method":"GET","endpoint":"https://platform.reducto.ai/job/{job_id}","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"read_only_authenticated","policy":"authenticated_read_only","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:17b2f80abb97367d37ba","protocol":"openapi","operation":"delete_parse_job_job__job_id__delete","method":"DELETE","endpoint":"https://platform.reducto.ai/job/{job_id}","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"irreversible_write","policy":"irreversible_write","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:8a5d2ce193b01a0444fc","protocol":"openapi","operation":"cancel_job_cancel__job_id__post","method":"POST","endpoint":"https://platform.reducto.ai/cancel/{job_id}","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"irreversible_write","policy":"irreversible_write","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:e975357ceb56364a0f2a","protocol":"openapi","operation":"get_jobs_jobs_get","method":"GET","endpoint":"https://platform.reducto.ai/jobs","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"read_only_authenticated","policy":"authenticated_read_only","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:515215b232818f303635","protocol":"openapi","operation":"upload_upload_post","method":"POST","endpoint":"https://platform.reducto.ai/upload","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:fa6a32fbee1b7022c47f","protocol":"openapi","operation":"delete_uploaded_file_upload__file_id__delete","method":"DELETE","endpoint":"https://platform.reducto.ai/upload/{file_id}","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"irreversible_write","policy":"irreversible_write","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:96ed6f6a6c876ba215b9","protocol":"openapi","operation":"webhook_portal_configure_webhook_post","method":"POST","endpoint":"https://platform.reducto.ai/configure_webhook","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"external_communication","policy":"external_communication","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:9a6f361cff032c53e407","protocol":"openapi","operation":"get_version_version_get","method":"GET","endpoint":"https://platform.reducto.ai/version","declared_by_sha256":"4171d97547403f1ec12b736d326311faf398a5031f19bd14b9c87f416b584f58","safety_class":"read_only_public","policy":"public_read_only","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:8c5a5e17eef807dec1f5","protocol":"mcp","operation":"get_documentation","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared_by_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:9dc979d5b8934c257245","protocol":"mcp","operation":"upload_file","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared_by_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:f8eb30b1141cb3f43259","protocol":"mcp","operation":"parse_document","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared_by_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:0c37e6e10647a171ac83","protocol":"mcp","operation":"extract_data","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared_by_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:e6a578ec4476a00aed70","protocol":"mcp","operation":"split_document","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared_by_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:79090769d675fa8929dd","protocol":"mcp","operation":"classify_document","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared_by_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:0b71c1e1e31d7ddb50bf","protocol":"mcp","operation":"edit_document","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared_by_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:913f087c9cf2b26708f5","protocol":"mcp","operation":"get_job","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared_by_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:aeb814c2e93965790bc3","protocol":"mcp","operation":"list_jobs","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared_by_sha256":"8e3540f0b9b8b56aed18de96782a267eb6169bbc31ab95e0b55c5c97c4e720a7","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:3c172f1f34ba05904729","protocol":"a2a","operation":"parse","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared_by_sha256":"35af3aee091a5566effb76f399b8c3e8d9b04d77230c19796ed864bd81a41b6f","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:634a5d83f85e6d496eea","protocol":"a2a","operation":"extract","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared_by_sha256":"35af3aee091a5566effb76f399b8c3e8d9b04d77230c19796ed864bd81a41b6f","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:7349a37b8463f00aa292","protocol":"a2a","operation":"split","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared_by_sha256":"35af3aee091a5566effb76f399b8c3e8d9b04d77230c19796ed864bd81a41b6f","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:44f664e67eca124e678d","protocol":"a2a","operation":"classify","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared_by_sha256":"35af3aee091a5566effb76f399b8c3e8d9b04d77230c19796ed864bd81a41b6f","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:2a38c8f2328a0f0a490a","protocol":"a2a","operation":"edit","method":null,"endpoint":"https://mcp.reducto.ai/mcp","declared_by_sha256":"35af3aee091a5566effb76f399b8c3e8d9b04d77230c19796ed864bd81a41b6f","safety_class":"unknown","policy":"unknown","observed":"not_attempted","status":null,"observed_sha256":null},{"id":"cap1:a2b991789121a5872889","protocol":"agent_skill","operation":"reducto","method":null,"endpoint":"https://reducto.ai/SKILL.md","declared_by_sha256":"41568202d00bcefde447b90cfbea36a687459862478bacabf951a6c127474410","safety_class":"metadata_only","policy":"metadata","observed":"not_attempted","status":null,"observed_sha256":null}],"mismatches":[]},"signature":{"alg":"Ed25519","kid":"hcIAczGf-8EFBnkunmZlvFWnD2nHHeHeC9cM4BTiBVo","certificate_sha256":"f96e7b7c4b4ca8cdce7dc9090183df120e22d2f5e911469e78d8c940f3b1df26","message":"the UTF-8 bytes of \"crawlcheck-capability-certificate-v1\\n\" followed by certificate_sha256 (hex), where certificate_sha256 = SHA-256 of the certificate as canonical JSON (keys sorted, no whitespace)","sig":"_350ZWXPFDsQE3lHeK62YSwyiBV20gCoQqDnR0UdfVx6hRQpUzIguEO484D1r-bChzcESA1sAOf5F97wX68BBQ"},"issuer":{"name":"CrawlCheck observer","key":{"jwk":{"kty":"OKP","crv":"Ed25519","x":"Ny5tAiGdpyVWTm64G1_0g_sTo4ocLL7kqjZ6cK7G5KM"},"directory":"https://crawlcheck.io/.well-known/http-message-signatures-directory"}}},"verify":"https://crawlcheck.io/api/registry/capabilities/verify?domain=reducto.ai"}