Skip to Content
These docs describe donkey-kit v0.2.0. Release notes
ReferenceConnected-app scopes

Live

Connected-app scopes

Which scopes does the connected app behind ANYPOINT_CLIENT_ID / ANYPOINT_CLIENT_SECRET need? This page lists them per operation. Model calls need none of them: they use the LLM proxy’s own credentials (see Anypoint control plane).

Create the app as App acts on its own behalf (client credentials) in Access Management. No operation needs an app that acts on behalf of a user, or admin rights: the scopes below are enough. The app can see only what the user who created it can see, so that user needs access to the business group and environment too.

ScopeGrant onUsed by
read:exchangethe business groupsearch(), explain() tag, lifecycle and governance checks, Publication.verify()
view:environmentthe business group and the ANYPOINT_ENV environmentresolve_mcp(), explain()
read:api_configurationthe business group and the environmentresolve_mcp(), explain()
read:api_policiesthe business group and the environmentexplain() policy checks
read:serversthe business group and the environmentresolve_mcp()
manage:exchangethe business groupdonkey publish

Leave out manage:exchange if the app never publishes. The SDK’s error messages name the scopes in this table. A smaller set also works for the reads: read:exchange, read:servers and read:api_policies.

For donkey expose

donkey expose publishes the service, creates its gateway instance, applies its policies and deploys it. An app with these seven scopes runs it, and donkey preflight, end to end:

ScopeGrant onUsed for
view:environmentthe business group and the environmentfinding the environment
read:serversthe business group and the environmentfinding the gateway; the deploy needs it too
read:exchangethe business groupthe published version, and the instance create
manage:exchangethe business grouppublishing the version
manage:api_configurationthe business group and the environmentreading and creating the instance
manage:api_policiesthe business group and the environmentreading and applying the policies
manage:api_proxiesthe business group and the environmentthe deploy

donkey preflight only reads, so the read scopes in the table above are enough for it.

Removing a scope from an app does not take effect at once: the app keeps it for a while. To check that an app works with fewer scopes, create a new one with just those.

Per operation

Each row lists the scopes that allow the call; any one of them is enough unless the row says plus.

OperationPlatform callScopesStatus
Connected-app tokenPOST /accounts/api/v2/oauth2/tokenNoneLive
donkey.registry.search()Exchange Graph searchread:exchangeLive
resolve_mcp(), explain(): find the environmentAccess Management environment listview:environment, read:orgenvironments or read:serversLive
resolve_mcp(), explain(): find the instanceAPI Manager instance list and describeread:api_configuration, read:api_policies, manage:api_configuration or manage:apisLive
explain(): require_any_policy, required_policies, forbidden_policiesAPI Manager instance policiesread:api_policies or manage:api_policies. read:api_configuration is not enough.Live
resolve_mcp(): the gateway’s public URLOmni Gateway Manager gateway readread:serversLive
explain(): require_tags, require_lifecycleExchange asset version readread:exchangeLive
explain(): require_governance_passAPI Governance conformance readread:exchange, view:ang_governance_profiles or admin:ang_governance_profilesLive
donkey.tools.discover()The search(), explain() and resolve_mcp() readsTheirsLive
Publication.verify(), donkey verify: the published versionExchange Graph API asset query, and the file downloadread:exchangeLive
Publication.verify(), donkey verify: find the instanceThe resolve_mcp() or resolve_agent() and explain() readsTheirsLive
A bound ToolSet, Publication.verify(): the live server or agentMCP or A2A through its gateway instanceNone: the consumer credential, not the connected appLive
donkey publishExchange publish, endpoint registration, asset name and description, pagemanage:exchange. create:exchange and edit:exchange are not enough.Live
donkey preflight, donkey expose: find the gatewayOmni Gateway Manager gateway list and readread:serversLive
donkey expose: create an instanceAPI Manager instance createmanage:api_configuration or manage:apis, plus read:exchangeLive
donkey expose: inbound and outbound policiesAPI Manager policiesmanage:api_policiesLive
donkey expose: deploy, and its statusProxy deploymentread:servers plus manage:api_proxiesLive

Exchange, API Governance and read:orgenvironments scopes are granted on the business group only. The others are granted on the business group and the environment.

When a scope is missing

WhereWhat you get
resolve_mcp(), explain()AuthError. Its remediation names the scope the call needs and the business group, for example “The connected app likely lacks the scope ‘read:servers’ on business group …”.
explain() Exchange and API Governance checksNo error: the check is UNKNOWN (passed=None), and its detail names read:exchange.
search()No error: Exchange returns no assets, so search() returns []. If a search you expect to match returns nothing, check read:exchange first.
Publication.verify(), donkey verifyAuthError naming read:exchange if Exchange refuses the published-version read. The instance reads fail as for resolve_mcp() and explain().
donkey publishAuthError naming manage:exchange. If the app has edit:exchange instead, the version can be published but registering its endpoint fails with a RegistryError naming manage:exchange.
donkey expose, donkey preflightThe step fails (✗), its remediation names the scope, and the steps after it are skipped. An instance create without read:exchange answers 400 “Error while trying to retrieve asset”, which the step reports as a missing read:exchange.

See Errors for how AuthError fits the error taxonomy.

Last updated on