DocsDocs
Open app

Scopes and permissions

MCP scopes, Doow roles, and resource access.

The MCP server uses two layers of access control: MCP scopes determine which tool categories are available, and Doow roles determine which resources you can access.

MCP scopes

ScopeToolsDescription
mcp:read44Read-only operations including list, get, metrics, and reports
mcp:write85All read operations plus create, update, delete, and fund

Request scopes during OAuth authorization with scope=mcp:read%20mcp:write.

If you only need to query data, request mcp:read alone. The server grants the intersection of requested scopes and your Doow permissions.

Read-only tools (44)

These tools are available with mcp:read:

DomainTools
Appsdoow_apps_list, doow_apps_get, doow_apps_metrics, doow_apps_alternatives, doow_apps_compare
Contractsdoow_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_report
Licensesdoow_licenses_list, doow_licenses_get, doow_licenses_report, doow_licenses_usage, doow_licenses_metrics, doow_licenses_unassigned_users, doow_licenses_unassigned_expenses
Cardsdoow_cards_list, doow_cards_get, doow_cards_metrics, doow_cards_balance, doow_cards_app_metrics, doow_cards_report
Teamdoow_team_list, doow_team_get
Integrationsdoow_integrations_list, doow_integrations_get
Chatdoow_chat_sessions_list, doow_chat_sessions_get
Dashboarddoow_dashboard_overview, doow_dashboard_spend, doow_dashboard_renewals
Insightsdoow_insights_list, doow_insights_needs_attention, doow_insights_stats
Expensesdoow_expenses_list, doow_expenses_get, doow_expenses_metrics, doow_expenses_report, doow_expenses_validate_csv
Searchdoow_search

Write tools (41 additional)

These tools require mcp:write:

DomainTools
Appsdoow_apps_create, doow_apps_update, doow_apps_deactivate
Contractsdoow_contracts_create, doow_contracts_update, doow_contracts_delete, doow_contracts_credit_vintage, doow_contracts_spend_pool, doow_contracts_report_email
Licensesdoow_licenses_create, doow_licenses_update, doow_licenses_delete, doow_licenses_add_to_contract, doow_licenses_assign_user, doow_licenses_report_email
Cardsdoow_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
Teamdoow_team_invite, doow_team_update, doow_team_update_roles, doow_team_remove_role, doow_team_deactivate, doow_team_reactivate, doow_team_delete, doow_team_cancel_invite
Integrationsdoow_integrations_disconnect
Chatdoow_chat, doow_chat_action
Expensesdoow_expenses_create, doow_expenses_update, doow_expenses_categorize, doow_expenses_delete, doow_expenses_report_email, doow_expenses_import_csv

Protected tools

These tools require confirmation before executing:

ToolWhy protected
doow_apps_deactivateChanges app status
doow_contracts_createCreates a contract
doow_contracts_deleteRemoves contract record
doow_contracts_credit_vintageCreates a credit vintage
doow_contracts_spend_poolCreates a spend pool
doow_contracts_report_emailSends a contract report
doow_licenses_createCreates a license
doow_licenses_deleteRemoves license record
doow_licenses_report_emailSends a license report
doow_cards_createIssues a card
doow_cards_fundMoves money to card
doow_cards_org_fundMoves money to organization
doow_cards_assign_ownersChanges card ownership
doow_cards_withdrawMoves money from card
doow_cards_freezeBlocks card transactions
doow_cards_unfreezeEnables card transactions
doow_cards_deletePermanently removes card
doow_team_inviteGrants a team invitation
doow_team_deactivateRemoves member access
doow_team_reactivateRestores member access
doow_team_remove_roleRemoves a member role
doow_team_deletePermanently removes member
doow_team_cancel_inviteCancels a team invitation
doow_integrations_disconnectDisconnects an integration
doow_expenses_createCreates an expense
doow_expenses_deleteRemoves expense record
doow_expenses_report_emailSends an expense report
doow_expenses_import_csvImports expenses

Doow roles

Your Doow role determines which resources you can access within your scope:

RoleAccess
AdminAll organization resources
App AdminAssigned apps and their contracts, licenses, expenses
Department AdminAssigned departments and their users, apps, expenses
Integration AdminAssigned integrations only
MemberBasic organization data, assigned resources only

MCP scopes determine which tools you can use, while your Doow role determines which resources those tools can access. An Admin with mcp:read can query all resources but cannot modify them. A Department Admin with mcp:write can only modify resources in their assigned departments. Credentials are bound to one member and organization, so resources outside that organization are not available.

Scope errors

If you call a tool without the required scope, the MCP tool result is marked as an error. Its text content contains the Doow error object:

json
{"isError": true,"content": [{  "type": "text",  "text": "{"code":"SCOPE_INSUFFICIENT","message":"Missing required scope","details":{"required_scope":"mcp:write"},"_meta":{"required_scope":["mcp:write"],"current_scope":["mcp:read"],"action":"Re-authorize with scope=mcp:read%20mcp:write"}}"}]}

Resource errors

If you access a resource your role does not permit, the server does not expose data from another organization:

json
{"error": {  "code": "RESOURCE_NOT_FOUND",  "message": "Resource does not exist"}}

Scope downgrade

If your client registered with limited scopes, the server may grant narrower access than you requested:

json
{"access_token": "eyJ...","scope": "mcp:read","_meta": {  "note": "Requested scope was mcp:read mcp:write but client is registered for mcp:read only"}}

Request the needed scope during authorization. The server grants only the intersection of the requested scope and your Doow permissions.

Next steps

Was this page helpful?