{"interfaces":["cli","http-api","mcp","web-ui"],"artifactKinds":["article","note","idea","code","app","image","video","dataset","workflow","conversation-branch"],"reviewProfiles":[{"id":"private_handoff","authority":"ai_delegated_low_risk","requiredChecks":["source_exists","hash_recorded"]},{"id":"public_content","authority":"human_required","requiredChecks":["source_exists","hash_recorded","human_approval","public_preview"]},{"id":"business_idea","authority":"ai_recommendation","requiredChecks":["source_exists","hash_recorded","owner_review","confidentiality_check"]},{"id":"client_asset","authority":"human_required","requiredChecks":["source_exists","hash_recorded","client_or_owner_approval","rights_check"]},{"id":"executable_code","authority":"human_required","requiredChecks":["source_exists","hash_recorded","tests_pass","sandbox_or_preview","human_approval","rollback_plan"]}],"adapters":[{"id":"here-now-drive","label":"here.now Drive","status":"working","mode":"handoff","supportedArtifactKinds":["article","note","idea","code","app","image","video","dataset","workflow","conversation-branch"],"requiresApproval":false,"capabilities":["private_storage","cross_agent_handoff","media_upload"],"operations":["validate","render","upload_media","sync","status"],"credentialRequirements":[{"provider":"here.now","authType":"local_profile","requiredFor":["sync","upload_media","status"],"secretRefs":["here.now profile credentials outside this repo"],"setup":"Authenticate with here.now locally or through the hosted provider connection store."}]},{"id":"r2-media","label":"Cloudflare R2 Media","status":"working","mode":"handoff","supportedArtifactKinds":["image","video","dataset","app"],"requiresApproval":false,"capabilities":["private_storage","media_upload","worker_binding"],"operations":["validate","render","upload_media","sync","status"],"credentialRequirements":[{"provider":"cloudflare-r2","authType":"service_token","requiredFor":["upload_media","sync","status"],"secretRefs":["Cloudflare Worker R2 binding: ARTIFACTS"],"setup":"Bind the R2 bucket in wrangler.jsonc and keep account credentials in Cloudflare, not manifests."}]},{"id":"here-now-sites","label":"here.now Sites","status":"working","mode":"deploy","supportedArtifactKinds":["article","note","idea","image","video","app"],"requiresApproval":true,"capabilities":["public_preview","static_site_publish"],"operations":["validate","render","publish","sync","status","revoke"],"credentialRequirements":[{"provider":"here.now","authType":"local_profile","requiredFor":["publish","sync","status","revoke"],"secretRefs":["here.now profile credentials outside this repo"],"setup":"Authenticate with here.now locally or through the hosted provider connection store."}]},{"id":"github","label":"GitHub Source Ledger","status":"working","mode":"handoff","supportedArtifactKinds":["article","note","idea","code","app","image","video","dataset","workflow","conversation-branch"],"requiresApproval":false,"capabilities":["source_metadata","commit_provenance"],"operations":["validate","render","upload_media","sync","status"],"credentialRequirements":[{"provider":"github","authType":"local_profile","requiredFor":["sync","status"],"secretRefs":["gh auth token or GITHUB_TOKEN"],"setup":"Use gh auth or GitHub Actions secrets. Do not commit tokens."}]},{"id":"github-release","label":"GitHub Release","status":"working","mode":"distribute","supportedArtifactKinds":["article","note","code","app","image","video","dataset","workflow"],"requiresApproval":true,"capabilities":["release_asset","versioned_distribution","media_asset_distribution"],"operations":["validate","render","publish","status"],"credentialRequirements":[{"provider":"github","authType":"local_profile","requiredFor":["publish","status"],"secretRefs":["gh auth token or GITHUB_TOKEN"],"setup":"Use gh auth or GitHub Actions secrets with release permissions. Do not commit tokens."}]},{"id":"kurka-labs-papers","label":"Kurka Labs Papers","status":"working","mode":"deploy","supportedArtifactKinds":["article","note","idea","conversation-branch"],"requiresApproval":true,"capabilities":["canonical_article","repo_render","cloudflare_pages_deploy"],"operations":["validate","render","publish","sync","status","revoke"],"credentialRequirements":[{"provider":"github-cloudflare-pages","authType":"local_profile","requiredFor":["publish","sync","status"],"secretRefs":["kurkalabs git remote auth","Cloudflare Pages GitHub integration"],"setup":"Use the Kurka Labs GitHub repo and Cloudflare Pages integration; keep credentials in GitHub/Cloudflare."}]},{"id":"substack-post","label":"Substack Post","status":"assisted","mode":"distribute","supportedArtifactKinds":["article","note"],"requiresApproval":true,"capabilities":["draft_generation","canonical_link_back"],"operations":["validate","render","publish","status"],"credentialRequirements":[{"provider":"substack","authType":"oauth2","requiredFor":["publish","status"],"secretRefs":["SUBSTACK_ACCESS_TOKEN"],"setup":"Keep public posting assisted until an approved Substack API or OAuth path is configured.","optional":true}]},{"id":"medium-post","label":"Medium Post","status":"assisted","mode":"distribute","supportedArtifactKinds":["article","note"],"requiresApproval":true,"capabilities":["draft_generation","canonical_link_back","publication_review"],"operations":["validate","render","publish","status"],"credentialRequirements":[{"provider":"medium","authType":"api_token","requiredFor":["publish","status"],"secretRefs":["MEDIUM_INTEGRATION_TOKEN"],"setup":"Store Medium integration tokens in Cloudflare secrets or a provider vault after account API access is confirmed.","optional":true}]},{"id":"linkedin-post","label":"LinkedIn Post","status":"assisted","mode":"distribute","supportedArtifactKinds":["article","note","idea"],"requiresApproval":true,"capabilities":["draft_generation","canonical_link_back"],"operations":["validate","render","publish","status"],"credentialRequirements":[{"provider":"linkedin","authType":"oauth2","requiredFor":["publish","upload_media","status"],"secretRefs":["LINKEDIN_CLIENT_ID","LINKEDIN_CLIENT_SECRET","LINKEDIN_REFRESH_TOKEN"],"setup":"Use an approved LinkedIn OAuth app and store secrets outside manifests.","optional":true}]},{"id":"x-thread","label":"X Thread","status":"assisted","mode":"distribute","supportedArtifactKinds":["article","note","idea"],"requiresApproval":true,"capabilities":["thread_draft_generation","canonical_link_back"],"operations":["validate","render","publish","status"],"credentialRequirements":[{"provider":"x","authType":"oauth2","requiredFor":["publish","upload_media","status"],"secretRefs":["X_CLIENT_ID","X_CLIENT_SECRET","X_REFRESH_TOKEN"],"setup":"Use an approved X API app/tier and store OAuth secrets outside manifests.","optional":true}]},{"id":"cloudflare","label":"Cloudflare","status":"planned","mode":"deploy","supportedArtifactKinds":["code","app","workflow"],"requiresApproval":true,"capabilities":["worker_deploy","pages_deploy","workflow_execution"],"operations":["validate","render","publish","sync","status","revoke"],"credentialRequirements":[{"provider":"cloudflare","authType":"api_token","requiredFor":["publish","sync","status","revoke"],"secretRefs":["CLOUDFLARE_API_TOKEN","Cloudflare Worker bindings"],"setup":"Use Cloudflare secrets, bindings, or CI secrets for hosted workflows."}]}],"workspaceModel":{"defaultWorkspaceId":"default","selectors":["x-workspace-id","workspaceId"],"resources":["users","workspaces","workspace_memberships","access_readiness","access_activation_status","membership_seeding_plan","manifests","publish_runs","audit_logs","provider_connections","provider_readiness","provider_setup_actions","provider_setup_validations"]},"authorizationModel":{"roles":["owner","admin","operator","viewer","anonymous"],"permissions":["workspace:read","workspace_membership:write","destination:write","provider_connection:write","provider_setup:write","routing_policy:write","manifest:write","approval:write","publish_run:write","media:write"],"tokenCompatibility":{"read":"OPERATOR_READ_TOKEN grants viewer access. If unset, local/dev reads remain public for backward compatibility.","write":"MANIFEST_WRITE_TOKEN grants owner-compatible write access until hosted memberships are active."},"accessCompatibility":{"status":"membership_resolver_ready","note":"Cloudflare Access user and service-token identities can resolve to workspace_memberships after AUTH_TRUST_ACCESS_HEADERS is enabled behind an Access-protected perimeter; compatibility tokens remain as local and automation fallback.","trustFlag":"AUTH_TRUST_ACCESS_HEADERS=true","identityCandidates":["users.email","workspace_memberships.user_id","cloudflare-access-user:<id>","cloudflare-access-service:<client-id>"]}}}