{
  "title": "MCP vs A2A Decision Framework",
  "schemaVersion": "1.0",
  "researchFreeze": "2026-08-26",
  "protocolRevision": "MCP 2026-07-28 / A2A 1.0",
  "mcpRevision": "2026-07-28",
  "a2aCompatibilityLine": "1.0",
  "a2aWebsiteSpecificationLabel": "1.0.0",
  "a2aRepositoryPatchTag": "v1.0.1",
  "a2aVersionSemantics": "A2A negotiates major.minor 1.0; patch tags identify specification releases and are not negotiated.",
  "count": 15,
  "records": [
    {
      "Question": "Is the remote component expected to execute one defined operation?",
      "Recommendation": "Prefer MCP.",
      "id": "R8-DEC01",
      "packageSourceIds": [
        "S003",
        "S004",
        "S038"
      ],
      "sourceIds": [
        "S339",
        "S340",
        "S054"
      ]
    },
    {
      "Question": "Is the remote component expected to decide its own plan?",
      "Recommendation": "Prefer A2A.",
      "id": "R8-DEC02",
      "packageSourceIds": [
        "S003",
        "S004",
        "S038"
      ],
      "sourceIds": [
        "S339",
        "S340",
        "S054"
      ]
    },
    {
      "Question": "Does the caller specify exact structured arguments?",
      "Recommendation": "MCP tool is usually the clearer contract.",
      "id": "R8-DEC03",
      "packageSourceIds": [
        "S003",
        "S004",
        "S038"
      ],
      "sourceIds": [
        "S339",
        "S340",
        "S054"
      ]
    },
    {
      "Question": "Does the caller delegate an outcome and tolerate different execution plans?",
      "Recommendation": "A2A is usually the clearer contract.",
      "id": "R8-DEC04",
      "packageSourceIds": [
        "S003",
        "S004",
        "S038"
      ],
      "sourceIds": [
        "S339",
        "S340",
        "S054"
      ]
    },
    {
      "Question": "Must the same integration run locally over stdio?",
      "Recommendation": "MCP has a first-class local model.",
      "id": "R8-DEC05",
      "packageSourceIds": [
        "S003",
        "S004",
        "S038"
      ],
      "sourceIds": [
        "S339",
        "S340",
        "S054"
      ]
    },
    {
      "Question": "Must work survive disconnects and be tracked as a collaborative task?",
      "Recommendation": "A2A core Tasks or MCP Tasks extension, depending on whether the remote party is an agent or capability server.",
      "id": "R8-DEC06",
      "packageSourceIds": [
        "S003",
        "S004",
        "S038"
      ],
      "sourceIds": [
        "S339",
        "S340",
        "S054"
      ]
    },
    {
      "Question": "Does the remote party advertise a set of broad domain skills?",
      "Recommendation": "A2A Agent Card.",
      "id": "R8-DEC07",
      "packageSourceIds": [
        "S003",
        "S004",
        "S038"
      ],
      "sourceIds": [
        "S339",
        "S340",
        "S054"
      ]
    },
    {
      "Question": "Does it expose data objects with stable URIs?",
      "Recommendation": "MCP resources.",
      "id": "R8-DEC08",
      "packageSourceIds": [
        "S003",
        "S004",
        "S038"
      ],
      "sourceIds": [
        "S339",
        "S340",
        "S054"
      ]
    },
    {
      "Question": "Does the model need to choose among bounded functions?",
      "Recommendation": "MCP tools, typically mapped into native function calling.",
      "id": "R8-DEC09",
      "packageSourceIds": [
        "S003",
        "S004",
        "S038"
      ],
      "sourceIds": [
        "S339",
        "S340",
        "S054"
      ]
    },
    {
      "Question": "Is the remote party independently owned and intentionally opaque?",
      "Recommendation": "A2A.",
      "id": "R8-DEC10",
      "packageSourceIds": [
        "S003",
        "S004",
        "S038"
      ],
      "sourceIds": [
        "S339",
        "S340",
        "S054"
      ]
    },
    {
      "Question": "Should the local orchestrator retain all reasoning and synthesis?",
      "Recommendation": "MCP.",
      "id": "R8-DEC11",
      "packageSourceIds": [
        "S003",
        "S004",
        "S038"
      ],
      "sourceIds": [
        "S339",
        "S340",
        "S054"
      ]
    },
    {
      "Question": "Are multiple specialized agents collaborating across frameworks?",
      "Recommendation": "A2A between agents; MCP inside each where useful.",
      "id": "R8-DEC12",
      "packageSourceIds": [
        "S003",
        "S004",
        "S038"
      ],
      "sourceIds": [
        "S339",
        "S340",
        "S054"
      ]
    },
    {
      "Question": "Is a deterministic API being wrapped as an “agent” only for fashion?",
      "Recommendation": "Use MCP or the API directly.",
      "id": "R8-DEC13",
      "packageSourceIds": [
        "S003",
        "S004",
        "S038"
      ],
      "sourceIds": [
        "S339",
        "S340",
        "S054"
      ]
    },
    {
      "Question": "Is one agent being flattened into a giant tool schema?",
      "Recommendation": "Consider A2A if delegation, task lifecycle and artifacts matter.",
      "id": "R8-DEC14",
      "packageSourceIds": [
        "S003",
        "S004",
        "S038"
      ],
      "sourceIds": [
        "S339",
        "S340",
        "S054"
      ]
    },
    {
      "Question": "Do both boundaries exist?",
      "Recommendation": "Use both and preserve identity/authorization across the bridge.",
      "id": "R8-DEC15",
      "packageSourceIds": [
        "S003",
        "S004",
        "S038"
      ],
      "sourceIds": [
        "S339",
        "S340",
        "S054"
      ]
    }
  ]
}