AGENT2AGENT FOR .NET

A2A protocol component for .NET. Fast, simple, secure.

The DelegateQ .NET component implements the Agent2Agent protocol v1.0.1, verified against the official Python and JavaScript SDKs.

A2A v1.0.1
net10.0
3 transports
0 dependencies in core
THE PROBLEM

Your AI agents can't talk to each other.

As organizations begin to run a growing roster of AI agents, the need for interoperability continues to grow. One qualifies sales leads. One reconciles invoices. One flags suspicious transactions. Each was built for a single job, often by a different team on a different framework, with its own conventions for messages, tasks, and results. With no common way to communicate between agents, every handoff needs its own hand-built bridge, and each new agent multiplies the bridges you have to build and maintain.

The Agent2Agent (A2A) protocol is an open standard removes that barrier by allowing AI agents from different platforms to securely communicate and collaborate. It lets agents discover one another's capabilities, pass well-defined requests and results back and forth, and cooperate safely using whatever platform each one runs on. For .NET teams, the remaining question is how to adopt it without writing the protocol layer from scratch.

CONFORMANCE

Verified against the A2A-SDK.

DelegateQ is tested against the official Python a2a-sdk[signing] and official JavaScript @a2a-js/sdk in both directions: their client drives DelegateQ agents, their parser validates every wire type DelegateQ emits, and their server hosts agents that the DelegateQ client drives. This ensures compatibility by removing implementation specific errors and proving out interoperability.

Tested for interoperability.
How does the A2A protocol work?

1. Discovery

The process begins when a client agent identifies a remote agent capable of handling a specific task. It does this by referencing the agent card, which, outlines capabilities, access requirements, and connection details that allows the client to select an agent based on advertised skills.

2. Authentication and authorisation

Before work begins, the remote agent verifies that the client agent meets its security requirements. A2A supports widely adopted standards such as OAuth 2.0, allowing agents to confirm identity and permissions before exchanging sensitive information.

3. Communication and execution

Once authenticated, agents exchange structured messages within the scope of a task. Some interactions are synchronous and return immediate results while others are asynchronous, using event streams or webhooks to provide updates for longer-running work. Since each task maintains state, both agents retain context across multiple exchanges.

TRANSPORTS

Three transports, one dispatcher.

DeletegateQ supports JSON-RPC 2.0, HTTP+JSON, and gRPC as underlying communication protocols, and all three sit all sit behind a single dispatcher.

Implementation via the single dispatcher method means continuity of the wire format is preserved regardlesss of the transport method.

// ASP.NET Core — register all three transports
app.MapA2AJsonRpc();
app.MapA2ARest();
app.MapA2AGrpc();
One dispatcher. One wire-format implementation.
CAPABILITIES

What you get.

Agent Cards & Signing

Cards signed with ES256 over RFC 8785 canonicalization. JWK Set publishing and jku resolution included.

Task Lifecycle

Full A2A task state machine. Every error code from -32001 through -32009 is implemented.

Streaming

Server-sent events for SendStreamingMessage and SubscribeToTask. No polling required.

Push Notifications

Signed push notifications verifiable by the receiver. Destination policy checked at registration and at delivery.

Storage

In-memory, file-system, and SQLite storage. ListTasks filtering and paging run in SQL with the SQLite provider.

Security

API key, Bearer/OAuth2/OIDC, and mutual TLS for caller authentication. No runtime licence mechanism.

Three Transports

JSON-RPC 2.0, HTTP+JSON, and gRPC behind one dispatcher means continuity via a single wire-format implementation.

Diagnostics

PDBs ship inside the packages. Stack traces carry file names and line numbers with no symbol server.

CODE SAMPLE

Sample code that works.

Signed card, discovery endpoint, JSON-RPC endpoint, and a skill.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDelegateQ(options =>
{
    options.Card = new AgentCard
    {
        Name        = "greeter",
        Description = "Returns a greeting.",
        Url         = "https://example.com/a2a",
        Skills      = [new AgentSkill { Id = "greet",
                                        Name = "Greet" }],
    };
    options.SigningKey = SigningKey.Generate();
});

var app = builder.Build();

app.MapA2ADiscovery();   // GET /.well-known/agent.json
app.MapA2AJsonRpc();     // POST /a2a

app.MapA2ASkill("greet", async (ctx, ct) =>
{
    var name = ctx.Message.Parts
                  .OfType<TextPart>().FirstOrDefault()?.Text
               ?? "world";
    await ctx.ReplyAsync($"Hello, {name}.", ct);
});

await app.RunAsync();
LICENSING

Licence terms that make deployment easy.

Per developer

Licences are per named developer. Build systems — CI servers, build agents — are free and unlimited.

Royalty-free redistribution

Built assemblies inside your own product carry no per-copy, per-seat, per-server, per-core, or per-end-user fee.

Perpetual

Versions released while your maintenance was current keep building indefinitely, whether or not you renew.

No runtime mechanism

The licence check runs at build time only. There is no licence server, no activation, or network call that can interfere with a running agent.

Source tier available

A source licence tier is available for customers whose procurement requires source review or escrow.

Digital delivery

Everything you need to get up and running quickly: packages, licence file, setup instructions, and a SHA-256 manifest.

PROVENANCE

Provenance and trust.

Assemblies are Authenticode-signed, builds are deterministic, and third-party components are disclosed. PDBs ship inside the packages, so stack traces carry file names and line numbers with no symbol server.

Authenticode-signedSecured by a Microsoft issued certificate
Deterministic buildsReproducible from source
PDBs in-packageNo symbol server required
Third-party disclosureAll components listed
TESTED AGAINST SPECIFICATIONS

Scoped conformance.

Developed and tested for protocol conformance with a published “Verified against” list for each release.

GETTING STARTED

Get set up in minutes.

Included samples let you see and debug working applications to help shorten the learning curve.

01

Extract the files

The installation file contains the packages, your licence file, setup instructions, and a SHA-256 manifest.

02

Point a package source at it

Add the extracted folder as a local NuGet source in your nuget.config or IDE settings.

03

Reference the packages

Add DelegateQ.A2A and whichever host packages you need — AspNetCore, Sqlite, Grpc — to your project.

FAQ

Common questions.

AGENT2AGENT FOR .NET

Request an evaluation of DelegateQ 2.1.0.

Click the button below to request an evaluation.

Request an evaluationPurchase