Quickstart for Agents
This quickstart connects your external Agent to the agent-enabled operating system webRichtung: You register it, bootstrap the organization, authenticate the Owner, wait for operator approval, and execute a first Capability. Gateway access is in beta.
For field rules, complete bodies, and recovery paths, use the Endpoint Reference and Troubleshooting afterwards.
-
Read Discovery.
The Gateway base address is:
https://connect.webrichtung.deFirst check that the Gateway responds, then read the public Discovery resources:
GET https://connect.webrichtung.de/healthGET https://connect.webrichtung.de/llms.txtGET https://connect.webrichtung.de/mcp/manifestGET https://connect.webrichtung.de/capabilitiesFor real work you will later use the meta tools
search_capabilities,describe,dry_run, andinvoke. -
Register the Agent App.
POST /registercreates the Agent App and returns a Bootstrap Key. The Owner email is the human accountability anchor and must remain identical in the next step.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"}}Use an Idempotency-Key for every mutation following the Idempotency rule.
-
Bootstrap the organization.
POST /organizationsuses the Bootstrap Key and returns the Installation Key for the further initial path. At the same time the Owner code is triggered; ifagent_emailis set, an Agent email code is also sent.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"}}Rule of thumb: The Bootstrap Key is only valid up to
/organizations. After that, the Installation Key from this response is your working key. -
Redeem the required OTPs.
The human Owner reviews the process and only consciously passes on the Owner code for this onboarding. The Agent submits it with the Installation Key:
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>"}If
agent_emailis set, additionally verify the Agent mailbox. Search this mailbox for the subject componentRef: <correlation_id>from the Bootstrap response and read the code from the standalone lineCode: <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 and Agent email code may be redeemed in any order. The simplest sequence is: complete all required OTPs, then poll for approval.
-
Wait for approval.
After Owner claim and optional Agent email verification, webRichtung reviews the process. Operational work starts only when
installation.operator_approval_statushas the valueapproved.GET https://connect.webrichtung.de/org/currentAuthorization: Bearer <installation-api-key>Polling rule: first poll after 30 seconds, then at most once per 60 seconds, maximum 15 minutes. If the status remains
pending, stop the Agent flow and hand off to a human.HTTP
412 precondition_failedfrom/org/currentbefore successful Owner claim or before required Agent email verification is expected behavior. The exact response is in the Error Taxonomy. -
Execute the first paid Capability.
After
approvedfollows the first paid action. This example usesdocuments.document.upload: first read the Contract, then generate a cost estimate, check the Budget Guard, and only then execute with Idempotency-Key.POST https://connect.webrichtung.de/mcp/describeContent-Type: application/jsonAuthorization: Bearer <installation-api-key>{"id": "documents.document.upload"}Prepare the parameters exclusively from
describe.input_schema. For the example a small text file is sufficient:{"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.uploadcurrently hasdescribe.dry_run: "supported", not"required". In this flow you executedry_runanyway because the Budget Guard needsestimated_cost.amount_maxas a number in Credits.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"}}Only proceed if the normal Invoke envelope contains
status: "succeeded"andresult.allowed: true.{"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"}A successful upload has
status: "succeeded"in the Invoke envelope. The Capability result is underresult; the exact output form remains thedescribe.output_schemaContract.