{
  "contract": "sourcey.site-record/v1alpha1",
  "release_id": "sha256:b78f22c5ea873b3115531a2e15e6015144e93a27e087127457856629b2908c98",
  "snapshot_id": "sha256:59a215f5c3c95e3452980d6aea6165704b8b608d180f09bfe23d3a7bc06b5b76",
  "artifact_sha256": "sha256:b76be265264024bb68f072dade46e90059a19d0a7d1e97335c9a218ed7e58a86",
  "data": {
    "entity_id": "ent_01kyyts97tdz1rtzzt919cthny",
    "entity_slug": "slack",
    "profile": {
      "projection_contract": "sourcey.agent-readiness-projection/v1alpha1",
      "agent_readiness_profile_id": "arp_01m4pm5cg0ebphc7096n6mvsgs",
      "entity_id": "ent_01kyyts97tdz1rtzzt919cthny",
      "scope": {
        "product": {
          "key": "slack-web-api",
          "name": "Slack Web API"
        },
        "job": {
          "key": "chat-message-post",
          "name": "Post a message"
        }
      },
      "catalog_binding": {
        "base_release_id": "sha256:525cff08b2316c8b3fb1f0365d66e75753f560bc6203ee5733a74d5a550fc9a0",
        "entity_revision_digest": "sha256:6bf818ed8305ea50197752914eecaa92ffd3a14f68afe01712b18be0cb13a2eb"
      },
      "declaration_revision_digest": "sha256:1ec65c063cd2bef98a0f81c202f54c78e30ebf8035ab88886f588d8b662aa3a7",
      "declaration": {
        "declaration_id": "declaration_slack_slack_web_api_chat_message_post",
        "provenance": {
          "repository": "sourcey/agent-ready-services",
          "commit": "d0349b59eac1f864862be6cae9c25d97bec9e731",
          "path": "entities/sl/slack.yaml",
          "git_blob_oid": "a5fd4e075235a67acd59b77e8c3cf68c3d4cbe71",
          "blob_digest": "sha256:3275888a0005dfecf33b6473ea72219d76d9a0a7425e05626948b1d7d9f22883"
        },
        "status": "community_declared"
      },
      "surface_catalog": {
        "participants": [
          {
            "participant_id": "slack",
            "roles": [
              "access_operator",
              "identity_provider",
              "operations_provider",
              "payment_provider",
              "provisioning_provider",
              "subject"
            ],
            "identity": {
              "entity_id": "ent_01kyyts97tdz1rtzzt919cthny"
            }
          }
        ],
        "resources": [
          {
            "resource_id": "authentication",
            "uri": "https://docs.slack.dev/authentication/",
            "roles": [
              "descriptor",
              "documentation"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "resource_id": "mcp-docs",
            "uri": "https://docs.slack.dev/ai/slack-mcp-server/",
            "roles": [
              "discovery",
              "documentation",
              "operations"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "resource_id": "message-operations",
            "uri": "https://docs.slack.dev/reference/methods/chat.postMessage/",
            "roles": [
              "documentation",
              "operations",
              "provisioning",
              "status"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "resource_id": "oauth",
            "uri": "https://docs.slack.dev/authentication/installing-with-oauth/",
            "roles": [
              "authentication",
              "descriptor",
              "documentation",
              "provisioning"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": [
              {
                "namespace": "oauth",
                "version": "2.0",
                "relation": "describes"
              }
            ]
          },
          {
            "resource_id": "pricing",
            "uri": "https://slack.com/pricing",
            "roles": [
              "pricing"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "resource_id": "rate-limits",
            "uri": "https://docs.slack.dev/apis/web-api/rate-limits/",
            "roles": [
              "documentation",
              "operations",
              "recovery",
              "status"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "resource_id": "service-terms",
            "uri": "https://slack.com/terms-of-service",
            "roles": [
              "terms"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "resource_id": "slack-plans-and-features",
            "uri": "https://slack.com/help/articles/202035138-Slack-plans-and-features",
            "roles": [
              "documentation",
              "eligibility"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "resource_id": "support",
            "uri": "https://slack.com/help",
            "roles": [
              "documentation",
              "recovery"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "resource_id": "web-api",
            "uri": "https://docs.slack.dev/apis/web-api/",
            "roles": [
              "discovery",
              "documentation",
              "operations"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "resource_id": "workspace-signup",
            "uri": "https://slack.com/get-started",
            "roles": [
              "access"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          }
        ],
        "endpoints": [
          {
            "endpoint_id": "mcp-server",
            "uri": "https://mcp.slack.com/mcp",
            "transport": "http",
            "roles": [
              "protected_resource",
              "service"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "endpoint_id": "oauth-token",
            "uri": "https://slack.com/api/oauth.v2.access",
            "transport": "http",
            "roles": [
              "authorization",
              "token"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": [
              {
                "namespace": "oauth",
                "version": "2.0",
                "relation": "implements"
              }
            ]
          },
          {
            "endpoint_id": "registration",
            "uri": "https://slack.com/get-started",
            "transport": "http",
            "roles": [
              "registration"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "endpoint_id": "slack-api",
            "uri": "https://slack.com/api",
            "transport": "http",
            "roles": [
              "service",
              "status"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          }
        ],
        "interfaces": [
          {
            "interface_id": "app-authentication",
            "modality": "network_api",
            "functions": [
              "authentication"
            ],
            "endpoint_ids": [
              "oauth-token"
            ],
            "resource_ids": [
              "authentication",
              "oauth"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": [
              {
                "namespace": "oauth",
                "version": "2.0",
                "relation": "uses"
              }
            ]
          },
          {
            "interface_id": "slack-mcp",
            "modality": "tool_server",
            "functions": [
              "service_operation"
            ],
            "endpoint_ids": [
              "mcp-server"
            ],
            "resource_ids": [
              "mcp-docs"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "interface_id": "workspace-api",
            "modality": "network_api",
            "functions": [
              "events",
              "service_operation"
            ],
            "endpoint_ids": [
              "slack-api"
            ],
            "resource_ids": [
              "message-operations",
              "rate-limits",
              "web-api"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          }
        ],
        "relations": [
          {
            "relation_id": "authentication-authenticates-api",
            "kind": "authenticates",
            "from": {
              "node_kind": "interface",
              "node_id": "app-authentication"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "workspace-api"
            }
          },
          {
            "relation_id": "mcp-docs-describe-server",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "mcp-docs"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "slack-mcp"
            }
          },
          {
            "relation_id": "messages-describe-api",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "message-operations"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "workspace-api"
            }
          },
          {
            "relation_id": "signup-precedes-authentication",
            "kind": "precedes",
            "from": {
              "node_kind": "resource",
              "node_id": "workspace-signup"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "app-authentication"
            }
          },
          {
            "relation_id": "web-describes-api",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "web-api"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "workspace-api"
            }
          }
        ],
        "surface_exclusions": [
          {
            "exclusion_id": "free-job-no-checkout",
            "role": "checkout",
            "rationale": "Slack's free plan posts messages with no payment."
          }
        ]
      },
      "lifecycle": "active",
      "effective_from": "2026-10-12T00:14:38.485Z",
      "revision_digest": "sha256:34c32aa3075eb403ff4d6805238ddc721e5f69ed47bd52576fbfb66ad83d802d",
      "policy_digest": "sha256:b612172aad277b54461de84e006815126f2df566563954b02f4432a39cad89ac",
      "policy_version": "kind-2026-10-12.2",
      "policy_as_of": "2026-10-05T00:00:00Z",
      "job": {
        "job_id": "chat-message-post",
        "job_digest": "sha256:12c6a2ee77e10974d03c612b86f4f545c1b23f41b4cea1b36da31b69b9f7c62c",
        "category": "team-chat",
        "name": "Post a message",
        "statement": "Post a message whose text is the run's nonce to a channel, then read it back."
      },
      "interface_id": "workspace-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": "agent_documentation",
          "value": "https://slack.com/llms.txt",
          "descriptor_url": "https://slack.com/llms.txt",
          "attempt_digest": "sha256:55b8e41815fba924d45c499fdefcf112f4a35d1cc64aadef3437927b1da3c72d",
          "adapter": {
            "namespace": "llms.txt",
            "version": "1"
          }
        },
        {
          "fact": "oauth_authorization_server",
          "value": "https://mcp.slack.com/",
          "descriptor_url": "https://mcp.slack.com/.well-known/oauth-authorization-server",
          "attempt_digest": "sha256:2f8406e1e2af5d6f3df4a67720be48a9d8e930f7d9c95b6a2c4ffb4d5c858fec",
          "adapter": {
            "namespace": "rfc8414",
            "version": "1"
          }
        },
        {
          "fact": "oauth_protected_resource",
          "value": "https://mcp.slack.com/",
          "descriptor_url": "https://mcp.slack.com/.well-known/oauth-protected-resource",
          "attempt_digest": "sha256:feac8f95db5d58ca4fde4212a8074af0af853f12703a39763255ae96417390b8",
          "adapter": {
            "namespace": "rfc9728",
            "version": "1"
          }
        },
        {
          "fact": "oauth_authorization_server",
          "value": "https://mcp.slack.com/",
          "descriptor_url": "https://mcp.slack.com/.well-known/oauth-protected-resource",
          "attempt_digest": "sha256:feac8f95db5d58ca4fde4212a8074af0af853f12703a39763255ae96417390b8",
          "adapter": {
            "namespace": "rfc9728",
            "version": "1"
          }
        },
        {
          "fact": "agent_documentation",
          "value": "https://mcp.slack.com/llms.txt",
          "descriptor_url": "https://mcp.slack.com/llms.txt",
          "attempt_digest": "sha256:256beb42b9aaa3c2b0dacd11e7157e4a9bfde2cdcbe792bba2c227c85ba7c683",
          "adapter": {
            "namespace": "llms.txt",
            "version": "1"
          }
        },
        {
          "fact": "documentation_route",
          "value": "https://slack.com/",
          "descriptor_url": "https://slack.com/llms.txt",
          "attempt_digest": "sha256:55b8e41815fba924d45c499fdefcf112f4a35d1cc64aadef3437927b1da3c72d",
          "adapter": {
            "namespace": "llms.txt",
            "version": "route"
          }
        }
      ],
      "discovery_run_at": null,
      "run": {
        "started_at": "2026-10-12T00:13:58.117Z",
        "finished_at": "2026-10-12T00:14:38.485Z",
        "discovery_reads": 29,
        "exchanges": [
          {
            "purpose": "probe_operation",
            "role": "request",
            "method": "POST",
            "url": "https://slack.com/api/chat.postMessage",
            "started_at": "2026-10-12T00:14:07.840Z",
            "finished_at": "2026-10-12T00:14:07.880Z",
            "response": {
              "status": 200,
              "media_type": "application/json",
              "content_bytes": 114,
              "content_digest": "sha256:7bd2fcecea4a3cf67657d10d8cb1cc3f287259f3249859c42bddd39d6ddf03dd"
            },
            "transport_error": null,
            "exchange_digest": "sha256:42d6771beabf17641877eb0fc03c02895cdfc137834605a0f482489383c0a495"
          },
          {
            "purpose": "probe_resource_metadata",
            "role": "request",
            "method": "GET",
            "url": "https://slack.com/.well-known/oauth-protected-resource/api/chat.postMessage",
            "started_at": "2026-10-12T00:14:11.127Z",
            "finished_at": "2026-10-12T00:14:11.167Z",
            "response": {
              "status": 404,
              "media_type": "text/html",
              "content_bytes": 1736,
              "content_digest": "sha256:ade10e41702572444c079d4070ae0a376f0d167c7d053cb8d15bca5a3d24b004"
            },
            "transport_error": null,
            "exchange_digest": "sha256:e7420c7de4b5a9be5dc3857436a387c329f4ce79dc5ada4ed2d6fa62782829c0"
          },
          {
            "purpose": "probe_resource_metadata",
            "role": "request",
            "method": "GET",
            "url": "https://slack.com/.well-known/oauth-protected-resource",
            "started_at": "2026-10-12T00:14:14.883Z",
            "finished_at": "2026-10-12T00:14:14.938Z",
            "response": {
              "status": 404,
              "media_type": "text/html",
              "content_bytes": 45148,
              "content_digest": "sha256:617647ae88ea7b14540220bb62bf04166c6b9647baea5ea953a133c4c4f73048"
            },
            "transport_error": null,
            "exchange_digest": "sha256:077d076ac65dedf815e1faf3109a889e55950dea02f4a6f0b5394649c3770c7d"
          },
          {
            "purpose": "probe_operation",
            "role": "session_opening",
            "method": "POST",
            "url": "https://mcp.slack.com/mcp",
            "started_at": "2026-10-12T00:14:20.187Z",
            "finished_at": "2026-10-12T00:14:20.225Z",
            "response": {
              "status": 401,
              "media_type": "application/json",
              "content_bytes": 77,
              "content_digest": "sha256:f53ac16a775917fe6dd1caf35105662193030ee76ec6227bf140646d3e1bded4"
            },
            "transport_error": null,
            "exchange_digest": "sha256:a0ac215e0821d70bc2cf19a08277089e939713ddd42cda9adb2364b7dbdf7abb"
          },
          {
            "purpose": "probe_resource_metadata",
            "role": "request",
            "method": "GET",
            "url": "https://mcp.slack.com/.well-known/oauth-protected-resource",
            "started_at": "2026-10-12T00:14:24.010Z",
            "finished_at": "2026-10-12T00:14:24.050Z",
            "response": {
              "status": 200,
              "media_type": "application/json",
              "content_bytes": 757,
              "content_digest": "sha256:19ec25f364665494d250e48ff0ac4cc6f5779f05cbc51f26139ca6183909ded7"
            },
            "transport_error": null,
            "exchange_digest": "sha256:44fde57e5408e374f7a8a10e4e1dfd7599a2825bc9cc72141b54d5f94421867e"
          },
          {
            "purpose": "probe_authorization_server",
            "role": "request",
            "method": "GET",
            "url": "https://mcp.slack.com/.well-known/oauth-authorization-server",
            "started_at": "2026-10-12T00:14:29.337Z",
            "finished_at": "2026-10-12T00:14:29.377Z",
            "response": {
              "status": 200,
              "media_type": "application/json",
              "content_bytes": 1008,
              "content_digest": "sha256:0032884c8d36253d31313163faaa0a7126c6208505f27db762ad7ae5591839d9"
            },
            "transport_error": null,
            "exchange_digest": "sha256:a11274cc8a37bb30f60f4e29e880002323b217acd9aa4208b573ca276e77bb64"
          },
          {
            "purpose": "probe_page",
            "role": "request",
            "method": "GET",
            "url": "https://slack.com/get-started",
            "started_at": "2026-10-12T00:14:33.242Z",
            "finished_at": "2026-10-12T00:14:33.367Z",
            "response": {
              "status": 403,
              "media_type": "text/html",
              "content_bytes": 39826,
              "content_digest": "sha256:3005952268db99d5b60ea83f85fbd6c0733d56dfd386ffb3457bd068fc555f4f"
            },
            "transport_error": null,
            "exchange_digest": "sha256:42d4686763cfcae2d4334bcb0f4817f28096431aa0deb08e5cd89b91b4b414dd"
          }
        ],
        "assertions": []
      },
      "last_run_at": "2026-10-12T00:14:38.485Z",
      "publication": {
        "visibility": "discoverable",
        "reasons": []
      },
      "provenance": {
        "dispute": "none",
        "vendor_attestation": {
          "status": "none"
        },
        "basis_event_ids": []
      },
      "canonical_url": "https://sourcey.com/c/slack/agent-readiness/slack-web-api/chat-message-post",
      "projection_digest": "sha256:9d6a49c2306d8cf0b236f000c688b94ad383108b8098b36278e6275675fe3733"
    }
  }
}
