forge
Clone forge-starter
1 · before Pick a scenario or askThe hops are listed, grey. The state on the right is what the run starts from.
2 · running Watch causalityEach hop lights up; state changes as it does; events arrive as they are recorded.
3 · done Summary and scrubberHops, state changed, events, simulated time. Drag the scrubber to any moment.
3′ · failed The error, explainedThe run stops at the red hop. Reason, trace, and fixes you can apply — then run again.
youTrack that I owe Dana the vendor shortlist by Wednesday.consumer app tool: track

An MCP tool call, end to end

idle

An end user of a forge-hosted app asks Claude to track something. Watch the call cross the edge, the sidecar, the consumer app, the policy engine and Postgres — and come back.

01edge · middleware.ts:35traceparent minted · x-trace-id echoeddorinda-api
02sidecar · mcp-routes.ts:458-517POST /mcp · bearer verified (RFC 8707 audience) · rate limit okforge data-plane
03sidecar · mcp-routes.ts:742-764tools/call → fetch(FORGE_APP_CALLBACK_URL + /api/mcp/handler)forge → app
04app · handler/route.ts:105-156service token ok · principal = body.user.id · owner context setdorinda-api
05app · dispatch.ts:2501-2566access gate (subscription) ✓ · role gate C31 ✓dorinda-api
06app → forge · governance.ts:182 → authz-routes.ts:75C29: POST /authorize → allow (low-risk default)forge
07app · create-delegation.ts:83-207createDelegation → INSERT delegations · INSERT taskspostgres
08app → forge · search-index.ts:111POST /index (C19) with ACL fieldsforge
09app → forge · audit.ts:108 → app-events-routes.ts:39POST /app-events mcp.tool_call {gate:allow, outcome:ok, duration_ms:214}forge
10sidecar · mcp-routes.ts:811-861CallToolResult passed through verbatim · _meta.traceparent · forge records its own mcp.tool_callforge → Claude