Quickstart für Agents
Dieser Quickstart führt einen externen Agent durch den ersten erfolgreichen Weg: registrieren, Organisation bootstrappen, Owner legitimieren, Freischaltung abwarten und eine erste Capability ausführen.
Für Feldregeln, vollständige Bodies und Recovery-Pfade nutze danach die Endpunkt-Referenz und die Fehlerbehebung.
-
Lies Discovery.
Die Gateway-Basisadresse ist:
https://connect.webrichtung.dePrüfe zuerst, dass der Gateway antwortet, und lies danach die öffentlichen Discovery-Ressourcen:
GET https://connect.webrichtung.de/healthGET https://connect.webrichtung.de/llms.txtGET https://connect.webrichtung.de/mcp/manifestGET https://connect.webrichtung.de/capabilitiesFür echte Arbeit nutzt du später die Meta-Tools
search_capabilities,describe,dry_runundinvoke. -
Registriere die Agent App.
POST /registerlegt die Agent App an und gibt einen Bootstrap-Key zurück. Die Owner-E-Mail ist der Verantwortungsanker des Menschen und muss im nächsten Schritt identisch bleiben.POST https://connect.webrichtung.de/registerContent-Type: application/jsonIdempotency-Key: idem-register-20260704-0001{"owner_email": "owner@example.com","agent_email": "agent@example.com","app": {"slug": "acme-ops-agent","name": "Acme Ops Agent","description": "Operativer Agent für die Musterorganisation.","contact_email": "ops@example.com","homepage_url": "https://example.com/agent"}}Nutze für jede Mutation eine Idempotency-Key nach der Idempotency-Regel.
-
Bootstrappe die Organisation.
POST /organizationsverwendet den Bootstrap-Key und liefert den Installation-Key für den weiteren Erstpfad. Gleichzeitig wird der Owner-Code ausgelöst; wennagent_emailgesetzt ist, kommt zusätzlich ein Agent-Mail-Code.POST https://connect.webrichtung.de/organizationsContent-Type: application/jsonAuthorization: Bearer <bootstrap-api-key>Idempotency-Key: idem-bootstrap-20260704-0001{"owner_email": "owner@example.com","agent_email": "agent@example.com","organization": {"name": "Musterfirma GmbH"}}Merksatz: Der Bootstrap-Key reicht nur bis
/organizations. Danach ist der Installation-Key aus dieser Antwort dein Arbeits-Key. -
Löse die erforderlichen OTPs ein.
Der menschliche Owner prüft den Vorgang und gibt den Owner-Code nur bewusst für dieses Onboarding weiter. Der Agent reicht ihn mit dem Installation-Key ein:
POST https://connect.webrichtung.de/owner-otp/claimContent-Type: application/jsonAuthorization: Bearer <installation-api-key>Idempotency-Key: idem-owner-claim-20260704-0001{"otp": "<owner-otp>"}Wenn
agent_emailgesetzt ist, verifiziere zusätzlich die Agent-Mailbox. Suche in dieser Mailbox nach dem BetreffbestandteilRef: <correlation_id>aus der Bootstrap-Antwort und lies den Code aus der eigenständigen ZeileCode: <OTP>.POST https://connect.webrichtung.de/agent-otp/verifyContent-Type: application/jsonAuthorization: Bearer <installation-api-key>Idempotency-Key: idem-agent-verify-20260704-0001{"otp": "<agent-mail-otp>"}Owner-Code und Agent-Mail-Code dürfen in beliebiger Reihenfolge eingelöst werden. Die einfachste Reihenfolge ist: alle erforderlichen OTPs abschließen, dann Freischaltung pollen.
-
Warte auf die Freischaltung.
Nach Owner-Claim und optionaler Agent-Mail-Verifikation prüft webRichtung den Vorgang. Operative Arbeit startet erst, wenn
installation.operator_approval_statusden Wertapprovedhat.GET https://connect.webrichtung.de/org/currentAuthorization: Bearer <installation-api-key>Polling-Regel: erster Poll nach 30 Sekunden, danach höchstens einmal pro 60 Sekunden, maximal 15 Minuten. Bleibt der Status
pending, stoppe den Agent-Flow und übergib an einen Menschen.HTTP
412 precondition_failedvon/org/currentvor erfolgreichem Owner-Claim oder vor erforderlicher Agent-Mail-Verifikation ist erwartetes Verhalten. Die genaue Reaktion steht in der Fehlertaxonomie. -
Führe die erste bezahlte Capability aus.
Nach
approvedfolgt die erste bezahlte Aktion. Dieses Beispiel nutztdocuments.document.upload: erst Contract lesen, dann Kostenschätzung erzeugen, Budget-Guard prüfen und erst danach mit Idempotency-Key ausführen.POST https://connect.webrichtung.de/mcp/describeContent-Type: application/jsonAuthorization: Bearer <installation-api-key>{"id": "documents.document.upload"}Bereite die Parameter ausschließlich aus
describe.input_schemavor. Für das Beispiel reicht eine kleine Textdatei:{"file_name": "note.txt","mime_type": "text/plain","content_base64": "SGVsbG8gd2VicmljaHR1bmc="}POST https://connect.webrichtung.de/mcp/dry_runContent-Type: application/jsonAuthorization: Bearer <installation-api-key>{"id": "documents.document.upload","params": {"file_name": "note.txt","mime_type": "text/plain","content_base64": "SGVsbG8gd2VicmljaHR1bmc="}}documents.document.uploadhat aktuelldescribe.dry_run: "supported", nicht"required". In diesem Ablauf führst dudry_runtrotzdem aus, weil der Budget-Guardestimated_cost.amount_maxals Zahl in Credits braucht.POST https://connect.webrichtung.de/mcp/invokeContent-Type: application/jsonAuthorization: Bearer <installation-api-key>{"id": "wallet.agent_budget.guard.check","params": {"capability_id": "documents.document.upload","estimated_cost_credits": 0.09,"window": "task"}}Fahre nur fort, wenn die normale Invoke-Hülle
status: "succeeded"undresult.allowed: trueenthält.{"interface_version": "1.0","status": "succeeded","capability_id": "wallet.agent_budget.guard.check","resolved_version": "1.0.0","audit_id": "audit_123","result": {"allowed": true,"organization_id": "org_123","wallet_balance_credits": "100.00","estimated_cost_credits": 0.09}}POST https://connect.webrichtung.de/mcp/invokeContent-Type: application/jsonAuthorization: Bearer <installation-api-key>{"id": "documents.document.upload","params": {"file_name": "note.txt","mime_type": "text/plain","content_base64": "SGVsbG8gd2VicmljaHR1bmc="},"idempotency_key": "idem-doc-upload-20260704-0001"}Ein erfolgreicher Upload hat
status: "succeeded"in der Invoke-Hülle. Das Capability-Ergebnis liegt unterresult; die genaue Output-Form bleibt derdescribe.output_schema-Contract.