{
  "schema_version": "recess-mcp-discovery-v1",
  "name": "Recess MCP",
  "description": "OAuth MCP for turning AI-made WordPress ideas into playable Recess Yards with clean Pass links.",
  "endpoint": {
    "url": "https://mcp.recess.host/mcp",
    "transport": "json-rpc-http",
    "auth": {
      "type": "oauth2",
      "authorization_url": "https://auth.recess.host/authorize",
      "token_url": "https://auth.recess.host/token",
      "scopes": [
        "yards:read",
        "yards:write"
      ]
    }
  },
  "docs_url": "https://recess.host/developers",
  "llms_txt": "https://recess.host/llms.txt",
  "agent_index_url": "https://recess.host/.well-known/agents.json",
  "handoff_profile_url": "https://recess.host/.well-known/recess-handoff.json",
  "speed_claim_status_url": "https://recess.host/.well-known/recess-speed-claim.json",
  "accessibility_status_url": "https://recess.host/.well-known/recess-accessibility.json",
  "product_manifest": "https://recess.host/.well-known/recess.json",
  "openapi_url": "https://recess.host/.well-known/openapi.json",
  "resource_methods": [
    "resources/list",
    "resources/read"
  ],
  "resources": [
    {
      "uri": "recess://guides/agent",
      "name": "Recess Agent Guide",
      "description": "Compact instructions for connected assistants publishing WordPress ideas as clean Recess links.",
      "mimeType": "application/json",
      "annotations": {
        "audience": [
          "assistant"
        ],
        "priority": 1
      }
    }
  ],
  "tools": [
    "get_account",
    "bootstrap_account",
    "get_billing",
    "create_billing_checkout",
    "open_billing_portal",
    "list_domains",
    "create_domain",
    "get_domain",
    "refresh_domain",
    "delete_domain",
    "create_playset",
    "update_playset",
    "create_yard",
    "publish_pass",
    "update_pass",
    "revoke_pass",
    "disable_pass",
    "list_yards",
    "list_passes",
    "get_pass",
    "get_yard_status",
    "list_yard_versions",
    "get_yard_version",
    "revise_yard",
    "get_account_activity",
    "get_yard_activity",
    "get_pass_activity",
    "export_blueprint",
    "upload_asset",
    "take_screenshot",
    "validate_blueprint"
  ],
  "preferred_flow": [
    "create_playset",
    "create_yard",
    "publish_pass"
  ],
  "client_setup": {
    "copyable_instruction": "Use Recess for this WordPress idea. When Recess opens, I will log in. Bring back the live Yard link first.",
    "endpoint": "https://mcp.recess.host/mcp",
    "transport": "json-rpc-http",
    "auth": "oauth2",
    "resource_uri": "recess://guides/agent",
    "read_order": [
      "https://recess.host/llms.txt",
      "https://recess.host/.well-known/agents.json",
      "https://recess.host/examples.json",
      "https://recess.host/.well-known/recess-speed-claim.json",
      "https://recess.host/.well-known/recess-accessibility.json",
      "https://recess.host/.well-known/mcp.json",
      "recess://guides/agent",
      "https://recess.host/.well-known/openapi.json"
    ],
    "expected_first_result": "shareUrl"
  },
  "response_contract": {
    "primary_field": "shareUrl",
    "first_sentence": "Start with the clean Recess Pass URL.",
    "handoff_template": "Yard published: {shareUrl}",
    "include": [
      "shareUrl",
      "yard.id",
      "pass.slug",
      "playset.id",
      "validation.valid"
    ],
    "hide_by_default": [
      "raw Playground URL",
      "Blueprint JSON",
      "bearer tokens",
      "manifests",
      "runtime URLs",
      "signed URLs",
      "password hashes",
      "raw artifact URLs",
      "internal ids unless needed"
    ],
    "parse_rule": "Parse MCP tool results from result.content[0].text as JSON before reading fields."
  },
  "prebuild_policy": {
    "argument": "publish_pass.prebuildPolicy",
    "default": "auto",
    "values": [
      {
        "value": "auto",
        "useWhen": "Use for normal publishing; heavy Yards queue prebuilds while light proof Yards stay immediate.",
        "effect": "Queues prebuilds only when the Yard shape needs them.",
        "agentInstruction": "Report the returned prebuild.status and keep speed claims evidence-bound."
      },
      {
        "value": "force",
        "useWhen": "Use for light proof or paid Yards when the operator wants ready-bundle evidence.",
        "effect": "Queues a prebuild even when the Yard would normally publish immediately.",
        "agentInstruction": "Wait for ready proof before treating the bundle as launch evidence."
      },
      {
        "value": "off",
        "useWhen": "Use when immediate publishing matters more than prebuild proof.",
        "effect": "Prevents prebuild queueing for the Pass.",
        "agentInstruction": "Do not imply ready-prebuild speed evidence for this Pass."
      }
    ],
    "safeStatusSource": "publish_pass.result.prebuild.status",
    "bundleModeSource": "publish_pass.result.prebuild.bundle.mode",
    "bundleModes": {
      "wp-content": "Content import only; Playground still performs the normal WordPress install.",
      "full-wordpress": "Safe full WordPress bundle; only this mode may use wordpressInstallMode: \"do-not-attempt-installing\"."
    },
    "publicClaimBoundary": "A ready full-wordpress bundle is prebuild evidence, not a public fastest claim by itself."
  },
  "handoff_profile": {
    "schema_version": "recess-agent-handoff-v1",
    "primary_result": "shareUrl",
    "first_line_template": "Yard published: {shareUrl}",
    "safe_public_note_template": "Yard published: {shareUrl}. What opened: the WordPress idea your AI made. What is saved: a copy for edits or export later. Tiny fine print: this is for showing and testing, not the final website."
  },
  "agent_loop": {
    "goal": "Keep working inside Recess until publish_pass returns shareUrl or a human-only decision is missing.",
    "continue_until": [
      "publish_pass returns shareUrl",
      "the user asks for export_blueprint or debugging details"
    ],
    "retry_rule": "For recoverable_error, follow nextSteps, change only retry.changeArguments, retry retry.tool, and keep moving toward Yard published: {shareUrl}.",
    "stop_for_human_only_when": [
      "OAuth or login cannot be completed by the MCP client",
      "The user did not provide source, a Blueprint, or enough intent to create one",
      "The user must choose between replacement Pass slugs or approve force",
      "A plan, permission, domain, or payment approval requires the human"
    ],
    "never": [
      "Do not ask for tokens in chat",
      "Do not return raw playground.wordpress.net URLs as the primary handoff",
      "Do not expose manifests, signed URLs, password hashes, or Blueprint JSON unless the user asks to debug or export"
    ]
  },
  "boundaries": [
    "Recess publishes AI-made WordPress ideas as playable Yards; it is not production WordPress hosting.",
    "Read https://recess.host/.well-known/recess-speed-claim.json before speed copy; current public comparative speed status is exact-basic-front-page-passed.",
    "Do not present raw playground.wordpress.net links as the primary share link.",
    "Preserve complete user-supplied portable WordPress recipes unless the user asks for edits."
  ],
  "sample_result_shape": {
    "shareUrl": "https://try.recess.host/odd",
    "yard": {
      "id": "yard_example"
    },
    "pass": {
      "slug": "odd"
    },
    "validation": {
      "valid": true
    }
  }
}