6 kopieerklare JSON-templates · A2A v1.0

A2A Agent Card-voorbeelden

Blader door praktische A2A v1.0-templates, begrijp hun ontwerpbeslissingen, en pas dan elk voorbeeld aan voor je eigen agent.

Publieke agent-discovery

Gebruik deze voorbeelden om de JSON vorm te geven die een andere A2A-client ophaalt voordat deze beslist of jouw agent een taak kan voltooien.

Marketplace-indiening

Pas provider, skills, tags, capabilities, en beveiligingsmetadata aan zodat beoordelaars begrijpen wat de agent doet en wie deze beheert.

Interne agentcatalogi

Standaardiseer endpoint-, authenticatie-, en skillbeschrijvingen over interne agents voordat teams ze integreren in workflows.

JSON-templates

Voorbeeld-Agent Cards voor support-, boekings-, winkel-, codeer-, onderzoeks-, en workflow-agents.

Valideer een template
Filter

Klantenondersteuningsagent

Behandelt productvragen, orderopzoekingen, retouren, en escalatie-overdrachten.

Waarom het zo is gebouwd

  • OAuth 2.0 client-credentials beschermen orderdata: de Agent Card declareert de token-URL en scope zodat clients kunnen authenticeren zonder out-of-band documentatie.
  • streaming en pushNotifications zijn beide true omdat supportgesprekken lang duren en oplossingsupdates asynchroon binnenkomen.
  • De enkele skill is beperkt tot één taakgrens (classificeren, oplossen, escaleren) in plaats van een vage "klanten helpen"-beschrijving, zodat routers hem nauwkeurig kunnen matchen.
customer-support.json
{
  "name": "Klantenondersteuningsagent",
  "description": "Beantwoordt vragen over klantenondersteuning, haalt de bestelcontext op en escaleert onopgeloste problemen naar een menselijk team.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/customer-support",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Voorbeeld Inc.",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": true,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "resolve-customer-support-request",
      "name": "Klantondersteuningsverzoek oplossen",
      "description": "Classificeert een verzoek om klantenondersteuning, verzamelt de benodigde context, stelt een oplossing voor en escaleert wanneer het vertrouwen laag is.",
      "tags": [
        "support",
        "orders",
        "returns"
      ],
      "examples": [
        "Help mij mijn bestelling terug te sturen."
      ]
    }
  ],
  "securitySchemes": {
    "oauth2": {
      "oauth2SecurityScheme": {
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.example.com/a2a/customer-support/oauth/token",
            "scopes": {
              "agent.invoke": "Invoke agent skills"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "agent.invoke"
      ]
    }
  ]
}

Boekingsagent

Vindt beschikbare afspraakmomenten en bereidt boekingsbevestigingen voor.

Waarom het zo is gebouwd

  • Een API-sleutel in een header is hier voldoende: boekingen zijn tenant-scoped maar dragen niet het probleem van gedelegeerde-gebruikerstoestemming dat OAuth oplost.
  • defaultOutputModes is alleen application/json, wat aangeeft dat aanroepers gestructureerde reserveringsvoorstellen krijgen in plaats van proza.
  • pushNotifications is true zodat de agent een reservering kan bevestigen nadat de slot-behoudende backend is afgerond, zonder dat de client hoeft te pollen.
booking.json
{
  "name": "Boekingsagent",
  "description": "Zoekt beschikbaarheid, stelt boekingsopties voor en bereidt afspraakreserveringen voor ter goedkeuring.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/booking",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Voorbeeld Inc.",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": false,
    "pushNotifications": true,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "find-and-prepare-booking",
      "name": "Boeking zoeken en voorbereiden",
      "description": "Controleert de beschikbaarheid van middelen, vergelijkt boekingsperioden en retourneert een gestructureerd reserveringsvoorstel.",
      "tags": [
        "booking",
        "calendar",
        "availability"
      ],
      "examples": [
        "Maak morgenmiddag een afspraak van 30 minuten."
      ]
    }
  ],
  "securitySchemes": {
    "apiKey": {
      "apiKeySecurityScheme": {
        "location": "header",
        "name": "X-API-Key"
      }
    }
  },
  "security": [
    {
      "apiKey": []
    }
  ]
}

Winkelagent

Vergelijkt producten, beschikbaarheid, prijzen, en aankoopbeperkingen.

Waarom het zo is gebouwd

  • Gerangschikte aanbevelingen worden gestreamd naarmate ze worden berekend, dus streaming is true terwijl pushNotifications false blijft — er gebeurt niets meer nadat het antwoord is voltooid.
  • De skillbeschrijving belooft afwegingen en redenering terug te geven, wat orchestrators vertelt dat deze agent rangschikkingen uitlegt in plaats van alleen producten op te sommen.
  • OAuth-scopes bewaken aankoopgerelateerde data; een publieke winkeldemo zou beveiliging volledig kunnen laten vallen en toch een geldige Agent Card blijven.
shopping.json
{
  "name": "Winkelagent",
  "description": "Vergelijkt producten met gebruikersbeperkingen en retourneert gerangschikte aankoopopties met afwegingen.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/shopping",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Voorbeeld Inc.",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "compare-shopping-options",
      "name": "Vergelijk winkelopties",
      "description": "Evalueert kandidaat-producten, filtert op beperkingen en retourneert gerangschikte aanbevelingen met onderbouwing.",
      "tags": [
        "shopping",
        "commerce",
        "recommendations"
      ],
      "examples": [
        "Vergelijk lichtgewicht laptops onder €1200."
      ]
    }
  ],
  "securitySchemes": {
    "oauth2": {
      "oauth2SecurityScheme": {
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.example.com/a2a/shopping/oauth/token",
            "scopes": {
              "agent.invoke": "Invoke agent skills"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "agent.invoke"
      ]
    }
  ]
}

Codeeragent

Beoordeelt codetaken, stelt patches voor, en legt implementatiebeslissingen uit.

Waarom het zo is gebouwd

  • extendedAgentCard is true: de publieke Agent Card vermeldt een generieke "codewijziging implementeren"-skill, terwijl repository-specifieke skills alleen worden onthuld aan geauthenticeerde clients via GetExtendedAgentCard.
  • Zowel text/plain- als application/json-outputs worden gedeclareerd omdat de agent door mensen leesbare uitleg retourneert samen met machinaal toepasbare patches.
  • Streaming is belangrijk voor lange compileer-en-testlussen; clients zien tussentijdse voortgang in plaats van een stille, meerdere minuten durende aanroep.
coding.json
{
  "name": "Codeeragent",
  "description": "Helpt bij software-engineeringtaken door code te analyseren, wijzigingen voor te stellen en implementatienotities terug te sturen.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/coding",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Voorbeeld Inc.",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": true,
    "extendedAgentCard": true
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "implement-code-change",
      "name": "Codewijziging doorvoeren",
      "description": "Leest een coderingsverzoek, inspecteert relevante bestanden, retourneert een patchvoorstel en vat de verificatiestappen samen.",
      "tags": [
        "coding",
        "review",
        "patches"
      ],
      "examples": [
        "Voeg paginering toe aan de gebruikers-API."
      ]
    }
  ],
  "securitySchemes": {
    "apiKey": {
      "apiKeySecurityScheme": {
        "location": "header",
        "name": "X-API-Key"
      }
    }
  },
  "security": [
    {
      "apiKey": []
    }
  ]
}

Onderzoeksagent

Verzamelt bronnen, extraheert bewijs, en retourneert gestructureerde onderzoeksnotities.

Waarom het zo is gebouwd

  • Helemaal geen securitySchemes: het endpoint is opzettelijk openbaar, en het weglaten van het veld is de juiste manier om dat te zeggen — een lege schemamap zou dubbelzinnig zijn.
  • Input is alleen text/plain, omdat onderzoeksbriefings beginnen met natuurlijke-taalvragen; gestructureerde output arriveert als application/json-notities.
  • Dit is de minimaal nuttige v1.0-Agent Card: identiteit, één interface, capabilities, modi, en één goed getagde skill.
research.json
{
  "name": "Onderzoeksagent",
  "description": "Verzamelt bronmateriaal, extraheert bewijsmateriaal en produceert gestructureerde onderzoeksnotities met citaten.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/research",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Voorbeeld Inc.",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "prepare-research-brief",
      "name": "Onderzoeksopdracht voorbereiden",
      "description": "Doorzoekt goedgekeurde bronnen, extraheert claims en bewijsmateriaal en retourneert een beknopte onderzoeksopdracht.",
      "tags": [
        "research",
        "evidence",
        "citations"
      ],
      "examples": [
        "Bereid een geciteerde briefing voor over het beleid inzake hernieuwbare energie."
      ]
    }
  ]
}

Interne workflow-agent

Coördineert goedkeuringen, statuscontroles, en back-office workflow-updates.

Waarom het zo is gebouwd

  • application/json is de enige invoer- en uitvoermodus: deze agent wordt aangeroepen door andere systemen, nooit door mensen die proza typen.
  • OAuth 2.0 plus extendedAgentCard past bij bedrijfsaudits — beveiligingsteams kunnen de authenticatie-eisen openbaar zien terwijl gevoelige workflow-skills achter authenticatie blijven.
  • pushNotifications is essentieel omdat goedkeuringsketens uren of dagen duren; webhooks vervangen polling voor statuswijzigingen.
internal-workflow.json
{
  "name": "Interne workflow-agent",
  "description": "Coördineert interne goedkeuringen, controleert de systeemstatus en bereidt workflow-updates voor voor operationele teams.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/workflow",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Voorbeeld Inc.",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": false,
    "pushNotifications": true,
    "extendedAgentCard": true
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "coordinate-internal-workflow",
      "name": "Coördineren van de interne workflow",
      "description": "Ontvangt de workflow-intentie, controleert beleidsvereisten, verzamelt goedkeuringen en rapporteert de eindstatus.",
      "tags": [
        "workflow",
        "operations",
        "approval"
      ],
      "examples": [
        "Vraag goedkeuring aan om de salarisupdate te implementeren."
      ]
    }
  ],
  "securitySchemes": {
    "oauth2": {
      "oauth2SecurityScheme": {
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.example.com/a2a/workflow/oauth/token",
            "scopes": {
              "agent.invoke": "Invoke agent skills"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "agent.invoke"
      ]
    }
  ]
}

Pas aan met vertrouwen

Hoe je een Agent Card-voorbeeld aanpast

Elk Agent Card-voorbeeld is opzettelijk compleet genoeg om te kopiëren, maar de Agent Card mag niet ongewijzigd worden gepubliceerd. Behandel het als een veldkaart voor je eigen A2A-server: vervang identiteit, endpoint, provider, authenticatie, capabilities, modi, en skilldetails door productiewaarden.

De sterkste Agent Cards leggen de taakgrens van de agent uit in zowel eenvoudige taal als machineleesbare metadata. Een client zou moeten kunnen bepalen wat de agent kan doen, wat niet, welke URL aan te roepen, en of credentials vereist zijn.

Voordat je publiceert

Vervang elke example.com URL door je geïmplementeerde A2A-endpoint en providerwebsite.

Herschrijf de skillnaam, beschrijving, tags (verplicht in v1.0), en voorbeelden voor de daadwerkelijke taakgrens.

Stel provider.organization in en verhoog de top-level version telkens wanneer de Agent Card verandert.

Verwijder authenticatievelden alleen wanneer het endpoint opzettelijk openbaar is.

Houd defaultInputModes en defaultOutputModes in lijn met wat je server daadwerkelijk accepteert en retourneert.

Valideer de uiteindelijke JSON en publiceer deze op /.well-known/agent-card.json op je servicedomein.

Klaar om te bouwen

Begin met een voorbeeld en maak het vervolgens tot het jouwe.

Open elk patroon in de Agent Card Generator, bekijk de JSON, en valideer deze voordat je publiceert.