Skip to main content
Version: v1.0.0-rc1

Authorization

WSO2 Agent Manager (AMP) authorizes every action against a single, platform-wide permission model. Access is governed by OAuth 2.0 scopes issued by the bundled Thunder identity provider: each capability on the platform maps to one scope, and a caller can perform a capability only if its access token carries the matching scope.

One model, every entry point​

The same scopes gate the same capabilities no matter how you reach the platform:

Because the model is shared, an MCP tool and its equivalent REST route enforce the identical scope. Triggering a build through the build_agent MCP tool and calling POST /orgs/{org}/.../builds both require amp:agent:build; there is no separate "MCP permission" to reason about. Learn the scope once and it applies everywhere.

How a scope is named​

Scopes follow a fixed three-part shape, built from the amp resource server:

amp:<resource>:<action>

For example, amp:project:read, amp:agent:build, and amp:observability:trace-read. The <resource> identifies what you are acting on and <action> identifies what you are doing to it.

Scope catalog​

The tables below list every scope the platform defines, grouped by resource. The observability scopes (in their own group) are enforced by agent-manager-observer; all others are enforced by agent-manager-service.

Organization
ScopeGrants
amp:org:viewView organization details
amp:org:modify-settingsModify organization settings
amp:org:invite-memberInvite a member to the organization
amp:org:remove-memberRemove a member from the organization
amp:org:assign-roleAssign roles to members
amp:org:manage-idpManage the organization's identity providers
amp:org:manage-service-accountManage organization service accounts
Project
ScopeGrants
amp:project:createCreate a project
amp:project:readView projects
amp:project:updateUpdate a project
amp:project:deleteDelete a project
Environment
ScopeGrants
amp:environment:createCreate an environment
amp:environment:readView environments
amp:environment:updateUpdate an environment
amp:environment:deleteDelete an environment
Gateway
ScopeGrants
amp:gateway:createRegister a gateway
amp:gateway:readView gateways
amp:gateway:updateUpdate a gateway
amp:gateway:deleteDelete a gateway
amp:gateway:token-manageManage gateway tokens
Infrastructure
ScopeGrants
amp:data-plane:readView data planes
amp:deployment-pipeline:readView deployment pipelines
amp:deployment-pipeline:createCreate a deployment pipeline
amp:deployment-pipeline:updateUpdate a deployment pipeline
amp:deployment-pipeline:deleteDelete a deployment pipeline
Git secret
ScopeGrants
amp:git-secret:createCreate a Git secret
amp:git-secret:readView Git secrets
amp:git-secret:deleteDelete a Git secret
LLM provider template
ScopeGrants
amp:llm-provider-template:createCreate an LLM provider template
amp:llm-provider-template:readView LLM provider templates
amp:llm-provider-template:updateUpdate an LLM provider template
amp:llm-provider-template:deleteDelete an LLM provider template
LLM provider
ScopeGrants
amp:llm-provider:createCreate an LLM provider
amp:llm-provider:readView LLM providers
amp:llm-provider:updateUpdate an LLM provider
amp:llm-provider:deleteDelete an LLM provider
amp:llm-provider:configure-guardrailConfigure guardrails on an LLM provider
amp:llm-provider:connectConnect to an LLM provider
amp:llm-provider:deployDeploy an LLM provider
amp:llm-provider:api-key-manageManage LLM provider API keys
MCP server
ScopeGrants
amp:mcp-server:createCreate an MCP server
amp:mcp-server:readView MCP servers
amp:mcp-server:updateUpdate an MCP server
amp:mcp-server:deleteDelete an MCP server
amp:mcp-server:configure-guardrailConfigure guardrails on an MCP server
amp:mcp-server:connectConnect to an MCP server
amp:mcp-server:api-key-manageManage MCP server API keys
Scope catalog
ScopeGrants
amp:scope:createCreate a scope
amp:scope:readView scopes
amp:scope:updateUpdate a scope
amp:scope:deleteDelete a scope
Agent identity
ScopeGrants
amp:agent-identity:readView agent identity roles and assignments
amp:agent-identity:createCreate agent identity roles
amp:agent-identity:updateUpdate agent identity roles and assignments
amp:agent-identity:deleteDelete agent identity roles
LLM proxy
ScopeGrants
amp:llm-proxy:createCreate an LLM proxy
amp:llm-proxy:readView LLM proxies
amp:llm-proxy:updateUpdate an LLM proxy
amp:llm-proxy:deleteDelete an LLM proxy
amp:llm-proxy:deployDeploy an LLM proxy
amp:llm-proxy:api-key-manageManage LLM proxy API keys
Evaluator
ScopeGrants
amp:evaluator:createCreate an evaluator
amp:evaluator:readView evaluators
amp:evaluator:updateUpdate an evaluator
amp:evaluator:deleteDelete an evaluator
Agent
ScopeGrants
amp:agent:createCreate an agent
amp:agent:readView agents
amp:agent:updateUpdate an agent
amp:agent:deleteDelete an agent
amp:agent:buildTrigger an agent build
amp:agent:env-non-productionReach non-production environments. Required by deploy, promote and deployment-state changes, and never sufficient by itself for the last of those
amp:agent:env-productionReach environments flagged isProduction, held in addition to the non-production scope. Grants nothing on its own
amp:agent:rollbackRoll back an agent deployment
amp:agent:suspendSuspend an agent deployment
amp:agent:token-manageManage agent identity tokens
amp:agent:api-key-manageManage agent API keys
Agent kind
ScopeGrants
amp:agent-kind:readView agent kinds
amp:agent-kind:createCreate an agent kind
amp:agent-kind:updateUpdate an agent kind
amp:agent-kind:deleteDelete an agent kind
Monitor
ScopeGrants
amp:monitor:createCreate a monitor
amp:monitor:readView monitors
amp:monitor:updateUpdate a monitor
amp:monitor:deleteDelete a monitor
amp:monitor:executeExecute a monitor
amp:monitor:score-readView monitor scores
amp:monitor:score-publishPublish monitor scores
Observability (enforced by agent-manager-observer)
ScopeGrants
amp:observability:trace-readRead traces and spans
amp:observability:log-readRead runtime logs
amp:observability:build-log-readRead build logs
amp:observability:metric-readRead metrics
Role management
ScopeGrants
amp:role:createCreate a role
amp:role:readView roles
amp:role:updateUpdate a role
amp:role:deleteDelete a role
Group management
ScopeGrants
amp:group:createCreate a group
amp:group:readView groups
amp:group:updateUpdate a group
amp:group:deleteDelete a group
Catalog & repository
ScopeGrants
amp:catalog:readView the catalog
amp:repository:readView repositories
Profile
ScopeGrants
amp:profile:readView your own profile
amp:profile:update-attributesUpdate your own profile attributes

The environment tier is a separate axis​

Deploying, promoting, and changing an agent's deployment state are gated on which kind of environment they target, as well as on what the operation is. amp:agent:env-non-production is the floor — it means "may act on environments at all", and on its own it allows deploying and promoting into any environment not marked as production. amp:agent:env-production is granted in addition to the floor to reach the environments that are: a production environment requires both scopes, and the production scope on its own grants nothing.

Changing an agent's deployment state additionally requires amp:agent:suspend: the tier says which environments a caller may reach, and amp:agent:suspend says they may stop what is running there. Holding the tier alone does not stop anything. Deploying and promoting are the operations with no separate capability scope — for those, within an environment the tier is the whole grant.

An environment counts as production when its isProduction flag is set. That flag is set per environment on create and update, and in the console's Edit Environment drawer. Nothing else decides it: on an installation where no environment carries the flag, every environment is non-production, and anyone holding the floor can promote all the way to whatever the organization considers production. Set the flag on your production environments before relying on this boundary.

Predefined roles​

Rather than grant scopes one at a time, AMP ships four predefined roles. Each bundles a set of scopes tuned to a persona, and is registered as a role-to-scope binding in Thunder at bootstrap. A user's token carries the scopes of the roles assigned to them.

Capability areaAgent Manager AdminDeveloperAI LeadPlatform Engineer
OrganizationFullViewViewView
ProjectsFullFullViewFull
EnvironmentsFullViewViewFull
GatewaysFullView—Full
Deployment pipelinesFullViewViewFull
Git secretsFullFullViewView
LLM providers & templatesFullRead; connect, configure guardrailFullFull
MCP serversFullRead, connect, configure guardrail, manage API keysFullFull
MCP proxy scopesFullViewFullFull
LLM proxiesFullFull——
Agent kindsFullFullViewView
EvaluatorsFullViewFullView
Agents (lifecycle)FullCreate, read, update, delete, build, act on non-production environments, suspend, manage tokens & API keysRead, build, act on non-production environments, suspend, manage API keysRead, build, act on all environments, rollback, suspend, manage API keys
MonitorsFullCreate, read, update, delete, run, read scoresCreate, read, update, delete, run, read scoresCreate, read, update, delete, run, read scores
ObservabilityAll readsAll readsTraces, metricsAll reads
Roles & groupsFull———
Agent identitiesFullView—Full

"Full" means every action in that capability area; "View" means read-only access. This table summarizes each role; the authoritative, exhaustive scope-per-role mapping lives in agent-manager-service/rbac/predefined_roles.go.

REST and MCP share the model​

Every MCP tool authorizes against the same scope its REST equivalent does. A few examples from the main MCP server:

MCP toolRequired scope
list_projectsamp:project:read
create_projectamp:project:create
build_agentamp:agent:build
deploy_agentamp:agent:env-non-production, plus amp:agent:env-production when the target environment is flagged isProduction
update_deployment_stateamp:agent:suspend + amp:agent:env-non-production, plus amp:agent:env-production in a production environment
create_external_agentamp:agent:create + amp:agent:token-manage
list_environmentsamp:environment:read

The observability tools on the Observer MCP server map the same way — the trace tools require amp:observability:trace-read, and get_runtime_logs, get_build_logs, and get_metrics require amp:observability:log-read, amp:observability:build-log-read, and amp:observability:metric-read respectively.

Two MCP OAuth clients, disjoint scopes​

Because the two MCP servers are addressed separately, AMP ships two pre-registered OAuth clients whose scope allowances do not overlap:

  • am-mcp (main MCP server) is allowed every amp:* scope except the four amp:observability:*-read scopes.
  • am-obs-mcp (Observer MCP server) is allowed only the four amp:observability:*-read scopes (plus the OIDC scopes).

A token obtained for one server therefore cannot be reused against the other. See MCP Server and Observer MCP Server for the client details.

Next steps​