Skip to content

[TypeScript] Support A2A protocol in AgentCore CLI + serve_a2a equivalent in TS SDK #1743

Description

@MeidanNasi

Description

Summary

The AgentCore CLI (@aws/agentcore) and the TypeScript SDK (bedrock-agentcore)
do not currently support the A2A (Agent-to-Agent) protocol, while the Python
tooling does. This forces TypeScript users into a manual workaround to deploy
an A2A agent.

Environment

  • CLI: @aws/agentcore (npm)
  • SDK: bedrock-agentcore (npm, TypeScript)
  • Language: TypeScript
  • Protocol: A2A

Current behavior

  1. Running agentcore and selecting TypeScript offers only the default
    HTTP protocol — there is no option to select A2A.
  2. Selecting Python does offer the A2A protocol option.
  3. The Python SDK exposes serve_a2a from bedrock_agentcore.runtime, but the
    npm package bedrock-agentcore/runtime has no serve_a2a equivalent.
  4. Attempting --language TypeScript --protocol A2A is gated at the CLI level
    (per the CLI CHANGELOG: "gate MCP and A2A protocols behind Python-only until
    TS templates land").

Expected behavior

TypeScript should have parity with Python for A2A:

  • agentcore CLI should allow selecting the A2A protocol for TypeScript
    agents and scaffold an appropriate template.
  • The TypeScript SDK should provide a serve_a2a equivalent (or documented
    helper) that satisfies the A2A protocol contract (port 9000, POST /,
    GET /ping, GET /.well-known/agent-card.json).

Current workaround

A2A works with TypeScript today, but only manually:

  • Implement the A2A contract using the official @a2a-js/sdk on port 9000.
  • Register the agent as HTTP, then edit agentcore/agentcore.json to set
    protocol: A2A.
  • Provide a custom ARM64 Dockerfile (base node:22-slim, EXPOSE 9000).
  • Deploy via agentcore deploy (CodeBuild handles the ECR push), or bypass the
    CLI entirely with CDK (protocolConfiguration: ProtocolType.A2A).

This confirms the gap is a tooling/SDK limitation, not an architectural one
AgentCore's A2A support is a transparent JSON-RPC proxy that is language-agnostic.

Requests

  1. Add A2A protocol support (CLI scaffolding + template) for TypeScript.
  2. Add a serve_a2a equivalent to the TypeScript SDK.
  3. Document the TypeScript A2A path in the AgentCore devguide.

References

Acceptance Criteria

Acceptance Criteria

  • Running the agentcore CLI with --language TypeScript offers A2A
    as a selectable protocol (not just HTTP).
  • agentcore ... --language TypeScript --protocol A2A no longer errors out
    (the Python-only gate is removed for A2A).
  • The CLI scaffolds a working TypeScript A2A template that satisfies the
    A2A protocol contract (port 9000, POST /, GET /ping,
    GET /.well-known/agent-card.json).
  • The TypeScript SDK (bedrock-agentcore) exposes a serve_a2a equivalent
    (or a documented helper) so users don't have to wire up @a2a-js/sdk
    manually.
  • A scaffolded TypeScript A2A agent can be deployed via agentcore deploy
    and successfully responds to a JSON-RPC message/send request.
  • The AgentCore devguide documents the TypeScript A2A path end-to-end.

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions