Skip to main content
Version: Next

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:deploy-non-productionDeploy an agent to a non-production environment
amp:agent:deploy-productionDeploy an agent to a production environment
amp:agent:promotePromote an agent between environments
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

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
ProjectsFullFullViewView
EnvironmentsFullViewViewFull
GatewaysFull——Full
Deployment pipelinesFullViewViewFull
Git secretsFullFull——
LLM providers & templatesFullRead; connect, configure guardrailFullProvider read, configure guardrail (no templates)
MCP serversFullRead, connect, configure guardrail, manage API keysFullRead, configure guardrail
LLM proxiesFullFull——
EvaluatorsFullViewFull—
Agents (lifecycle)FullCreate, read, update, delete, build, deploy (non-prod), manage tokens & API keysRead, build, deploy (non-prod), manage API keysRead, build, deploy (all), promote, rollback, suspend, manage API keys
MonitorsFullCreate, read, update, delete, run, read scoresViewView
ObservabilityAll readsAll readsTraces, metricsLogs, build logs, metrics
Roles & groupsFull———
Agent identitiesFull———

"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:deploy-non-production
create_external_agentamp:agent:create + amp:agent:token-manage

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​