{
  "name": "Launchfiles A2A",
  "description": "Agent-to-agent JSON-RPC: read + propose, Case B product mint/bootstrap, public free standalones (Design UX, Search Repair teaser, Deployment Trust), paid Design UX debit, and billing discover/checkout (not spend). Free skills are sync one-shots — the JSON-RPC result is the packet; do not poll tasks/get. Public discovery is not authority. Raw secrets rejected. No publish, deploy, or approve. A2A taskStore is in-process non-durable memory (not a durable task DB). Durable mission work lives in mission_sessions.",
  "url": "https://launchfiles.app/api/a2a",
  "version": "launchfiles_a2a_v1",
  "protocolVersion": "0.2.1",
  "protocol": "json-rpc-2.0",
  "taskStore": "memory",
  "taskStoreDurability": "in-process non-durable",
  "taskStoreResidualRisk": "tasks/get and tasks/cancel only see this process memory. Lost on restart/redeploy/multi-instance. Durable mission work lives in mission_sessions, not the A2A task store.",
  "authentication": {
    "type": "bearer",
    "tokenHelp": "https://launchfiles.app/use-from-agent#connect",
    "publicFreeSkills": [
      "design_ux_radar.run_free",
      "search_repair_radar.run_free",
      "deployment_trust_radar.run_free"
    ]
  },
  "methods": [
    "agent/card",
    "message/send",
    "tasks/get",
    "tasks/cancel",
    "catalog",
    "workspaces.list",
    "workspaces.create",
    "workspaces.bind",
    "workspaces.unbind",
    "session.get",
    "connections.get",
    "connections.save",
    "connections.scan",
    "products.list",
    "products.create",
    "products.completeness",
    "products.bootstrap_truth",
    "products.attach_adapter",
    "propose.signal",
    "propose.work_order",
    "mission.status",
    "design_ux_radar.run_free",
    "search_repair_radar.run_free",
    "deployment_trust_radar.run_free",
    "design_ux_radar.run_paid",
    "billing.providers.list",
    "billing.checkout.create",
    "page_draft.run_paid",
    "page_draft.run_short",
    "agent_key.request",
    "agent_key.poll"
  ],
  "publicFreeSkills": [
    "design_ux_radar.run_free",
    "search_repair_radar.run_free",
    "deployment_trust_radar.run_free"
  ],
  "forbidden": [
    "publish",
    "deploy",
    "approve",
    "spend",
    "gate_bypass",
    "billing.mutation"
  ],
  "billingDiscoverAllowed": [
    "billing.providers.list",
    "billing.checkout.create"
  ],
  "syncFreeSkills": {
    "skills": [
      "design_ux_radar.run_free",
      "search_repair_radar.run_free",
      "deployment_trust_radar.run_free"
    ],
    "resultInSameResponse": true,
    "doNotPollTasksGet": true,
    "note": "Free skills return the packet in the original JSON-RPC result. tasks/get is an optional in-process memory lookup, not durable, not required for free work."
  },
  "related": {
    "mcp": "https://launchfiles.app/api/mcp",
    "rest": "https://launchfiles.app/api/v1/agent/connections",
    "products": "https://launchfiles.app/api/products",
    "ui": "https://launchfiles.app/connections",
    "runtime_map": "https://launchfiles.app/settings/developer/runtime-map",
    "capabilitiesCatalog": "https://launchfiles.app/.well-known/agent-capabilities.json",
    "agentCard": "https://launchfiles.app/.well-known/agent-card.json",
    "llms": "https://launchfiles.app/llms.txt",
    "human_free_product": "https://launchfiles.app/cro"
  },
  "mutationBoundary": "Read + propose + connection metadata + Case B product mint/bootstrap + free standalones (all three radars) + paid Design UX debit path. Free skills never unlock paid SKUs. Free skills return the skill result in the same JSON-RPC response. No publish, approval, free-form spend, or deploy via A2A. Billing discover tools return checkout URL/x402 only (not spend).",
  "publicDiscoveryIsNotAuthority": true,
  "claim_ladder": [
    { "surface": "Free standalones", "claim": "public_standalone", "auth": "anon or key" },
    { "surface": "Full mission", "claim": "whitelist_mission", "auth": "whitelist" },
    { "surface": "Paid standalones", "claim": "paid_agent", "auth": "agent API key + credits (stripe | xmoney | x402)" },
    { "surface": "Payment rails", "claim": "multi_provider", "auth": "env-switched registry" },
    { "surface": "Execute/publish", "claim": "forbidden", "auth": "n/a" }
  ],
  "public_standalone": {
    "claim": "public_standalone",
    "free_only": true,
    "skills": [
      "design_ux_radar.run_free",
      "search_repair_radar.run_free",
      "deployment_trust_radar.run_free"
    ],
    "required_tier": "anon"
  },
  "whitelist_mission": {
    "claim": "whitelist_mission",
    "required_tier": "whitelist",
    "note": "Full mission run is design-partner whitelist or founder only; not public."
  },
  "paid_agent": {
    "claim": "paid_agent",
    "required_tier": "paid",
    "auth": "agent API key + credits",
    "payment_rails": ["stripe", "xmoney", "x402"]
  },
  "multi_provider": {
    "claim": "multi_provider",
    "rails": ["stripe", "xmoney", "x402"],
    "env_switch": "LAUNCHFILES_PAYMENT_PROVIDERS"
  },
  "partF": {
    "a2a_no_backdoor": true,
    "every_action_maps_to_task_and_receipt": false,
    "syncFreeSkillsReturnResultInSameResponse": true,
    "durableWorkStore": "mission_sessions",
    "same_scope_family_as_mcp": true,
    "execute_publish": "forbidden"
  }
}
