# Miro Emulator (service host) Create an instance: curl -s -X POST https://miro.emulators.dev/_emulate/instances # Hosted deployments create instances lazily when the returned URL is first used. The instance URL is a capability: anyone who has it can read and modify the instance, so save the returned URLs. Never store real secrets in an emulator. # The server generates an unguessable name. An optional {"instance":""} body adds a readable prefix. Then use the returned providerBaseUrl / controlBaseUrl. Example below uses a sample instance. # Miro Emulator Stateful Miro MCP emulator: the OAuth 2.1 authorization server at the origin root (Dynamic Client Registration, S256 PKCE, HS256 OIDC ID tokens signed with the client secret and, like real Miro, without the nonce claim) plus the remote MCP server at / with read-only board tools over seeded state. Provider base URL: https://miro.your-instance.emulators.dev Control base URL: https://miro.your-instance.emulators.dev/_emulate Supported surfaces: - Miro MCP OAuth and OIDC: partial at / - Miro MCP server: partial at / - OAuth consent page: supported at /authorize Control endpoints: - https://miro.your-instance.emulators.dev/_emulate/manifest - https://miro.your-instance.emulators.dev/_emulate/coverage - https://miro.your-instance.emulators.dev/_emulate/connections - https://miro.your-instance.emulators.dev/_emulate/state - https://miro.your-instance.emulators.dev/_emulate/ledger - https://miro.your-instance.emulators.dev/_emulate/faults - POST https://miro.your-instance.emulators.dev/_emulate/credentials - POST https://miro.your-instance.emulators.dev/_emulate/seed - POST https://miro.your-instance.emulators.dev/_emulate/reset Fault injection: Arm a one-shot provider failure with a glob pathPattern, then inspect /ledger for faulted: true. curl -s -X POST https://miro.your-instance.emulators.dev/_emulate/faults \ -H "content-type: application/json" \ -d '{"match":{"method":"GET","pathPattern":"/v1/*"},"response":{"status":503,"body":{"error":"temporary"}}}' Connect: ## MCP endpoint https://miro.your-instance.emulators.dev/ ## Register a client curl -X POST https://miro.your-instance.emulators.dev/register \ -H 'content-type: application/json' \ -d '{"client_name":"My app","redirect_uris":["http://localhost:3000/callback"]}' ## Base URL (env) MIRO_BASE_URL=https://miro.your-instance.emulators.dev ## Create a credential curl -s -X POST https://miro.your-instance.emulators.dev/_emulate/credentials \ -H "content-type: application/json" \ -d '{"type":"dynamic-client-registration"}' ## Inspect requests curl -s https://miro.your-instance.emulators.dev/_emulate/ledger