Your workspace, connected to AI.
The DUMA MCP server lets your assistant work with products, content, media and notes. Connect your client once, then ask for what you need in plain language.
88 toolsStreamable HTTPWorkspace API keys
Connect in three steps
Step 1: Create a workspace key
Start with a publishable key and
Open Settings → Developerscatalog:readorcontent:readto explore your data. For drafting or management, use a secret key with the specific scopes you need.Step 2: Add DUMA to your client
Run this in your project’s terminal. Replace YOUR_API_KEY with your workspace key.
Terminalclaude mcp add --transport http duma https://api.duma-business.com/v1/mcp \ --header "Authorization: Bearer YOUR_API_KEY"Open Claude Code and run
Claude Code connection guide ↗/mcpto check the connection.Keep secret keys in your local client configuration. Do not commit them to a repository or paste them into an assistant conversation.
Step 3: Check the connection
Ask your assistant to call
workspace_info. It returns the key’s scopes, restrictions and available APIs.PromptUse DUMA’s workspace_info tool and summarize which APIs and permissions this connection has. Don’t change any data.Works with any valid workspace key
You choose what the assistant can do
Access follows your key
Draft, publish and delete are separate
content:publish; deleting content needs content:delete. Management changes are recorded in the workspace audit log.Find a tool
Filter by name, scope and action. Your assistant only receives the tools allowed by its key; linked tools open their API reference.
88 tools in 7 areas
Content32
content_list_typescontent:readreadcontent_get_typecontent:readreadcontent_list_localescontent:readreadcontent_list_entriescontent:readreadcontent_get_entrycontent:readreadcontent_get_singletoncontent:readreadcontent_get_assetcontent:readreadcontent_synccontent:readreadcontent_create_typecontent:modelswritecontent_create_entrycontent:writewrite- content_manage_create_typecontent:configurewrite
- content_manage_create_entrycontent:managewrite
- content_manage_list_localescontent:manageread
- content_get_settingscontent:manageread
- content_update_settingscontent:configuredelete
- content_manage_list_typescontent:manageread
- content_manage_get_typecontent:manageread
- content_update_typecontent:configuredelete
- content_type_impactcontent:configureread
- content_delete_typecontent:configuredelete
- content_manage_list_entriescontent:manageread
- content_manage_get_entrycontent:manageread
- content_update_entrycontent:managedelete
- content_delete_entrycontent:deletedelete
- content_publish_entrycontent:publishdelete
- content_unpublish_entrycontent:publishdelete
- content_archive_entrycontent:publishdelete
- content_restore_entrycontent:managewrite
- content_entry_versionscontent:manageread
- content_create_localecontent:configurewrite
- content_update_localecontent:configurewrite
- content_delete_localecontent:configuredelete
Store6
store_list_productscatalog:readreadstore_get_productcatalog:readreadstore_list_categoriescatalog:readreadstore_list_localescatalog:readreadstore_get_orderorders:writereadstore_quote_orderorders:writeread
Media7
- media_uploadmedia:writewrite
- media_replace_filemedia:writedelete
- media_listmedia:readread
- media_import_imagemedia:writewrite
- media_updatemedia:writewrite
- media_deletemedia:deletedelete
- media_move_foldermedia:writedelete
Notes14
- notes_list_foldersnotes:readread
- notes_create_foldernotes:writewrite
- notes_create_shared_foldernotes:managewrite
- notes_update_folder_sharingnotes:managedelete
- notes_rename_foldernotes:writewrite
- notes_delete_foldernotes:deletedelete
- notes_listnotes:readread
- notes_getnotes:readread
- notes_createnotes:writewrite
- notes_updatenotes:writedelete
- notes_deletenotes:deletedelete
- notes_restorenotes:writewrite
- notes_versionsnotes:readread
- notes_restore_versionnotes:writedelete
Catalogue15
- catalog_list_categoriescatalog:manageread
- catalog_create_categorycatalog:managewrite
- catalog_update_categorycatalog:managewrite
- catalog_delete_categorycatalog:managedelete
- catalog_list_productscatalog:manageread
- catalog_create_productcatalog:managewrite
- catalog_update_productcatalog:managewrite
- catalog_delete_productcatalog:managedelete
- catalog_get_productcatalog:manageread
- catalog_get_variantscatalog:manageread
- catalog_create_variantcatalog:managewrite
- catalog_update_variantcatalog:managewrite
- catalog_set_variant_locationcatalog:managewrite
- catalog_create_optioncatalog:managewrite
- catalog_add_option_valuecatalog:managewrite
Locations3
- locations_listlocations:manageread
- locations_createlocations:managewrite
- locations_updatelocations:managewrite
Workspace11
workspace_infoany keyread- workspace_getworkspace:readread
- workspace_updateworkspace:writewrite
- workspace_setup_previewworkspace:readread
- workspace_setup_statusworkspace:readwrite
- workspace_setup_startworkspace:writewrite
- workspace_setup_completeworkspace:writewrite
- workspace_setup_recommendworkspace:writewrite
- workspace_setup_applyworkspace:writedelete
- workspace_get_tradingworkspace:readread
- workspace_set_tradingworkspace:writewrite
Connection help
The server rejects my key
Replace the placeholder with a valid workspace key and check that it has not expired or been revoked. Send it in the Authorization: Bearer header, or X-Api-Key. Legacy dcms_ content keys are not accepted.
A tool is missing or access is denied
Check the key’s scopes first, then refresh the client’s tool list. A listed tool may still be denied by module settings, content-type restrictions or the key creator’s current access. Workspace-wide management also requires an unrestricted workspace key and owner access.
Opening the server URL gives 405
This is expected for a browser GET request. Connect through an MCP client using Streamable HTTP. DUMA accepts JSON-RPC over POST; GET and DELETE return 405 because the server is stateless.
A request is rate-limited
The MCP endpoint allows 120 requests per minute per key. A 429 response means the limit was reached. Wait before retrying and reduce request frequency; the underlying APIs also enforce their limits.
How do media uploads work?
The remote server cannot read a file path on your computer. Import a public HTTPS image URL or send a small file as base64. MCP requests are capped at 1 MB; use the authenticated multipart upload URLs returned by workspace_info for larger files, up to 25 MB.