{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_gufsgs4knq79","handle":"a2a-agent-sdk","url":"https://wellknown.network/agents/a2a-agent-sdk","links":{"self":"https://wellknown.network/agents/a2a-agent-sdk/record.json","html":"https://wellknown.network/agents/a2a-agent-sdk","markdown":"https://wellknown.network/agents/a2a-agent-sdk/record.md","api":"https://wellknown.network/api/v1/agents/a2a-agent-sdk","status":"https://wellknown.network/api/v1/agents/a2a-agent-sdk/status","claim":"https://wellknown.network/agents/a2a-agent-sdk/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/a2a-agent-sdk/claim.json","badge":"https://wellknown.network/agents/a2a-agent-sdk/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air::agent:a2a-agent-sdk","type":"application/a2a-agent-card+json"},"kind":"agent","declared":{"name":"a2a-agent-sdk","summary":"Framework-agnostic SDK for building A2A/kagent-compliant agent runners.","description":"# a2a-agent-sdk\n\nA framework-agnostic SDK for building [A2A](https://github.com/a2aproject/A2A)-compliant\nagent runners that work with [kagent](https://kagent.dev)'s BYO (bring-your-own) agent\npattern. Plug in **any** agent implementation — LangGraph, a plain function, a\ndifferent framework entirely — and get a fully working A2A service for free:\nagent-card discovery, `message/send`, `message/stream`, health, and API-key auth.\n\nThe point of this SDK: your agent implementation can change completely, but the\ninput your callers send and the output they get back never do.\n\n## Install\n\n```bash\npip install -e /path/to/a2a-agent-sdk\n```\n\n(Not yet published to a package index — install from a local checkout or a git URL.)\n\n## Quickstart\n\nImplement one method, `invoke`, that takes the conversation so far and returns text:\n\n```python\nfrom a2a_agent_sdk import A2ARunner, RunnerConfig, Message\n\nclass MyAgent:\n    def invoke(self, messages: list[Message]) -> str:\n        last_user_text = messages[-1].content\n        return f\"You said: {last_user_text}\"\n\nrunner = A2ARunner(\n    agent=MyAgent(),\n    config=RunnerConfig(name=\"My Agent\", description=\"Echoes the user.\"),\n)\napp = runner.app  # a plain FastAPI instance\n```\n\nRun it:\n\n```bash\nuvicorn app:app --host 0.0.0.0 --port 8080\n```\n\nTry it:\n\n```bash\ncurl -X POST http://localhost:8080/ \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":\"1\",\"method\":\"message/send\",\"params\":{\"message\":{\"parts\":[{\"kind\":\"text\",\"text\":\"hello\"}]}}}'\n```\n\nSee `examples/function_agent/` for the complete runnable version of this example.\n\n## Adding real streaming\n\nIf your agent can produce text incrementally, implement `astream` too and\n`message/stream` will emit it token-by-token instead of as one chunk:\n\n```python\nfrom typing import AsyncIterator\n\nclass MyStreamingAgent:\n    def invoke(self, messages: list[Message]) -> str:\n        return \"hello there friend \"\n\n    async def astream(self, messages: list[Message]) -> AsyncIterator[str]…","publisher":null,"homepage":null,"repository":null,"version":"0.1.0","license":null,"protocols":["a2a"],"tags":["a2a"],"pricing":null,"endpoints":[{"url":"pypi:a2a-agent-sdk","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","summary":"pypi","version":"pypi","description":"pypi"}},"derived":{"capabilities":[{"slug":"dev.version-control","name":"Version Control","confidence":0.745,"provenance":"derived"}],"categories":["dev"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"a2a-agent-sdk","registry":"pypi","observedAt":"2026-09-09T08:22:14.292Z","publishedAt":"2026-08-19T07:21:08.911733Z","latestVersion":"0.1.0"}},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"a2a-agent-sdk","url":"https://pypi.org/project/a2a-agent-sdk/","firstSeenAt":"2026-09-09T08:20:01.662Z","fetchedAt":"2026-09-09T08:20:01.662Z","normalizedAt":"2026-09-09T08:20:01.662Z"}]},"firstSeenAt":"2026-09-09T08:20:01.662Z","updatedAt":"2026-09-09T08:22:14.292Z"}