{"dataset_contract":"sourcey.agent-readiness-dataset/v1alpha1","release_id":"sha256:354e324817cf866aca90511150831ff366581b4cd801c1c6932a457095de6396","artifact_sha256":"sha256:d1f21aec57b4240d61666637c69aacd907d46bfc565dd855e16215dcadc5a8ab","profiles":[{"agent_readiness_profile_id":"arp_01kzd4bb9sf13ma4xaxb73d82x","entity_id":"ent_01kyh8fpe3n3yye39kmzvy410z","scope":{"product":{"key":"microsoft-azure","name":"Microsoft Azure"},"funnel":{"key":"api-resource-management","name":"API resource management"}},"declaration_revision_digest":"sha256:310f4c381bb6e9a96cf1316405b000eedf8809a97131ca4328e5b1f8b3bcb857","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:d14a6222e147bd0e94678c9212d85c0ec9e89a57a79997a8583c855c33955d0d","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"A","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"operate","stage_label":"Operate","public_state":"limited","finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"Azure Resource Manager documents asynchronous status tracking, Retry-After intervals, terminal provisioning states and error objects; the selected quotes do not establish idempotency semantics for resource operations."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:52:01.482Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/microsoft/agent-readiness/microsoft-azure/api-resource-management","projection_digest":"sha256:a44733a4d1ab47dad79730e4b999eb92b1b826325281caf58c199452c7687406","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"The Azure REST API reference documentation clearly identifies Azure REST endpoints as stable entrypoints and provides guidance on acquiring OAuth2 access tokens via Microsoft Entra ID authorize and token endpoints."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"access_entrypoint_stability","condition":"Is there a stable route to begin obtaining service access?","finding":"A stable canonical route begins the required access bootstrap.","context":"A stable route to begin service access exists at https://signup.azure.com/ ('Azure - Sign up')."}},{"stage":"pay","stage_label":"Pay","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"Charge or no-charge status, currency, recurrence, and material conditions are disclosed.","context":"Azure discloses pricing details, pay-as-you-go rates, US dollar pricing worldwide, local currency conversion rules, and credit card or invoice payment options."}},{"stage":"provision","stage_label":"Provision","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"provisioning_operability","condition":"Can provisioning be initiated within supported agent authority?","finding":"Provisioning is machine-triggerable or follows deterministically from an allowed handoff.","context":"Azure Resource Manager operations can be programmatically initiated via machine-triggerable REST API endpoints, such as resource group creation (`PUT /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}`) and resource deployment."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"Azure Resource Manager documents asynchronous status tracking, Retry-After intervals, terminal provisioning states and error objects; the selected quotes do not establish idempotency semantics for resource operations."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzez1rxy9f1wce0r3p6yd35y","entity_id":"ent_01kyh8fpe10b164tj935t8k5zb","scope":{"product":{"key":"aws-cloud","name":"AWS Cloud"},"funnel":{"key":"api-resource-management","name":"API resource management"}},"declaration_revision_digest":"sha256:0a626e30371202e5a17b20a0c3b3a9cfdaedf33be48b1dbb081867c46256ffb1","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:e14777240e6f92c347315ce52789514667bd3ab32421946a97fc0c9644390aca","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"B+","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"provision","stage_label":"Provision","public_state":"limited","finding":{"signal_code":"provisioning_completion","condition":"Can an agent determine successful provisioning completion and reconcile asynchronous failure?","finding":"Completion is observable, but an asynchronous path omits a material terminal, bound, or reconciliation property.","context":"AWS Cloud Control API provides progress tracking via get-resource-request-status, returning ProgressEvent objects with OperationStatus (e.g., IN_PROGRESS, SUCCESS) and RequestToken. However, explicit failure reconciliation contracts or explicit time bounds are not fully established in the retained text."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:52:02.607Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/aws/agent-readiness/aws-cloud/api-resource-management","projection_digest":"sha256:812d15400a8fa09f9b14c039320a0db139736ff63240cae4dcee57697543a12f","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"AWS Cloud Control API is publicly discoverable as a standardized API service for performing CRUD-L operations on supported resources in an AWS account, accessible via the AWS Command Line Interface (AWS CLI)."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"access_entrypoint_stability","condition":"Is there a stable route to begin obtaining service access?","finding":"A stable canonical route begins the required access bootstrap.","context":"AWS provides a stable canonical signup entrypoint allowing users to enter a root user email address and account name to begin account registration."}},{"stage":"pay","stage_label":"Pay","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"Charge or no-charge status, currency, recurrence, and material conditions are disclosed.","context":"The evidence discloses AWS's pay-as-you-go pricing approach without requiring long-term contracts, alongside the availability of a catalog of products and prices via the AWS Price List API."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"provisioning_completion","condition":"Can an agent determine successful provisioning completion and reconcile asynchronous failure?","finding":"Completion is observable, but an asynchronous path omits a material terminal, bound, or reconciliation property.","context":"AWS Cloud Control API provides progress tracking via get-resource-request-status, returning ProgressEvent objects with OperationStatus (e.g., IN_PROGRESS, SUCCESS) and RequestToken. However, explicit failure reconciliation contracts or explicit time bounds are not fully established in the retained text."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"AWS Cloud Control API documents idempotent ClientToken requests, handler error codes and request status tracking through ProgressEvent; the selected quotes do not establish cancellation semantics for a resource request."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzez1s4a8w7a28x0v333trbt","entity_id":"ent_01kyh8fpe210m3jqn5xgzztgv8","scope":{"product":{"key":"google-cloud","name":"Google Cloud"},"funnel":{"key":"api-resource-management","name":"API resource management"}},"declaration_revision_digest":"sha256:af1a006ce6ceb905ff6222ce14256ffc9f76eda0eb22b9c217d42741091ca92b","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:996789e2e69f0de55a7332be37daa7eb75cfbfceb55d6918b6fdead538874504","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"B+","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"provision","stage_label":"Provision","public_state":"limited","finding":{"signal_code":"provisioning_completion","condition":"Can an agent determine successful provisioning completion and reconcile asynchronous failure?","finding":"Completion is observable, but an asynchronous path omits a material terminal, bound, or reconciliation property.","context":"Resource Manager operations.get endpoint permits polling long-running operations at intervals to retrieve their latest state via GET requests, but current evidence leaves specific terminal failure reconciliation and time bounds unstated."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:51:48.703Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/google-cloud/agent-readiness/google-cloud/api-resource-management","projection_digest":"sha256:804b415f88a3c81d80635208ecc38907aa0f14e81439cbb07b4f3423840b1f01","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"The Cloud Resource Manager API reference documents the base service endpoint (https://cloudresourcemanager.googleapis.com) and exact REST resource routes."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"access_entrypoint_stability","condition":"Is there a stable route to begin obtaining service access?","finding":"A stable canonical route begins the required access bootstrap.","context":"The retained evidence provides a canonical entrypoint to begin obtaining service access via the 'Get started for free' route on the Google Cloud free page."}},{"stage":"pay","stage_label":"Pay","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"Charge or no-charge status, currency, recurrence, and material conditions are disclosed.","context":"Google Cloud Resource Manager pricing documentation explicitly discloses that use of the Cloud Resource Manager API and Cloud Asset API is free of charge, while detailing exact monthly rates in USD ($0.005 per month) and operation class charges for bucket tags."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"provisioning_completion","condition":"Can an agent determine successful provisioning completion and reconcile asynchronous failure?","finding":"Completion is observable, but an asynchronous path omits a material terminal, bound, or reconciliation property.","context":"Resource Manager operations.get endpoint permits polling long-running operations at intervals to retrieve their latest state via GET requests, but current evidence leaves specific terminal failure reconciliation and time bounds unstated."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"Documentation establishes HTTP status codes, error messages (such as rate limits and quota limits), and operation polling via operations.get, but does not establish cancellation or full reconciliation semantics."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4x54qzpnr923g24x6x8","entity_id":"ent_01kyh8fpe15bvn8rdb84vmk85d","scope":{"product":{"key":"anthropic-api","name":"Anthropic API"},"funnel":{"key":"api-service-lifecycle","name":"API service lifecycle"}},"declaration_revision_digest":"sha256:ace6b82971bab9d12b79eefdec2952b7e786d13a366f81f64820ed87f635b13c","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:ce068885cdcbe343d46efbc59e63569fe0431650aea3d2885d058c6fb0cc7ef2","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"B","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"sign_up","stage_label":"Sign up","public_state":"limited","finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"First-party documentation explicitly details machine credentials including Console API keys and short-lived Workload Identity Federation tokens, but API key generation requires manual creation in Console Account Settings."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:51:52.963Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/anthropic/agent-readiness/anthropic-api/api-service-lifecycle","projection_digest":"sha256:fce93178bab30388492a7ffeaccca7c9366ce12e33334c2e34ebfc35a3a8a577","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"The exact Claude API service and stable entrypoints (including official ant CLI, client SDKs in 7 languages, and Messages API documentation) are publicly discoverable on the Claude Platform Docs."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"First-party documentation explicitly details machine credentials including Console API keys and short-lived Workload Identity Federation tokens, but API key generation requires manual creation in Console Account Settings."}},{"stage":"pay","stage_label":"Pay","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"Charge or no-charge status, currency, recurrence, and material conditions are disclosed.","context":"The platform pricing documentation and API billing guide disclose the commercial commitment terms, stating that API usage is billed in USD based on actual monthly usage or CCU rate conversions ($0.01 per CCU), with arrears or prepaid options explained prior to charge."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"access_material_delivery","condition":"Can usable access material be delivered securely to an authorized agent?","finding":"Delivery needs additional human transfer or has weak scope or lifecycle semantics.","context":"The API overview states that API keys are generated in Account Settings within the web Console, where key type and expiration are chosen upon creation. Because key generation is handled manually through a web dashboard, delivery requires human transfer."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"Anthropic documents HTTP error codes, error shapes and SDK retries with exponential backoff honoring retry-after; the selected quotes do not establish idempotency or reconciliation semantics for the Messages operation."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4x62a9z5fqb4kvp1hme","entity_id":"ent_01kyh8jtf535570d9z2bng6j1t","scope":{"product":{"key":"cloudflare-developer-platform","name":"Cloudflare Developer Platform"},"funnel":{"key":"api-resource-management","name":"API resource management"}},"declaration_revision_digest":"sha256:7c2f84b77c28e1a17072cd1a4f83e907639c92be71d63eb32d5de89f41f38652","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:5885b19f6ac622ff37d20cb9834e9ca3501768e1cd1bbd439a0d86026ce7caaa","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"C+","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"sign_up","stage_label":"Sign up","public_state":"limited","finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Cloudflare provides scoped, revocable API tokens with defined permissions, but token secret delivery requires manual user copying from the dashboard."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:51:59.753Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/cloudflare/agent-readiness/cloudflare-developer-platform/api-resource-management","projection_digest":"sha256:7c9aab2e86f70cd6f9a2de83caca999172fb5670938fea3af8cd773340fed4fa","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"The Cloudflare API reference documentation explicitly exposes stable entrypoints and methods, such as Upload Worker Module, and lists public API navigation and endpoints."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Cloudflare provides scoped, revocable API tokens with defined permissions, but token secret delivery requires manual user copying from the dashboard."}},{"stage":"pay","stage_label":"Pay","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"self_service_purchase","condition":"Is a direct self-service path to paid access documented?","finding":"Self-service is tier- or condition-limited, or a bounded vendor review exposes status.","context":"Documentation establishes self-service management paths to purchase Cloudflare products, add payment methods, or upgrade domain plans in the dashboard, but contract plans for mission-critical applications require custom enterprise billing."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"access_material_delivery","condition":"Can usable access material be delivered securely to an authorized agent?","finding":"Delivery needs additional human transfer or has weak scope or lifecycle semantics.","context":"According to Cloudflare documentation, selecting Create Token generates the token's secret, which must be copied to a secure place by the user and is only shown once. Because access material delivery relies on manual human copying/transfer, it satisfies partial delivery."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"Cloudflare troubleshooting documentation states that verifying an API token via /user/tokens/verify returns success status and expiration metadata, but it does not establish full failure mode semantics such as retries, idempotency, or reconciliation."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4x7n0qb42yj8v6ce9ds","entity_id":"ent_01kyh8fpe2hwmmvk3eex1hq433","scope":{"product":{"key":"datadog-api","name":"Datadog API"},"funnel":{"key":"monitor-operations","name":"Monitor operations"}},"declaration_revision_digest":"sha256:0bd6668b1e170e82c6c8dc820d218f5fc6dd82dd6362293cb36a8fe927345f2f","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:2bc5b2d57e317e1158dcc738abcc9e532499f7b6a4bac7a42afe19b461e1a9ad","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"C+","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"sign_up","stage_label":"Sign up","public_state":"limited","finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Datadog provides scoped application keys and non-interactive service accounts to access APIs without associating scripts with specific individuals. However, application keys are created within the web application, leaving issuance or manual copying constrained."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:52:01.363Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/datadog/agent-readiness/datadog-api/monitor-operations","projection_digest":"sha256:79b7e625d20c3a772426603a8dfd5ef7a7cb4268c6b31cca33448360a4c266a3","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"Datadog explicitly provides its public API documentation entrypoint, noting that the Datadog API allows programmatic access to the platform, uses standard HTTP response codes, and authenticates via DD-API-KEY and DD-APPLICATION-KEY headers."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Datadog provides scoped application keys and non-interactive service accounts to access APIs without associating scripts with specific individuals. However, application keys are created within the web application, leaving issuance or manual copying constrained."}},{"stage":"pay","stage_label":"Pay","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"The public commitment omits a material component until later in the flow.","context":"Datadog discloses pricing currency ($) and recurrence options (monthly and annual) across products such as App and API Protection (starting at $31 per host per month) and Feature Flags, but notes that volume terms, overages, and custom billing plans can be customized, making overall commitment components contextual."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"access_material_delivery","condition":"Can usable access material be delivered securely to an authorized agent?","finding":"Delivery needs additional human transfer or has weak scope or lifecycle semantics.","context":"Datadog application keys are displayed only once during creation when One-Time Read (OTR) mode is enabled and cannot be retrieved later."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"Datadog documents rate limit failure handling, returning HTTP status code 429 along with X-RateLimit-Period and X-RateLimit-Limit response headers to guide retry timing. However, idempotency, cancellation, and reconciliation semantics are not fully established in the retained text."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4x8r3etq6ck2b79hsw5","entity_id":"ent_01kyh8fpe29kn3bm05h7kyqyka","scope":{"product":{"key":"digitalocean-cloud","name":"DigitalOcean Cloud"},"funnel":{"key":"api-resource-management","name":"API resource management"}},"declaration_revision_digest":"sha256:91235dfb63f4063038c5b50a97063a080ec3a94bddf505c6d34db37f19ff4874","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:cb8d24ee4b88ace6ed3697623a1d4d2fe67be3ef0315b2a076933f735dd3702f","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"B","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"sign_up","stage_label":"Sign up","public_state":"limited","finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"DigitalOcean provides personal access tokens with custom scopes and expiration settings, but token creation requires logging into the Control Panel and manually generating the token."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:51:39.470Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/digitalocean/agent-readiness/digitalocean-cloud/api-resource-management","projection_digest":"sha256:cdb9159c562050d41e541e5cca1140e5869e4acd2a23152b162f9840857e6ccf","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"DigitalOcean provides public entrypoints and reference documentation for its four primary APIs: DigitalOcean API, Spaces API, OAuth API, and Metadata API."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"DigitalOcean provides personal access tokens with custom scopes and expiration settings, but token creation requires logging into the Control Panel and manually generating the token."}},{"stage":"pay","stage_label":"Pay","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"Charge or no-charge status, currency, recurrence, and material conditions are disclosed.","context":"DigitalOcean discloses flat and usage-based pricing on its pricing page with monthly caps and currency in USD, including automated billing on the first day of each month or upon reaching a threshold."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"access_material_delivery","condition":"Can usable access material be delivered securely to an authorized agent?","finding":"Delivery needs additional human transfer or has weak scope or lifecycle semantics.","context":"Personal access tokens can be created in the DigitalOcean Control Panel. DigitalOcean documentation states that when creating a token, users must save the displayed token because the secret is only shown once for security purposes."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"DigitalOcean documents structured 4xx/5xx errors and rate-limit headers with 429 retry-after; the selected quotes do not establish idempotency, cancellation or reconciliation semantics."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4x9v5n7pd3j2gc8q1fk","entity_id":"ent_01kyh8fpe3xgjjktffez1t34rn","scope":{"product":{"key":"github-rest-api","name":"GitHub REST API"},"funnel":{"key":"repository-operations","name":"Repository operations"}},"declaration_revision_digest":"sha256:c84bb9c11eeacdfee52e7c85e89a99d0bbd462c8fd8969d27dfe729d22dca84f","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:26ab905c0f0eb798278999e4b609a200b749c6368dbd757b47830ca564fe447b","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"B+","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"provision","stage_label":"Provision","public_state":"limited","finding":{"signal_code":"access_material_delivery","condition":"Can usable access material be delivered securely to an authorized agent?","finding":"Delivery needs additional human transfer or has weak scope or lifecycle semantics.","context":"GitHub REST API documentation describes creating personal access tokens and generating user access tokens or client secrets via app settings. Delivering credentials through manual UI creation or OAuth exchange flows involves human transfer or web/device authorization handoffs."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:51:30.930Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/github/agent-readiness/github-rest-api/repository-operations","projection_digest":"sha256:3a41317759a471cf0c46745bf258d1a9dfc082027c87f195c14746ac2523392b","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"The GitHub REST API and its documentation entrypoints are publicly discoverable, including versioning details and getting started documentation."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"access_entrypoint_stability","condition":"Is there a stable route to begin obtaining service access?","finding":"A stable canonical route begins the required access bootstrap.","context":"Documentation explicitly directs users to https://github.com/signup as the canonical route to sign up for a personal account."}},{"stage":"pay","stage_label":"Pay","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"Charge or no-charge status, currency, recurrence, and material conditions are disclosed.","context":"GitHub explicitly discloses its pricing plans, charge status ($0 USD/month for Free), currency (USD), recurrence (monthly/yearly), and billing impact rules such as immediate prorated billing for plan upgrades and seat additions."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"access_material_delivery","condition":"Can usable access material be delivered securely to an authorized agent?","finding":"Delivery needs additional human transfer or has weak scope or lifecycle semantics.","context":"GitHub REST API documentation describes creating personal access tokens and generating user access tokens or client secrets via app settings. Delivering credentials through manual UI creation or OAuth exchange flows involves human transfer or web/device authorization handoffs."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"Troubleshooting documentation defines status codes, rate limit error handling (using x-ratelimit-remaining, x-ratelimit-reset, and retry-after headers), exponential backoff for retries, timeouts, and JSON validation errors, but idempotency, cancellation, and reconciliation semantics are not fully established."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4xa1m8yr7cf5q2b9vn6","entity_id":"ent_01kyh8fpe3new9gxd18qs3bskh","scope":{"product":{"key":"hubspot-crm-api","name":"HubSpot CRM API"},"funnel":{"key":"api-integration-lifecycle","name":"API integration lifecycle"}},"declaration_revision_digest":"sha256:2538ff7b69270e0b651ecd3add7601bd2e6619766e25ce9b137579cdd014d881","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:2f3b49ebdee173ea1951147656ae676c691fcbc22b55a64c29ae92d2c18fbb23","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"B","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"pay","stage_label":"Pay","public_state":"limited","finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"The public commitment omits a material component until later in the flow.","context":"HubSpot discloses the no-charge commitment for the free CRM before any authorization (100% free with no expiration date, no credit card required) and states that premium functionality is an upgrade; the charge, currency and recurrence of the paid tiers are not disclosed on the tested surfaces, so a material component of the paid commitment is deferred."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:52:22.641Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/hubspot/agent-readiness/hubspot-crm-api/api-integration-lifecycle","projection_digest":"sha256:1d244b7de425efc171a115db567d66d046020798b9c00a916be5eb1ae8fd77d2","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"The API overview publicly exposes stable entrypoints and endpoint patterns, such as GET /crm/objects/2026-03/contacts, under the root URL https://api.hubapi.com/."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"access_entrypoint_stability","condition":"Is there a stable route to begin obtaining service access?","finding":"A stable canonical route begins the required access bootstrap.","context":"A stable signup entry point to begin obtaining HubSpot service access is directly observed at the canonical URL."}},{"stage":"pay","stage_label":"Pay","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"The public commitment omits a material component until later in the flow.","context":"HubSpot discloses the no-charge commitment for the free CRM before any authorization (100% free with no expiration date, no credit card required) and states that premium functionality is an upgrade; the charge, currency and recurrence of the paid tiers are not disclosed on the tested surfaces, so a material component of the paid commitment is deferred."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"access_material_delivery","condition":"Can usable access material be delivered securely to an authorized agent?","finding":"Delivery needs additional human transfer or has weak scope or lifecycle semantics.","context":"HubSpot OAuth tokens (access and refresh tokens) are delivered via an authorization code exchange request to /oauth/v3/token using the client ID and client secret."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"HubSpot documents status codes (such as 429 Rate limits and 5xx timeouts), retry recommendations (pausing for a few seconds), and JSON error object structure (message, code, context), but does not fully specify idempotency or cancellation semantics."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4xb4p2kv9d7n6ts3c8y","entity_id":"ent_01kyh8fpe4ys74qx1k4zfcqpjv","scope":{"product":{"key":"mongodb-atlas-api","name":"MongoDB Atlas Administration API"},"funnel":{"key":"cluster-lifecycle","name":"Cluster lifecycle"}},"declaration_revision_digest":"sha256:a095b2c61d24a5e449b610ac24c8106f2afaf24b22bfaa6a7123d3d72b7e8e60","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:f97d1ca32a3f50ade240991b0a691f82970975553f209917a18b9d9a8c9747b2","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"C+","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"sign_up","stage_label":"Sign up","public_state":"limited","finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Service accounts provide OAuth 2.0 client credentials access tokens with roles and token revocation, but require initial manual setup in the organization/project."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:53:00.993Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/mongodb/agent-readiness/mongodb-atlas-api/cluster-lifecycle","projection_digest":"sha256:3b336b8f3380da8cdce18ad49903d9eefde910f21239b1fa6cda0e39929d9f99","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"The exact service and its stable RESTful administrative endpoints are discoverable via the Atlas Administration API Reference documentation."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Service accounts provide OAuth 2.0 client credentials access tokens with roles and token revocation, but require initial manual setup in the organization/project."}},{"stage":"pay","stage_label":"Pay","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"The public commitment omits a material component until later in the flow.","context":"The pricing schedule discloses base cluster rates, billing frequencies (hourly with monthly invoices, or monthly rates), and USD pricing for MongoDB Atlas. However, actual pricing depends on deployment requirements, configurations, and location, leaving certain cost components contextual until configuration."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"provisioning_completion","condition":"Can an agent determine successful provisioning completion and reconcile asynchronous failure?","finding":"Completion is observable, but an asynchronous path omits a material terminal, bound, or reconciliation property.","context":"Cluster creation returns a stateName field indicating control plane activity (IDLE, CREATING, UPDATING, DELETING). State CREATING indicates a cluster being provisioned for the first time until ready. Admitted evidence does not establish asynchronous failure reconciliation or time bounds."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"Atlas Administration API documents error response codes (such as 400, 409, 410, 429 RATE_LIMITED, and 500) and rate limit parameters, but the retained text does not establish explicit idempotency, cancellation, or reconciliation semantics."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4xc6w3hq8r2f9bj5nta","entity_id":"ent_01kyh8fpe42ws3zbxkkaybx2ea","scope":{"product":{"key":"neon-api","name":"Neon API"},"funnel":{"key":"project-database-lifecycle","name":"Project and database lifecycle"}},"declaration_revision_digest":"sha256:aa7e9acb167fe90a50fff00c79fef920a5a8f831444401e6a97b73f3b922d798","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:767084f9b1fa842a33dda9a1e5b2d39adbd85d9975b5622edf5f63779517ff6d","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"C+","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"evaluate","stage_label":"Evaluate","public_state":"limited","finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"Discovery works but is incomplete, context-dependent, split, or unstable.","context":"The page states that the Neon API reference has moved to https://neon.com/docs/reference/api and that api-docs.neon.tech is deprecated and will be retired soon, though the Neon API itself remains fully supported and unchanged."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:51:57.210Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/neon/agent-readiness/neon-api/project-database-lifecycle","projection_digest":"sha256:93204be9d7e09cf2622297df3db47e306e9b74bb18f77cfb6599eb52f41c738b","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"Discovery works but is incomplete, context-dependent, split, or unstable.","context":"The page states that the Neon API reference has moved to https://neon.com/docs/reference/api and that api-docs.neon.tech is deprecated and will be retired soon, though the Neon API itself remains fully supported and unchanged."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Neon supports Personal, Organization, and Project-scoped API keys with specific roles and revocation support, but creating the first API key requires manual authentication in the console."}},{"stage":"pay","stage_label":"Pay","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"Charge or no-charge status, currency, recurrence, and material conditions are disclosed.","context":"Neon discloses its plan commitment details, including a $0/month Free tier and pay-for-what-you-use pricing for Launch ($0.106 per CU-hour, $0.20 per GB-month storage) and Scale ($0.222 per CU-hour) plans."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"access_material_delivery","condition":"Can usable access material be delivered securely to an authorized agent?","finding":"Delivery needs additional human transfer or has weak scope or lifecycle semantics.","context":"When creating API keys from the Neon Console, the secret token will be displayed only once and cannot be retrieved later, requiring manual copying."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"The Create project endpoint documentation details response status codes, including safe retries for GET, HEAD, OPTIONS, 503 Service Unavailable, and 423 Locked responses, as well as warning that non-idempotent methods (POST, PATCH, DELETE, PUT) are generally not safe to retry. Safe failure semantics are only partially documented across all operations."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4xd8y5ms1v7q3kc9pg2","entity_id":"ent_01kyyts97tbppvx69rh3v86sk2","scope":{"product":{"key":"notion-api","name":"Notion API"},"funnel":{"key":"api-integration-lifecycle","name":"API integration lifecycle"}},"declaration_revision_digest":"sha256:0b0b1427363816a70b6ee3af37b30d24465c95989bbdc7b37357e2a52c4a95d1","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:04484fe935e39cefb25c8704bb8d95e0e3f5fd1ac78e5b0880bfbce7382f0701","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"B+","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"provision","stage_label":"Provision","public_state":"limited","finding":{"signal_code":"access_material_delivery","condition":"Can usable access material be delivered securely to an authorized agent?","finding":"Delivery needs additional human transfer or has weak scope or lifecycle semantics.","context":"Notion documents exchanging an authorization code for an access token via an HTTP POST request to Notion's token endpoint. Retrieval of CLIENT_ID and CLIENT_SECRET requires accessing the Developer portal."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:51:58.285Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/notion/agent-readiness/notion-api/api-integration-lifecycle","projection_digest":"sha256:3b0115c08e61c01442c468a8abd1459402678e6514f70b221229e072acc738fb","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"The REST API service and its entrypoints are explicitly discoverable via Notion Docs, providing stable integration paths to read, create, and update workspace content."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"access_entrypoint_stability","condition":"Is there a stable route to begin obtaining service access?","finding":"A stable canonical route begins the required access bootstrap.","context":"A stable canonical access URL for signup (https://app.notion.com/signup) is established by direct observation."}},{"stage":"pay","stage_label":"Pay","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"Charge or no-charge status, currency, recurrence, and material conditions are disclosed.","context":"The pricing schedule discloses plan tiers, including the Free tier at $0 and the Plus tier at $10 per member/month in USD, along with monthly and annual billing modes."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"access_material_delivery","condition":"Can usable access material be delivered securely to an authorized agent?","finding":"Delivery needs additional human transfer or has weak scope or lifecycle semantics.","context":"Notion documents exchanging an authorization code for an access token via an HTTP POST request to Notion's token endpoint. Retrieval of CLIENT_ID and CLIENT_SECRET requires accessing the Developer portal."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"Notion documents status codes including 429, 409 conflicts and 529 overload with Retry-After guidance; the selected quotes do not establish idempotency or reconciliation semantics for page creation."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4xe2b7nt9w4r6dh1q8c","entity_id":"ent_01kyh8fpe4qj5yt6msnarsc8kz","scope":{"product":{"key":"openai-api","name":"OpenAI API"},"funnel":{"key":"api-service-lifecycle","name":"API service lifecycle"}},"declaration_revision_digest":"sha256:d018f9b150c5f0276e00bd477a111d2da2f6a80ae9581f7cecdf77af334e9f57","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:214cf1b1dc3b59b60773c9bf89e4fff9df7e486afe25028cf873e32682b355d2","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"B","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"sign_up","stage_label":"Sign up","public_state":"limited","finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"OpenAI API keys can be created and deleted via the API key page, but the secret key is displayed only upon creation and requires manual saving and updating in applications."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:51:49.534Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/openai/agent-readiness/openai-api/api-service-lifecycle","projection_digest":"sha256:90b24fcbda2b2d323316d400b496ebabdfbd7052ea1c47177063a6565b16baf7","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"The API Overview reference details stable public evaluation and entrypoints, including HTTP Bearer authentication and base endpoint URLs like https://api.openai.com/v1/models."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"OpenAI API keys can be created and deleted via the API key page, but the secret key is displayed only upon creation and requires manual saving and updating in applications."}},{"stage":"pay","stage_label":"Pay","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"Charge or no-charge status, currency, recurrence, and material conditions are disclosed.","context":"OpenAI's prepaid billing page discloses the commitment before purchase: a minimum credit purchase of $5, a default of $10, auto-reload settings reviewed before confirming, and credits that expire after one year and are non-refundable."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"access_material_delivery","condition":"Can usable access material be delivered securely to an authorized agent?","finding":"Delivery needs additional human transfer or has weak scope or lifecycle semantics.","context":"OpenAI requires creating an API key in the dashboard or API key page, where full secret keys are displayed only upon creation and must be saved manually. Because secret delivery relies on manual human dashboard retrieval rather than a programmatic delivery path, access material delivery is partial."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"OpenAI documents error codes and retry guidance following Retry-After; the selected quotes do not establish idempotency, cancellation or reconciliation semantics for the Responses operation."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4xf5d9pv2y8s1jm6rw3","entity_id":"ent_01kyh8fpe4a7e0sp2h5gjz9xbm","scope":{"product":{"key":"pinecone-database-api","name":"Pinecone Database API"},"funnel":{"key":"index-lifecycle","name":"Index lifecycle"}},"declaration_revision_digest":"sha256:a46426271da24d2228774f1b40ced8efc3d854d61fc199666f33a650a33e2e4f","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:848726687ae60a02d35af86107acfd604238887a002e266f6837a689ad016b7d","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"B","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"sign_up","stage_label":"Sign up","public_state":"limited","finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Pinecone documentation states that service accounts enable programmatic access to the Admin API and use client secrets to retrieve access tokens. However, creating a service account and retrieving its initial client secret requires manual actions in the Pinecone console."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:52:12.557Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/pinecone/agent-readiness/pinecone-database-api/index-lifecycle","projection_digest":"sha256:401c511096dea81f1a41b4602f4ea4b66f7d7ef28267e04e60eb14680eddc498","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"Pinecone provides public API documentation detailing the exact Database API. It covers core resources like indexes and vectors, along with supported client SDKs including Python, Node.js, Java, and Go."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Pinecone documentation states that service accounts enable programmatic access to the Admin API and use client secrets to retrieve access tokens. However, creating a service account and retrieving its initial client secret requires manual actions in the Pinecone console."}},{"stage":"pay","stage_label":"Pay","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"Charge or no-charge status, currency, recurrence, and material conditions are disclosed.","context":"Pinecone's pricing page discloses the commercial commitments for its plans, such as $20/month flat for the Builder plan and $50/month minimum usage (pay-as-you-go above that) for the Standard plan."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"access_material_delivery","condition":"Can usable access material be delivered securely to an authorized agent?","finding":"Delivery needs additional human transfer or has weak scope or lifecycle semantics.","context":"API keys are generated in the Pinecone console. Service accounts created in the console provide client secrets that are displayed once at creation and used to retrieve access tokens."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"Pinecone documents HTTP error semantics and exponential-backoff retry guidance for 429 and 5xx; the selected quotes do not establish idempotency, cancellation or reconciliation semantics for index operations."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4xg7f2qx5a9t4kn8yc1","entity_id":"ent_01kyh8fpe5xfhy18q4ccs4a07n","scope":{"product":{"key":"resend-email-api","name":"Resend Email API"},"funnel":{"key":"email-operations","name":"Email operations"}},"declaration_revision_digest":"sha256:6cb7a7727c7a72439ef0309a5451fac024196dfa1243c9ed485f3d473154a8cd","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:5f0b1a9cbf4228c44673a4ae0f72287b15162553a1745f5f246f06effe5ccca5","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"B","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"sign_up","stage_label":"Sign up","public_state":"limited","finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Resend provides machine credentials in the form of API keys with specific permissions (e.g. full access vs sending access) that can be created, updated, and deleted via API or Dashboard, but keys cannot be viewed after creation and manual handling or copying may be involved."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:51:51.698Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/resend/agent-readiness/resend-email-api/email-operations","projection_digest":"sha256:f5e4ec48bff5ded58221cda88edd045d60776714bd1adc2e131b1cf4837c18cc","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"Resend documents its RESTful API introduction and base URL as https://api.resend.com, requiring HTTPS and Bearer token authentication with an API Key."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Resend provides machine credentials in the form of API keys with specific permissions (e.g. full access vs sending access) that can be created, updated, and deleted via API or Dashboard, but keys cannot be viewed after creation and manual handling or copying may be involved."}},{"stage":"pay","stage_label":"Pay","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"self_service_purchase","condition":"Is a direct self-service path to paid access documented?","finding":"Self-service is tier- or condition-limited, or a bounded vendor review exposes status.","context":"Resend provides a documented self-service path to upgrade, downgrade, or modify plans (such as Pro and Scale) via the Billing settings page without vendor review, but Enterprise plans require contacting sales."}},{"stage":"provision","stage_label":"Provision","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"provisioning_operability","condition":"Can provisioning be initiated within supported agent authority?","finding":"Provisioning is machine-triggerable or follows deterministically from an allowed handoff.","context":"API keys and email sending operations can be programmatically created and initiated via the documented API and CLI endpoints."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"credential_lifecycle","condition":"Can an agent manage credential expiry, rotation, revocation, compromise, and recovery?","finding":"Only part of the credential lifecycle is agent-operable.","context":"Resend documents programmatically creating, listing, updating names, and deleting API keys via API/CLI, as well as scoping permissions (full_access vs sending_access) and domain restrictions. However, automated credential rotation or secret compromise recovery procedures remain manual or unaddressed."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4xh9j6rz3b1v8mp5td2","entity_id":"ent_01kyxthgq3w0q894h0tadvr0cq","scope":{"product":{"key":"sentry-web-api","name":"Sentry Web API"},"funnel":{"key":"issue-operations","name":"Issue and project operations"}},"declaration_revision_digest":"sha256:df394c8bad741315c50fa635b608e071d5022d3f32281d60b6cc623c53012a5c","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:71aea5dca4577c2bd45d8b6fdf3b8faf5a914aa513bfe8cb9671191e3dd63f07","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"fail","public_state":"blocked","state_label":"Blocked","grade":"D","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"sign_up","stage_label":"Sign up","public_state":"blocked","finding":{"signal_code":"captcha_compatible_access","condition":"Can an agent obtain access without an unsupported CAPTCHA boundary?","finding":"A mandatory CAPTCHA has no supported agent-safe route.","context":"The signup page explicitly states 'This form is protected by reCAPTCHA' without providing a supported agent alternative or resumable boundary across both captured targets."},"blocker":{"signal_code":"captcha_compatible_access","code":"sign_up.captcha_compatible_access","explanation":"A mandatory CAPTCHA has no supported agent-safe route."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":1,"barrier_ratio":0.2},"last_tested_at":"2026-09-06T08:51:52.908Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/sentry/agent-readiness/sentry-web-api/issue-operations","projection_digest":"sha256:ea0b23b9cc3076fbe5cdb5175180f1cc5586769ccdcb7bf4fa9e35a2276d9781","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"The Sentry web API is publicly discoverable via stable documentation, with version v0, base domains like sentry.io, and region-specific domains such as us.sentry.io and de.sentry.io."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"fail","public_state":"blocked","state_label":"Blocked","primary_finding":{"signal_code":"captcha_compatible_access","condition":"Can an agent obtain access without an unsupported CAPTCHA boundary?","finding":"A mandatory CAPTCHA has no supported agent-safe route.","context":"The signup page explicitly states 'This form is protected by reCAPTCHA' without providing a supported agent alternative or resumable boundary across both captured targets."}},{"stage":"pay","stage_label":"Pay","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"The public commitment omits a material component until later in the flow.","context":"Sentry discloses Team ($26/mo USD) and Business ($80/mo USD) recurring plan pricing, but pay-as-you-go event usage calculators and additional volume options are contextual and subject to estimation or checkout variations."}},{"stage":"provision","stage_label":"Provision","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"provisioning_operability","condition":"Can provisioning be initiated within supported agent authority?","finding":"Provisioning is machine-triggerable or follows deterministically from an allowed handoff.","context":"Sentry supports programmatic creation of projects by issuing an HTTP POST request to /api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/projects/ using a bearer auth token with project:admin or project:write scopes."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"Sentry documents rate limit failure handling through fixed-window and concurrent rate limiters, 429 rejection behavior, and specific tracking headers (X-Sentry-Rate-Limit-Limit, X-Sentry-Rate-Limit-Remaining, X-Sentry-Rate-Limit-Reset, X-Sentry-Rate-Limit-ConcurrentLimit, X-Sentry-Rate-Limit-ConcurrentRemaining). Idempotency, cancellation, and reconciliation semantics are not documented in the evidence."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4xj3k8sa6c2w9nq4vf7","entity_id":"ent_01kyyts97tdz1rtzzt919cthny","scope":{"product":{"key":"slack-web-api","name":"Slack Web API"},"funnel":{"key":"workspace-app-operations","name":"Workspace app operations"}},"declaration_revision_digest":"sha256:f3bb080b1f1ccd9b33d2c66000ce4bed9c7f7cfaad35a873ade0d539884631cf","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:fea89fefd481e69c20f5c55d1e4556d9fe7f98bd8b037b6dbbae9d954aaaced6","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"B+","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"pay","stage_label":"Pay","public_state":"limited","finding":{"signal_code":"self_service_purchase","condition":"Is a direct self-service path to paid access documented?","finding":"Self-service is tier- or condition-limited, or a bounded vendor review exposes status.","context":"Slack documents a self-service path to change subscription details and purchase paid tiers via the billing page, but Enterprise+ plan purchases require contacting the sales team."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:52:07.953Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/slack/agent-readiness/slack-web-api/workspace-app-operations","projection_digest":"sha256:8836d33f10e32c36dbe4d9ad70f348904e790adeb8989febe5df11d8c50f2347","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"The Slack Web API is publicly documented with stable HTTPS RPC-style endpoints in the form https://slack.com/api/METHOD_FAMILY.method."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"access_entrypoint_stability","condition":"Is there a stable route to begin obtaining service access?","finding":"A stable canonical route begins the required access bootstrap.","context":"Slack explicitly declares a stable route to get started with an email address at https://slack.com/get-started."}},{"stage":"pay","stage_label":"Pay","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"self_service_purchase","condition":"Is a direct self-service path to paid access documented?","finding":"Self-service is tier- or condition-limited, or a bounded vendor review exposes status.","context":"Slack documents a self-service path to change subscription details and purchase paid tiers via the billing page, but Enterprise+ plan purchases require contacting the sales team."}},{"stage":"provision","stage_label":"Provision","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"provisioning_operability","condition":"Can provisioning be initiated within supported agent authority?","finding":"Provisioning is machine-triggerable or follows deterministically from an allowed handoff.","context":"Message posting can be initiated synchronously via the chat.postMessage API endpoint. Workspace app installation follows a machine-triggerable OAuth flow initiated by redirecting users with requested scopes."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"Slack documents rate-limiting error conditions, returning an HTTP 429 Too Many Requests response with a Retry-After header indicating the retry delay in seconds. However, the evidence leaves idempotency, cancellation, and reconciliation semantics unaddressed."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4xk6m1tb8d5y3pr9wg2","entity_id":"ent_01kyygma830fqh16kvj744sk1c","scope":{"product":{"key":"stripe-payments-api","name":"Stripe Payments API"},"funnel":{"key":"api-payment-lifecycle","name":"API payment lifecycle"}},"declaration_revision_digest":"sha256:a81bdfbb491f2fe21afdd527f05027fbd7b85f25ea725043056eab981f9aff56","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:59a44f16c7584a7acf0ca10b15651c79b9bd0f89bd37a472187ae17b4798c6d9","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"C+","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"sign_up","stage_label":"Sign up","public_state":"limited","finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Stripe documentation establishes restricted API keys with specific permissions and documents manual revocation/rotation rules when keys are lost, compromised, or team members leave, but leaves creation/issuance manual."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:51:40.030Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/stripe/agent-readiness/stripe-payments-api/api-payment-lifecycle","projection_digest":"sha256:9d5d993cf8becca579d781884f8807bdcd532a628427b5275787e99f1de59aa6","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"The Stripe API Reference provides the exact service entrypoints, including the Base URL (https://api.stripe.com) and link to the development quickstart guide."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Stripe documentation establishes restricted API keys with specific permissions and documents manual revocation/rotation rules when keys are lost, compromised, or team members leave, but leaves creation/issuance manual."}},{"stage":"pay","stage_label":"Pay","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"self_service_purchase","condition":"Is a direct self-service path to paid access documented?","finding":"Self-service is tier- or condition-limited, or a bounded vendor review exposes status.","context":"Stripe provides self-service standard pay-as-you-go card processing pricing starting with zero setup or monthly fees, but notes that large volume or unique business models require contacting sales for a custom package."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"access_material_delivery","condition":"Can usable access material be delivered securely to an authorized agent?","finding":"Delivery needs additional human transfer or has weak scope or lifecycle semantics.","context":"Stripe API keys are managed in the Dashboard. In live mode, secret keys are displayed only once upon creation for copying, establishing a manual dashboard display path rather than a fully automated agent credential exchange flow."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"credential_lifecycle","condition":"Can an agent manage credential expiry, rotation, revocation, compromise, and recovery?","finding":"Only part of the credential lifecycle is agent-operable.","context":"Stripe API keys can be managed, configured as restricted API keys, and rotated via the Dashboard or managed by hosting platforms. However, credential rotation and revocation depend on manual Dashboard steps or hosting platform automation rather than a direct programmatic agent API."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4xm8n4vc1f7z6qs2yh5","entity_id":"ent_01kyyts97tg62epymp01r8t62x","scope":{"product":{"key":"twilio-messaging-api","name":"Twilio Messaging API"},"funnel":{"key":"message-operations","name":"Message operations"}},"declaration_revision_digest":"sha256:773c0377718a4a16744632b021acffc989f89e356e398aad409db9c039dd892e","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:ee6ef3e43e31bfb046ea5697f5abe679cae6f01a9a407ebf4c2a5e282e7bb1d9","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"B","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"sign_up","stage_label":"Sign up","public_state":"limited","finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Twilio provides machine credentials (API keys) that can be created and revoked via the Console or API, but standard API keys leave account-level endpoint access restricted."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:51:49.040Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/twilio/agent-readiness/twilio-messaging-api/message-operations","projection_digest":"sha256:7a73163db0665a7b032757f74364de1edf7cbb55b72a9cc7a6c1ae133b3d3f84","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"Twilio provides an API overview explicitly stating that Twilio Messaging corresponds to the Messaging API, which can be accessed directly over HTTPS or through Twilio SDKs available in several programming languages."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Twilio provides machine credentials (API keys) that can be created and revoked via the Console or API, but standard API keys leave account-level endpoint access restricted."}},{"stage":"pay","stage_label":"Pay","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"Charge or no-charge status, currency, recurrence, and material conditions are disclosed.","context":"Twilio explicitly discloses pricing for Messaging service, including usage rates starting at $0.0083 to send or receive SMS/RCS messages, WhatsApp messaging starting at $0.005 plus Meta template fees, and phone numbers starting at $1.15 per month."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"provisioning_completion","condition":"Can an agent determine successful provisioning completion and reconcile asynchronous failure?","finding":"Completion is observable, but an asynchronous path omits a material terminal, bound, or reconciliation property.","context":"Documentation establishes that creating a Message resource returns a synchronous HTTP response containing the resource object with initial status 'queued', but the retained text does not define an asynchronous polling bound or complete reconciliation failure contract."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"Twilio documents error status codes, exception schemas and delivery status callbacks; the selected quotes do not establish retry, idempotency, cancellation or reconciliation semantics for the Message resource."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01kzf0m4xn2p7wd9g3a5rt8zq6","entity_id":"ent_01kyh8fpe5dk9hex187x4g03fn","scope":{"product":{"key":"vercel-rest-api","name":"Vercel REST API"},"funnel":{"key":"deployment-operations","name":"Deployment operations"}},"declaration_revision_digest":"sha256:d71be82b4542d1caf53b6eef94b6c4237601920f428cc37485c128276b6db97c","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:7c59a04f00102d531d6008028c0c551ded5cd1d5d0a9fb3f37d7d3172a5f1d7b","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"B","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"sign_up","stage_label":"Sign up","public_state":"limited","finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Vercel Access Tokens can be created in account settings or via Vercel CLI (`vercel tokens add`) and scoped to specific teams or projects, but initial creation relies on manual dashboard UI interaction or copying the secret."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":2,"barrier_ratio":0.4},"last_tested_at":"2026-09-06T08:52:01.429Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/vercel/agent-readiness/vercel-rest-api/deployment-operations","projection_digest":"sha256:067c54cc89ba4581463395948ef42812bb3c51600dbcf0f73ffde4a64543aca3","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"The Vercel REST API is publicly discoverable and hosted at the stable base entrypoint URL https://api.vercel.com."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"delegated_identity_access","condition":"Can an agent obtain scoped, revocable authority for this service?","finding":"Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.","context":"Vercel Access Tokens can be created in account settings or via Vercel CLI (`vercel tokens add`) and scoped to specific teams or projects, but initial creation relies on manual dashboard UI interaction or copying the secret."}},{"stage":"pay","stage_label":"Pay","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"Charge or no-charge status, currency, recurrence, and material conditions are disclosed.","context":"The evidence discloses payment timing at the start of each billing cycle, card payment methods, and USD currency charging conditions."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"provisioning_completion","condition":"Can an agent determine successful provisioning completion and reconcile asynchronous failure?","finding":"Completion is observable, but an asynchronous path omits a material terminal, bound, or reconciliation property.","context":"Vercel REST API's deployment creation returns a deployment object with a `readyState` field and indicates callers can poll `readyState` to track progress through states such as QUEUED, INITIALIZING, BUILDING, READY, or ERROR. However, current evidence leaves explicit reconciliation procedures and specific documented time bounds unresolved."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"The REST API documentation describes general error codes (such as forbidden, rate_limited with reset timestamps, bad_request, internal_server_error, and not_found), but complete safe handling semantics like explicit idempotency and reconciliation are not fully detailed."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01m08rqxyvw1151ymp6kaxfgcc","entity_id":"ent_01kyh8jtf535570d9z2bng6j1t","scope":{"product":{"key":"cloudflare-public-dns","name":"Cloudflare 1.1.1.1 Public DNS"},"funnel":{"key":"dns-over-https-query","name":"DNS over HTTPS query"}},"declaration_revision_digest":"sha256:65bf30248c0a730476c82afd8471be2e33d54397a1e8a63b0e34d235315bed5f","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:bb60075bc7f861d12d3036e87a62c90ecf7af6d7385cdba7c530785e0ded6100","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"pass","public_state":"ready","state_label":"Ready","grade":"A+","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":5,"barrier_ratio":1},"last_tested_at":"2026-09-06T08:51:58.297Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/cloudflare/agent-readiness/cloudflare-public-dns/dns-over-https-query","projection_digest":"sha256:69a02202d628fe399fb80b2bf149bde071db8ac72471c5743cbf11711859cb5a","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"Cloudflare's DNS over HTTPS (DoH) resolver endpoint is located at https://cloudflare-dns.com/dns-query and requires no authentication."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"not_applicable","public_state":"not_applicable","state_label":"Not applicable","primary_finding":{"signal_code":"access_entrypoint_stability","condition":"Is there a stable route to begin obtaining service access?","finding":"Admitted evidence establishes that this step does not apply to the assessed service.","context":"Cloudflare Terms of Use explicitly state that 1.1.1.1 Public DNS Resolver is available without a subscription or a Cloudflare account, making sign up access entrypoints non-applicable."}},{"stage":"pay","stage_label":"Pay","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"Charge or no-charge status, currency, recurrence, and material conditions are disclosed.","context":"Documentation explicitly declares that 1.1.1.1 is free, takes minutes to set up, and does not require any special software."}},{"stage":"provision","stage_label":"Provision","outcome":"not_applicable","public_state":"not_applicable","state_label":"Not applicable","primary_finding":{"signal_code":"provisioning_operability","condition":"Can provisioning be initiated within supported agent authority?","finding":"Admitted evidence establishes that this step does not apply to the assessed service.","context":"The public DNS over HTTPS query endpoint responds directly without requiring a prior provisioning procedure."}},{"stage":"operate","stage_label":"Operate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"target_interface_access","condition":"Can an agent perform every essential assessment target through a usable interface?","finding":"Every essential target has a stable documented agent-usable interface alternative.","context":"All essential targets are accessible and executable via usable HTTP endpoints (`https://cloudflare-dns.com/dns-query` and `https://one.one.one.one/dns-query`) using standard JSON or DNS wireformat interfaces."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01m0ewej9qyk04qypr2mvmwmh1","entity_id":"ent_01kyh8fpe3xgjjktffez1t34rn","scope":{"product":{"key":"github-enterprise-server-3-21","name":"GitHub Enterprise Server 3.21"},"funnel":{"key":"repository-operations","name":"Repository operations"}},"declaration_revision_digest":"sha256:f80d143253c99b4aef0ea4f747461a772f76950176b5c97759cc7ddc798ecd8a","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:cb882c0c88dcf753770efa06cc6a0e6fcc08500c8ed9546801124e3fa6078b6e","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"fail","public_state":"blocked","state_label":"Blocked","grade":"D","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"pay","stage_label":"Pay","public_state":"blocked","finding":{"signal_code":"self_service_purchase","condition":"Is a direct self-service path to paid access documented?","finding":"Paid access requires opaque or unbounded sales intervention.","context":"GitHub Enterprise Server license documentation explicitly states that purchasing, renewing, adding user licenses, or upgrading requires contacting GitHub's Sales team."},"blocker":{"signal_code":"self_service_purchase","code":"pay.self_service_purchase","explanation":"Paid access requires opaque or unbounded sales intervention."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":1,"barrier_ratio":0.2},"last_tested_at":"2026-09-06T08:51:45.722Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/github/agent-readiness/github-enterprise-server-3-21/repository-operations","projection_digest":"sha256:9ce56e92fd056bf6e396f908920196f5e5ae85a98f55ad85696913a0d88db92d","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"GitHub Enterprise Server and its REST API documentation are explicitly discoverable, including REST API overview and quickstart entrypoints."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"access_control_operability","condition":"Can an agent operate the access controls and safe handoffs deterministically?","finding":"Only part of the access flow is operable or a bounded human step remains.","context":"Setting up a trial of GitHub Enterprise Server involves submitting a trial request, following prompts via an emailed link, downloading a license file, and uploading it to install the instance."}},{"stage":"pay","stage_label":"Pay","outcome":"fail","public_state":"blocked","state_label":"Blocked","primary_finding":{"signal_code":"self_service_purchase","condition":"Is a direct self-service path to paid access documented?","finding":"Paid access requires opaque or unbounded sales intervention.","context":"GitHub Enterprise Server license documentation explicitly states that purchasing, renewing, adding user licenses, or upgrading requires contacting GitHub's Sales team."}},{"stage":"provision","stage_label":"Provision","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"access_material_delivery","condition":"Can usable access material be delivered securely to an authorized agent?","finding":"Delivery needs additional human transfer or has weak scope or lifecycle semantics.","context":"GitHub Enterprise Server REST API authentication tokens can be generated (such as personal access tokens or GitHub App tokens) or created by app owners on an app settings page, where client IDs and client secrets are displayed and used to create access tokens."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"Documentation establishes rate limit error codes (403 Forbidden, 429 Too Many Requests), headers (retry-after, x-ratelimit-remaining, x-ratelimit-reset), retry guidelines with exponential backoff, and timeouts (terminated after 10 seconds). Full idempotency, cancellation, and reconciliation semantics across all operations remain partially documented."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}},{"agent_readiness_profile_id":"arp_01m0j1a50vat933f76xwy3mec5","entity_id":"ent_01kyy6rm11txma0afjpbmd0wr7","scope":{"product":{"key":"openrouter-api","name":"OpenRouter API"},"funnel":{"key":"model-access-lifecycle","name":"Model access lifecycle"}},"declaration_revision_digest":"sha256:4acd9744e3496e9ecc9442906fb5682c211010b4635d864ebe66b385e953cadb","lifecycle":"active","effective_from":"2026-09-06T08:47:58Z","revision_digest":"sha256:b6e36fd46b594bc9bb81adae450efd9c6fba59dc3803fa583b9eec56fab64c1b","policy_digest":"sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d","policy_version":"service-use-2026-09-07-blocking-barriers-r12","policy_as_of":"2026-09-07T00:00:00Z","overall_outcome":"constrained","public_state":"limited","state_label":"Limited","grade":"A","grade_derivation":{"label":"Five-stage Agent Readiness report card","explanation":"A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.","coverage_rule":"Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.","outcome_rule":"Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."},"publication":{"visibility":"discoverable","reasons":[]},"primary_finding":{"stage":"operate","stage_label":"Operate","public_state":"limited","finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"OpenRouter documents typed error codes across streaming and non-streaming responses and a Retry-After header section; the selected quotes do not establish idempotency or reconciliation semantics."}},"coverage":{"status":"complete","required_signals":14,"covered_signals":14,"ratio":1,"barrier_signals":5,"verified_barrier_signals":0,"barrier_ratio":0},"last_tested_at":"2026-09-06T08:53:07.718Z","freshness":"fresh","canonical_url":"https://sourcey.com/log/openrouter/agent-readiness/openrouter-api/model-access-lifecycle","projection_digest":"sha256:7b67aca27eb2bd2761f579057e6fe890ba4e79608309c9573b6f3caefc437f1d","stages":[{"stage":"evaluate","stage_label":"Evaluate","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"service_discovery","condition":"Can an agent find the exact service and its stable entrypoints?","finding":"The exact service and stable evaluation or access entrypoints are publicly discoverable.","context":"OpenRouter provides stable public entrypoints for service discovery, including `https://openrouter.ai/llms.txt` and the main API target `https://openrouter.ai/api/v1/chat/completions`."}},{"stage":"sign_up","stage_label":"Sign up","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"access_entrypoint_stability","condition":"Is there a stable route to begin obtaining service access?","finding":"A stable canonical route begins the required access bootstrap.","context":"OpenRouter provides a stable canonical OAuth PKCE guide and route to initiate user authorization and obtain service access."}},{"stage":"pay","stage_label":"Pay","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"commitment_disclosure","condition":"Is the exact commercial commitment disclosed before authorization?","finding":"Charge or no-charge status, currency, recurrence, and material conditions are disclosed.","context":"OpenRouter discloses US dollars as the base currency for all site and API pricing. It specifies pay-as-you-go token billing passed through from providers with a disclosed 5.5% platform fee, with no minimum spend."}},{"stage":"provision","stage_label":"Provision","outcome":"pass","public_state":"ready","state_label":"Ready","primary_finding":{"signal_code":"provisioning_operability","condition":"Can provisioning be initiated within supported agent authority?","finding":"Provisioning is machine-triggerable or follows deterministically from an allowed handoff.","context":"API key provisioning is machine-triggerable via a POST request to https://openrouter.ai/api/v1/keys using Bearer token authentication."}},{"stage":"operate","stage_label":"Operate","outcome":"constrained","public_state":"limited","state_label":"Limited","primary_finding":{"signal_code":"failure_contract","condition":"Can an agent handle applicable failure modes safely?","finding":"Safe failure handling is documented only partially.","context":"OpenRouter documents typed error codes across streaming and non-streaming responses and a Retry-After header section; the selected quotes do not establish idempotency or reconciliation semantics."}}],"provenance":{"freshness":"fresh","dispute":"none","vendor_attestation":{"status":"none"}}}],"offer_relations":[]}
