{
  "contract": "sourcey.site-record/v1alpha1",
  "release_id": "sha256:2fbbef898f76ba47f54ef0fdf7585060968f5e9f04fed731ced83efb3d376e94",
  "snapshot_id": "sha256:b26a8a5eb7be48e03c2bfcf5657c69ff3b1c055d42d37ba60214f516fa83f8c3",
  "artifact_sha256": "sha256:09d0e4cb56c1db3fa3ba012530cfe29c948b1374adb7435befa11ea100edf477",
  "data": {
    "entity_id": "ent_01kyyts97sxvjdbwprq8swyxw5",
    "entity_slug": "airtable",
    "profile": {
      "projection_contract": "sourcey.agent-readiness-projection/v1alpha1",
      "agent_readiness_profile_id": "arp_01m4t96s3qfr0t33dtktg0dgtj",
      "entity_id": "ent_01kyyts97sxvjdbwprq8swyxw5",
      "scope": {
        "product": {
          "key": "airtable-web-api",
          "name": "Airtable Web API"
        },
        "job": {
          "key": "table-record-create",
          "name": "Add a table record"
        }
      },
      "catalog_binding": {
        "base_release_id": "sha256:b8d2307bdb2bd192cdb6e4a0586bf54e4c306eb8bae6a6f3c48ddff04bcdcee1",
        "entity_revision_digest": "sha256:5c2543a4018c8d9e1c9a4051a1ce34f98883a946fef5ef0836f303106b28514f"
      },
      "declaration_revision_digest": "sha256:b1c39c1663f7642514776605772c3e51736c64702e216bae5bae0af0f8bbc455",
      "declaration": {
        "declaration_id": "declaration_airtable_airtable_web_api_table_record_create",
        "provenance": {
          "repository": "sourcey/agent-ready-services",
          "commit": "de1148784db9547de861d4669ba397968e6787cc",
          "path": "entities/ai/airtable.yaml",
          "git_blob_oid": "9a620111affeb0b67829f30405490f9f948a17c7",
          "blob_digest": "sha256:321897400b58698e64a89a908e43909f4569d58d291cc0deee2acc758c0ea2e5"
        },
        "status": "community_declared"
      },
      "surface_catalog": {
        "participants": [
          {
            "participant_id": "airtable",
            "roles": [
              "access_operator",
              "identity_provider",
              "operations_provider",
              "payment_provider",
              "provisioning_provider",
              "subject"
            ],
            "identity": {
              "entity_id": "ent_01kyyts97sxvjdbwprq8swyxw5"
            }
          }
        ],
        "resources": [
          {
            "resource_id": "account-signup",
            "uri": "https://airtable.com/signup",
            "roles": [
              "access"
            ],
            "operated_by_participant_id": "airtable",
            "standard_bindings": []
          },
          {
            "resource_id": "api-reference",
            "uri": "https://airtable.com/developers/web/api/create-records",
            "roles": [
              "discovery",
              "documentation",
              "operations",
              "provisioning"
            ],
            "operated_by_participant_id": "airtable",
            "standard_bindings": []
          },
          {
            "resource_id": "authentication",
            "uri": "https://airtable.com/developers/web/api/authentication",
            "roles": [
              "authentication",
              "documentation"
            ],
            "operated_by_participant_id": "airtable",
            "standard_bindings": []
          },
          {
            "resource_id": "pricing",
            "uri": "https://airtable.com/pricing",
            "roles": [
              "pricing"
            ],
            "operated_by_participant_id": "airtable",
            "standard_bindings": []
          },
          {
            "resource_id": "service-terms",
            "uri": "https://www.airtable.com/company/terms-and-policies",
            "roles": [
              "terms"
            ],
            "operated_by_participant_id": "airtable",
            "standard_bindings": []
          }
        ],
        "endpoints": [
          {
            "endpoint_id": "registration",
            "uri": "https://airtable.com/signup",
            "transport": "http",
            "roles": [
              "registration"
            ],
            "operated_by_participant_id": "airtable",
            "standard_bindings": []
          },
          {
            "endpoint_id": "service-api",
            "uri": "https://api.airtable.com/v0",
            "transport": "http",
            "roles": [
              "service"
            ],
            "operated_by_participant_id": "airtable",
            "standard_bindings": []
          }
        ],
        "interfaces": [
          {
            "interface_id": "api-authentication",
            "modality": "network_api",
            "functions": [
              "authentication"
            ],
            "endpoint_ids": [],
            "resource_ids": [
              "authentication"
            ],
            "operated_by_participant_id": "airtable",
            "standard_bindings": []
          },
          {
            "interface_id": "service-api",
            "modality": "network_api",
            "functions": [
              "service_operation"
            ],
            "endpoint_ids": [
              "service-api"
            ],
            "resource_ids": [
              "api-reference"
            ],
            "operated_by_participant_id": "airtable",
            "standard_bindings": []
          }
        ],
        "relations": [
          {
            "relation_id": "authentication-authenticates-api",
            "kind": "authenticates",
            "from": {
              "node_kind": "interface",
              "node_id": "api-authentication"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "service-api"
            }
          },
          {
            "relation_id": "reference-describes-api",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "api-reference"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "service-api"
            }
          },
          {
            "relation_id": "signup-precedes-authentication",
            "kind": "precedes",
            "from": {
              "node_kind": "resource",
              "node_id": "account-signup"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "api-authentication"
            }
          }
        ],
        "surface_exclusions": [
          {
            "exclusion_id": "free-job-no-checkout",
            "role": "checkout",
            "rationale": "Airtable's Free plan is available to teams for no charge, and every user on it is free."
          },
          {
            "exclusion_id": "separate-eligibility-resource",
            "role": "eligibility",
            "rationale": "Access conditions are published within the vendor's terms; no separate eligibility resource is declared."
          }
        ]
      },
      "lifecycle": "active",
      "effective_from": "2026-10-13T09:25:49.124Z",
      "revision_digest": "sha256:58982dc3e159f9fbc39dfc318d3ae9c07bc98b3d3c60d596d86273e426afea65",
      "policy_digest": "sha256:b612172aad277b54461de84e006815126f2df566563954b02f4432a39cad89ac",
      "policy_version": "kind-2026-10-12.2",
      "policy_as_of": "2026-10-05T00:00:00Z",
      "job": {
        "job_id": "table-record-create",
        "job_digest": "sha256:27b168e087048efdefea5cddbd1f475045df91e21a816b66e70b3406f1c36ae2",
        "category": "tables",
        "name": "Add a table record",
        "statement": "Add a record whose name is the run's nonce to a table, then read it back."
      },
      "interface_id": "service-api",
      "label": "probed",
      "label_run_at": null,
      "grade": {
        "letter": "B+",
        "statement": "A person signs up and hands over a key.",
        "steps": [
          {
            "step": "discover",
            "outcome": "machine",
            "timing": null
          },
          {
            "step": "authority",
            "outcome": "workaround",
            "timing": "setup"
          },
          {
            "step": "onboard",
            "outcome": "workaround",
            "timing": "setup"
          },
          {
            "step": "pay",
            "outcome": "not_applicable",
            "timing": null
          },
          {
            "step": "confirm",
            "outcome": "machine",
            "timing": null
          },
          {
            "step": "sustain",
            "outcome": "workaround",
            "timing": "setup"
          }
        ],
        "job": "reachable",
        "approvals": [],
        "workarounds": [
          {
            "step": "authority",
            "timing": "setup"
          },
          {
            "step": "onboard",
            "timing": "setup"
          },
          {
            "step": "sustain",
            "timing": "setup"
          }
        ]
      },
      "discovery": [
        {
          "fact": "ard_entry",
          "value": "https://mcp.airtable.com/mcp",
          "descriptor_url": "https://airtable.com/.well-known/ai-catalog.json",
          "attempt_digest": "sha256:002d95d475344e65762d11a5c0ea901cbd588fe08e6d476dc9fc3229ea29ea1a",
          "adapter": {
            "namespace": "ard",
            "version": "0.91"
          }
        },
        {
          "fact": "ard_entry",
          "value": "https://github.com/airtable/skills/tree/main/plugins/airtable/skills/agent-activity-log",
          "descriptor_url": "https://airtable.com/.well-known/ai-catalog.json",
          "attempt_digest": "sha256:002d95d475344e65762d11a5c0ea901cbd588fe08e6d476dc9fc3229ea29ea1a",
          "adapter": {
            "namespace": "ard",
            "version": "0.91"
          }
        },
        {
          "fact": "ard_entry",
          "value": "https://github.com/airtable/skills/tree/main/plugins/airtable/skills/airtable-cli",
          "descriptor_url": "https://airtable.com/.well-known/ai-catalog.json",
          "attempt_digest": "sha256:002d95d475344e65762d11a5c0ea901cbd588fe08e6d476dc9fc3229ea29ea1a",
          "adapter": {
            "namespace": "ard",
            "version": "0.91"
          }
        },
        {
          "fact": "ard_entry",
          "value": "https://github.com/airtable/skills/tree/main/plugins/airtable/skills/airtable-filters",
          "descriptor_url": "https://airtable.com/.well-known/ai-catalog.json",
          "attempt_digest": "sha256:002d95d475344e65762d11a5c0ea901cbd588fe08e6d476dc9fc3229ea29ea1a",
          "adapter": {
            "namespace": "ard",
            "version": "0.91"
          }
        },
        {
          "fact": "ard_entry",
          "value": "https://github.com/airtable/skills/tree/main/plugins/airtable/skills/airtable-overview",
          "descriptor_url": "https://airtable.com/.well-known/ai-catalog.json",
          "attempt_digest": "sha256:002d95d475344e65762d11a5c0ea901cbd588fe08e6d476dc9fc3229ea29ea1a",
          "adapter": {
            "namespace": "ard",
            "version": "0.91"
          }
        },
        {
          "fact": "ard_entry",
          "value": "https://github.com/airtable/skills/tree/main/plugins/airtable/skills/marketing-ops",
          "descriptor_url": "https://airtable.com/.well-known/ai-catalog.json",
          "attempt_digest": "sha256:002d95d475344e65762d11a5c0ea901cbd588fe08e6d476dc9fc3229ea29ea1a",
          "adapter": {
            "namespace": "ard",
            "version": "0.91"
          }
        },
        {
          "fact": "ard_entry",
          "value": "https://github.com/airtable/skills/tree/main/plugins/airtable/skills/product-ops",
          "descriptor_url": "https://airtable.com/.well-known/ai-catalog.json",
          "attempt_digest": "sha256:002d95d475344e65762d11a5c0ea901cbd588fe08e6d476dc9fc3229ea29ea1a",
          "adapter": {
            "namespace": "ard",
            "version": "0.91"
          }
        },
        {
          "fact": "ard_entry",
          "value": "https://github.com/airtable/skills/tree/main/plugins/airtable/skills/sales-ops",
          "descriptor_url": "https://airtable.com/.well-known/ai-catalog.json",
          "attempt_digest": "sha256:002d95d475344e65762d11a5c0ea901cbd588fe08e6d476dc9fc3229ea29ea1a",
          "adapter": {
            "namespace": "ard",
            "version": "0.91"
          }
        },
        {
          "fact": "ard_entry",
          "value": "https://github.com/airtable/skills/tree/main/plugins/airtable/skills/show-airtable-link",
          "descriptor_url": "https://airtable.com/.well-known/ai-catalog.json",
          "attempt_digest": "sha256:002d95d475344e65762d11a5c0ea901cbd588fe08e6d476dc9fc3229ea29ea1a",
          "adapter": {
            "namespace": "ard",
            "version": "0.91"
          }
        },
        {
          "fact": "ard_entry",
          "value": "https://airtable.com/developers/web/api/introduction",
          "descriptor_url": "https://airtable.com/.well-known/ai-catalog.json",
          "attempt_digest": "sha256:002d95d475344e65762d11a5c0ea901cbd588fe08e6d476dc9fc3229ea29ea1a",
          "adapter": {
            "namespace": "ard",
            "version": "0.91"
          }
        },
        {
          "fact": "oauth_authorization_server",
          "value": "https://airtable.com/oauth2/v1",
          "descriptor_url": "https://airtable.com/.well-known/oauth-authorization-server",
          "attempt_digest": "sha256:c7c51ce44ec2638d8404614cc5db010177f32d2c54dd11288b4367b768428a1b",
          "adapter": {
            "namespace": "rfc8414",
            "version": "1"
          }
        },
        {
          "fact": "documentation_route",
          "value": "https://api.airtable.com/",
          "descriptor_url": "https://airtable.com/developers/web/api/create-records",
          "attempt_digest": "sha256:a45b5e88607e5999e0b3324a209d37749dde3f0ebb24dd5fb4a1050736040b28",
          "adapter": {
            "namespace": "markdown",
            "version": "request"
          }
        }
      ],
      "discovery_run_at": null,
      "run": {
        "started_at": "2026-10-13T09:25:13.964Z",
        "finished_at": "2026-10-13T09:25:49.124Z",
        "discovery_reads": 32,
        "exchanges": [
          {
            "purpose": "probe_operation",
            "role": "request",
            "method": "POST",
            "url": "https://api.airtable.com/v0/appAAAAAAAAAAAAAA/Table1",
            "started_at": "2026-10-13T09:25:32.825Z",
            "finished_at": "2026-10-13T09:25:32.874Z",
            "response": {
              "status": 401,
              "media_type": "application/json",
              "content_bytes": 80,
              "content_digest": "sha256:16d99a2f379779a3f18d2d4434d4610d80a3caee8806f1b169957001a14a5995"
            },
            "transport_error": null,
            "exchange_digest": "sha256:12dad7ceb36fd591a67ad8ac3ecfd184c215da4773f97b9f14c2156bb4dbe7a4"
          },
          {
            "purpose": "probe_resource_metadata",
            "role": "request",
            "method": "GET",
            "url": "https://api.airtable.com/.well-known/oauth-protected-resource/v0/appAAAAAAAAAAAAAA/Table1",
            "started_at": "2026-10-13T09:25:36.895Z",
            "finished_at": "2026-10-13T09:25:36.944Z",
            "response": {
              "status": 404,
              "media_type": "application/json",
              "content_bytes": 40,
              "content_digest": "sha256:1abe0d88107e6fab630aa5df7d7ff8a6eb5ed67863c86250c095afcfa9d40c6a"
            },
            "transport_error": null,
            "exchange_digest": "sha256:fe56b2cecdcf1d925fdaa43b076b7452762f78ed8b9ae438a5fefe62e561488b"
          },
          {
            "purpose": "probe_resource_metadata",
            "role": "request",
            "method": "GET",
            "url": "https://api.airtable.com/.well-known/oauth-protected-resource",
            "started_at": "2026-10-13T09:25:41.743Z",
            "finished_at": "2026-10-13T09:25:41.802Z",
            "response": {
              "status": 404,
              "media_type": "application/json",
              "content_bytes": 40,
              "content_digest": "sha256:1abe0d88107e6fab630aa5df7d7ff8a6eb5ed67863c86250c095afcfa9d40c6a"
            },
            "transport_error": null,
            "exchange_digest": "sha256:f8a0d0cdcf78594dbcc89f36e887f281a63833883857bd2fb460aeebc0c4ee28"
          },
          {
            "purpose": "probe_page",
            "role": "request",
            "method": "GET",
            "url": "https://airtable.com/signup",
            "started_at": "2026-10-13T09:25:45.015Z",
            "finished_at": "2026-10-13T09:25:45.121Z",
            "response": {
              "status": 403,
              "media_type": "text/html",
              "content_bytes": 14021,
              "content_digest": "sha256:75a4b5fb6d2dbb0cb87d2369f4d915463803569418d5f8643022c60410d550f0"
            },
            "transport_error": null,
            "exchange_digest": "sha256:c5bbf94e173a968147c9a052404133006573416eb6db6c9f44e820793f6bd192"
          }
        ],
        "assertions": []
      },
      "last_run_at": "2026-10-13T09:25:49.124Z",
      "publication": {
        "visibility": "discoverable",
        "reasons": []
      },
      "provenance": {
        "dispute": "none",
        "vendor_attestation": {
          "status": "none"
        },
        "basis_event_ids": []
      },
      "canonical_url": "https://sourcey.com/c/airtable/agent-readiness/airtable-web-api/table-record-create",
      "projection_digest": "sha256:85368ff101d750f61208a3183e295d1979f40a7f7d8992175c1505934d384c44"
    }
  }
}
