{
  "schemaVersion": "1.0",
  "updatedAt": "2026-07-24",
  "agentApiVersion": "2026-07-24",
  "editorialResponsibilityVersion": "2026-07-23",
  "canonical": "https://seodrafts.com/agents/capabilities.json",
  "interfaces": [
    {
      "id": "mcp",
      "label": "Hosted MCP",
      "type": "mcp",
      "endpoint": "https://mcp.seodrafts.com/mcp",
      "manifest": "https://mcp.seodrafts.com/.well-known/mcp/server.json",
      "transport": "streamable-http",
      "environment": "remote",
      "authentication": {
        "type": "bearer",
        "scope": "project",
        "description": "Configure a revocable, expiring sda_live_ agent token with explicit tool scopes and project grants in a compatible MCP client.",
        "oauthDiscovery": false
      },
      "readTools": [
        "get_agent_capabilities",
        "list_projects",
        "get_project",
        "list_posts",
        "get_post",
        "list_post_revisions",
        "list_opportunities",
        "get_opportunity",
        "get_editorial_insights",
        "get_integration_health",
        "get_billing_status",
        "list_agent_audit_events",
        "recommend_publisher_integration",
        "list_publisher_integrations"
      ],
      "writeTools": [
        "update_project_context",
        "update_project_image_style",
        "create_post_draft",
        "update_post",
        "schedule_post",
        "approve_post",
        "decline_post",
        "restore_post_to_review",
        "check_post_publish_health",
        "create_opportunity",
        "generate_review_draft"
      ],
      "publishTools": [],
      "approvalGate": "approve_post requires the separately granted posts:approve scope, exact current contentVersion and stateVersion values, the exact editorialResponsibilityVersion discovered from capabilities, and explicit responsibility, claim-verification, original-value, and author-identity attestations. Scheduling is a separate posts:schedule operation. Approval returns an approvalEpoch that binds the later asynchronous publisher handoff; it cannot publish directly."
    },
    {
      "id": "cli",
      "label": "Tenant CLI",
      "type": "cli",
      "package": "@wotaso/seo-blog-admin-cli",
      "packageUrl": "https://www.npmjs.com/package/@wotaso/seo-blog-admin-cli",
      "environment": "tenant-ci-or-server",
      "description": "Use the published package for project-allowlisted agent workflows, secure token management, tenant-side setup, and customer-owned publishing. Check its --help output before relying on a newly released command."
    },
    {
      "id": "typescript-sdk",
      "label": "TypeScript SDK",
      "type": "sdk",
      "package": "@wotaso/seo-blog-admin-sdk",
      "packageUrl": "https://www.npmjs.com/package/@wotaso/seo-blog-admin-sdk",
      "environment": "server-or-ci-only",
      "description": "Use the typed Agent API client for all scoped project, post, opportunity, insight, integration, billing, and audit operations, or build a customer-owned publisher without exposing tokens to browser code."
    }
  ],
  "capabilities": [
    {
      "id": "read-work",
      "title": "Read the work",
      "description": "List granted projects, evidence-backed opportunities, complete post metadata and lossless bounded body chunks, revision history, editorial insights, integration health, billing entitlements, and token audit events."
    },
    {
      "id": "bounded-editorial-changes",
      "title": "Edit with scoped authority",
      "description": "Update reviewed context or a contrast-checked project hero palette, create one evidence-backed opportunity or review-only post, revise or decline an exact content/state version, separately schedule an approved version, trigger one qualified generation, or approve only with the separate scope and required attestations."
    },
    {
      "id": "customer-owned-publishing",
      "title": "Publish through your stack",
      "description": "Use tenant-side CLI, SDK, Git, CMS, or signed-webhook paths for approved content while provider credentials remain in CI or server-side storage."
    }
  ],
  "boundaries": [
    {
      "id": "no-direct-publish",
      "description": "MCP exposes no direct publish-now tool. A separately scoped approval binds exact contentVersion and stateVersion values and returns an approvalEpoch for the later customer-owned publisher handoff; scheduling remains separately scoped."
    },
    {
      "id": "no-open-ended-system-access",
      "description": "MCP exposes no shell, SQL, arbitrary-URL fetch, bulk page factory, or provider-credential tool."
    },
    {
      "id": "credentials-stay-server-side",
      "description": "CMS, Git, webhook, and publish credentials stay in tenant CI, encrypted server-side storage, or a tenant-owned secret store; they never enter MCP tool arguments."
    },
    {
      "id": "configured-bearer-auth",
      "description": "Hosted MCP currently requires a configured, expiring, revocable Bearer token with an exact project allowlist. SEODrafts does not advertise a one-click OAuth connection."
    },
    {
      "id": "no-outcome-guarantees",
      "description": "Agent access and publishing do not guarantee indexing, rankings, traffic, backlinks, or AI citations."
    }
  ],
  "concurrencyContract": {
    "projectContext": "Read contextVersion and send it as expectedContextVersion with the complete contextSourceUrls replacement list.",
    "postMutations": "Before every mutation of an existing post and every publication-health check, read and send its current expectedContentVersion and expectedStateVersion.",
    "approval": "Read editorialResponsibilityVersion from capabilities, attest explicitly, and observe the returned approvalEpoch; approval never grants scheduling authority.",
    "publisherCallbacks": "Customer-owned asynchronous publishers must bind contentVersion, stateVersion, and approvalEpoch so stale attempts cannot overwrite newer editorial state."
  },
  "links": {
    "agentsPage": "https://seodrafts.com/agents/",
    "openApi": "https://api.seodrafts.com/api/v1/agent/openapi.json",
    "llms": "https://seodrafts.com/llms.txt",
    "agentManifest": "https://seodrafts.com/.well-known/agent.json",
    "capabilityCatalog": "https://seodrafts.com/agents/capabilities.json",
    "integrationCatalog": "https://seodrafts.com/integrations/catalog.json",
    "integrationGuide": "https://seodrafts.com/docs/integration.html",
    "tenantSkill": "https://seodrafts.com/skills/seo-blog-admin-projects/SKILL.md",
    "tenantSkillIndex": "https://seodrafts.com/.well-known/agent-skills/index.json",
    "tenantSkillDigest": "sha256:05e3d3fe724f9ebc52fb44a28ecbf2d8d0dcd4f4181a86010d9e3e313a994b97",
    "tenantSkillRepository": "https://github.com/Wotaso/seodrafts-agent-skills"
  }
}
