MCP Server
Access your Doow workspace from Claude, Codex, Cursor, and other MCP clients.
Doow's MCP server gives compatible clients a controlled way to work with your workspace. It exposes the tools your account is allowed to use across apps, contracts, licenses, cards, expenses, team, and integrations, while keeping Doow's existing role and organization boundaries in place.
How it works
Your MCP client authenticates with Doow through a browser redirect, then our server applies your organization and role boundaries before allowing approved tools to access your workspace.
- Add the server — Register
https://mcp.doow.coin your MCP client - Authenticate — Sign in with your Doow account when prompted
- Use tools — Your agent can now query and manage your workspace
The MCP server uses OAuth with PKCE to authenticate your agent and issue a token scoped to your organization and permissions. Every tool call is authorized against your Doow role—Admins see all resources, while scoped roles see only their assigned apps, departments, or integrations.
Two paths to MCP
| Path | When to use | Endpoint | Auth |
|---|---|---|---|
| Standard | User already has a Doow account | /mcp | OAuth with existing account |
| Headless | User doesn't have a Doow account yet | /mcp/signup, /mcp/onboarding | Flow capability, then MCP OAuth |
-
Standard path — User adds Doow to their MCP client, signs in with their existing account, and uses the 85 workspace tools immediately.
-
Headless path — Agent guides a new user through account creation and workspace setup. The agent calls signup and onboarding tools while the user handles OAuth, password, and identity verification in browser handoffs. Once complete, the agent can use the standard workspace tools.
Most users take the standard path. Headless is for AI agents helping new users who don't have Doow accounts yet — the agent initiates the flow, opens browser handoffs for sensitive steps (OAuth, password, identity verification), and guides the user conversationally through each step.
What you can do
With the 85 workspace tools, you can query your SaaS stack, manage cards, update team members, and generate reports:
- “List all apps with contracts renewing this quarter”
- “Show me our Slack license usage”
- “What did we spend on engineering tools last month?”
- “Freeze the corporate travel card”
- “Invite sarah@company.com as an App Admin for Notion”
- “Generate a spend report for Q3 and email it to finance@company.com”
With the 20 headless tools, agents can guide new users through signup and onboarding:
- “Help me sign up for Doow”
- “Connect my Okta directory”
- “Link QuickBooks and verify my identity”
Endpoints
| Use | URL |
|---|---|
| Add to an MCP client | https://mcp.doow.co |
| MCP transport | POST https://mcp.doow.co/mcp |
| Headless signup | POST https://mcp.doow.co/mcp/signup |
| Headless onboarding | POST https://mcp.doow.co/mcp/onboarding |
| OAuth issuer and resource | https://mcp.doow.co |
| Health | GET https://mcp.doow.co/mcp/health |
| Readiness | GET https://mcp.doow.co/mcp/ready |
Tools
The MCP server exposes 105 tools: 85 workspace tools for managing your account, plus 20 headless tools for agent-directed signup and onboarding.
Headless tools (20)
For agents guiding new users through account creation. See Headless flows for details.
| Domain | Tools | Endpoint | Examples |
|---|---|---|---|
| Signup | 6 | /mcp/signup | signup_begin, signup_status, signup_save_profile, signup_open_handoff, signup_join_request, signup_claim_tokens |
| Onboarding | 14 | /mcp/onboarding | onboarding_status, onboarding_next_step, onboarding_start_connection, onboarding_connection_status, onboarding_workspace_draft, onboarding_kyc_status, onboarding_kyc_requirements, onboarding_start_kyc, onboarding_stage_advance, onboarding_complete, onboarding_plan_status, onboarding_plan_options, onboarding_start_plan_selection, onboarding_contact_sales |
Workspace tools (85)
For managing an existing Doow account via the standard /mcp endpoint.
| Domain | Tools | Examples |
|---|---|---|
| Apps | 8 | doow_apps_list, doow_apps_get, doow_apps_metrics, doow_apps_create, doow_apps_deactivate, doow_apps_update, doow_apps_alternatives, doow_apps_compare |
| Contracts | 14 | doow_contracts_list, doow_contracts_get, doow_contracts_metrics, doow_contracts_details, doow_contracts_usage_metrics, doow_contracts_renewals_metrics, doow_contracts_renewal_summary, doow_contracts_create, doow_contracts_delete, doow_contracts_update, doow_contracts_credit_vintage, doow_contracts_spend_pool, doow_contracts_report, doow_contracts_report_email |
| Licenses | 13 | doow_licenses_list, doow_licenses_get, doow_licenses_create, doow_licenses_delete, doow_licenses_update, doow_licenses_add_to_contract, doow_licenses_assign_user, doow_licenses_report, doow_licenses_report_email, doow_licenses_usage, doow_licenses_metrics, doow_licenses_unassigned_users, doow_licenses_unassigned_expenses |
| Cards | 15 | doow_cards_list, doow_cards_get, doow_cards_create, doow_cards_fund, doow_cards_org_fund, doow_cards_assign_owners, doow_cards_withdraw, doow_cards_freeze, doow_cards_unfreeze, doow_cards_update, doow_cards_delete, doow_cards_metrics, doow_cards_balance, doow_cards_app_metrics, doow_cards_report |
| Team | 10 | doow_team_list, doow_team_get, doow_team_invite, doow_team_deactivate, doow_team_reactivate, doow_team_update, doow_team_update_roles, doow_team_remove_role, doow_team_delete, doow_team_cancel_invite |
| Expenses | 11 | doow_expenses_list, doow_expenses_create, doow_expenses_get, doow_expenses_update, doow_expenses_categorize, doow_expenses_delete, doow_expenses_metrics, doow_expenses_report, doow_expenses_report_email, doow_expenses_validate_csv, doow_expenses_import_csv |
| Chat | 4 | doow_chat_sessions_list, doow_chat_sessions_get, doow_chat, doow_chat_action |
| Dashboard | 3 | doow_dashboard_overview, doow_dashboard_spend, doow_dashboard_renewals |
| Insights | 3 | doow_insights_list, doow_insights_needs_attention, doow_insights_stats |
| Integrations | 3 | doow_integrations_list, doow_integrations_get, doow_integrations_disconnect |
| Search | 1 | doow_search |
Scopes
| Scope | Tools | Access |
|---|---|---|
mcp:read | 44 | Read-only workspace tools (queries, metrics, reports) |
mcp:write | 85 | All workspace tools, with confirmation for protected writes |
Flow capability (hs_cap_*) | 6 | Signup tools, returned by signup_begin |
mcp:read / mcp:write | 14 | Onboarding tools via standard MCP OAuth after signup |
Protected operations
Some operations need your confirmation before they can run:
- Card operations — Funding, withdrawing, freezing, deleting
- Team membership changes — Invites, deactivation, reactivation, role removal, deletion, and cancelled invites
- Destructive actions — Deleting contracts, licenses, expenses
Your MCP client shows a confirmation prompt before these operations execute. Scripts, CI jobs, and other non-interactive clients cannot run protected operations.
Supported clients
| Client | Status | Notes |
|---|---|---|
| Claude Code | Supported | OAuth and HTTP transport, with an interactive session required for confirmations |
| Claude Desktop | Supported | Standard MCP setup, with an interactive session required for confirmations |
| Codex | Supported | Protected tools require an interactive session |
| Cursor | Supported | Standard MCP setup, with an interactive session required for confirmations |
Security
The MCP server enforces your organization's existing access controls:
- Organization isolation — Every request is scoped to your organization. You cannot access another organization's data, even with a valid token.
- Role enforcement — Your Doow role determines what you can see and do. Admins have full access. App Admins, Integration Admins, and Department Admins see only the resources assigned to them.
- Confirmation gates — The server asks for confirmation only for tools marked protected by the server.
mcp:writedoes not mean every write asks for confirmation. - Token expiry — Access tokens expire after 1 hour. Refresh tokens expire after 30 days of non-use.
Sensitive data like full card numbers and bank account details are never exposed through MCP tools. Card tools return masked numbers and balances only.
Error guidance
Error responses differ by layer: OAuth uses OAuth error fields, HTTP failures use Doow MCP error codes, and tool failures arrive inside an MCP tool result. Some responses include _meta guidance; do not assume every error does.
Successful operations include suggestions for common next steps, so your agent knows what to do next without guessing.
FAQ
Can I use MCP with multiple Doow organizations?
Each MCP session is bound to one organization. To switch organizations, re-authenticate and select the target organization during OAuth.
What happens if I lose network mid-operation?
Protected operations are not executed until you confirm. If the connection drops before confirmation, nothing happens. Retry the operation.
Can scripts or CI/CD pipelines use MCP?
Read-only tools work in non-interactive contexts. Protected operations require interactive confirmation, so they fail in scripts: CAPABILITY_REQUIRED when the client has no elicitation support, ELICITATION_DENIED when the user declines the prompt.
How do I revoke MCP access?
Revoke an OAuth token at /oauth/revoke, remove the server from your client, or revoke an MCP API key through /v1/auth/mcp-token/:id. API-key revocation is checked against the key's member and organization.
Can the agent see my password during headless signup?
No. Passwords, OAuth tokens, and identity verification all happen in secure browser handoffs. The agent only sees flow status updates, never credentials.
What if the user abandons headless signup?
The flow expires after the timeout (returned in expires_at). The agent can detect this by polling signup_status until it returns EXPIRED, then start a new flow with signup_begin.
Next steps
Connect your first client with the setup guide or one of the client-specific guides below:
Prerequisites, authentication, and first connection.
Add Doow to Claude Code CLI.
Add Doow to the Claude desktop app.
Connect Doow to Codex CLI.
Connect any compatible MCP client.
Agent-directed signup and onboarding with browser handoffs.