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.
What you can do
Query your SaaS stack, manage cards, update team members, and generate reports with prompts like:
- “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”
These map to 85 tools organized by domain—apps, contracts, licenses, cards, team, expenses, integrations, and more.
Endpoints
| Use | URL |
|---|---|
| Add to an MCP client | https://mcp.doow.co |
| MCP transport | POST https://mcp.doow.co/mcp |
| 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 85 tools organized by domain:
| 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 | Access |
|---|---|
mcp:read | 44 read-only tools (queries, metrics, reports) |
mcp:write | Read and write access to all 85 tools, with confirmation still required for protected writes — see the scopes reference for the current protected-tool list |
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 and will fail in scripts with ELICITATION_DENIED.
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.
Next steps
Connect your first client with the setup guide or one of the client-specific guides below: