# Rivier > Rivier runs a business's inbox, contacts, campaigns, shop, bookings, books, content, files, memory and agents. Every action in the dashboard is an API operation with the same name on REST, GraphQL, MCP, the SDK and the CLI. ## Connect - REST: https://api.rivier.ai with a project key (Authorization: Bearer ). Contract: https://api.rivier.ai/v1/openapi.json - MCP: https://api.rivier.ai/mcp with the same key. Start with rivier_api_operations (find an operation by words), then rivier_api_read or rivier_api_act. Operations with their own tool are named in the result. - CLI: rivier [--flag value] [--body json]; rivier ops [text] lists them. - SDK: @rivier/sdk, createClient({ apiKey }); the method path is the CLI words. ## Keys A read key holds :read for every module; a write key adds :write for chosen modules. A key belongs to one project. Writes accept an Idempotency-Key header (MCP: idempotencyKey) so a retry does nothing twice. Decisions the product keeps for a person (approvals, sends that need one, destructive removals, the admin level) are refused to agents with the reason. ## Modules accounting, agents, analytics, bookings, campaigns, compliance, connectors, contacts, content, domains, files, forms, hosting, inbox, keys, language, maps, memory, models, search, shop, social, usage, voice, workspace ## Errors Every refusal has an error code and a message; validation errors list details.issues as path and message. A 429 carries retry_after_seconds. Through MCP a failed call answers { ok: false, code, retryable, param, error, hint, next }. Branch on code (unknown_operation, wrong_mode, reserved_for_person, no_credential, missing_params, invalid_input, unauthenticated, insufficient_scope, not_found, conflict, rate_limited, server_error, request_failed); retry only when retryable is true. ## For agents - rivier_key_scopes says what the key may do. rivier_overview and rivier_contact_brief answer common questions in one call. - MCP resources: rivier://guide (this text), rivier://scopes (the key), rivier://operations (modules and counts). MCP prompts: weekly_digest, contact_follow_up, draft_campaign_brief.