| Path | Actor | Target | Main question |
|---|---|---|---|
| Using MCP servers | An MCP client, agent, or automation calling a server endpoint | A hosted, remix, or external MCP server served through Horizon | Can this actor use this server and requested MCP capability? |
| Managing Horizon | A user, script, CI job, service account, or Terraform run | The Horizon dashboard or REST API | Can this actor view or change this organization, server, member, key, or setting? |
Organization
Determines whether the actor belongs to the organization and whether they
can manage organization-wide settings such as members, billing, SSO,
service accounts, and server roles.
Server
Determines whether the actor can discover, call, view, edit, deploy, or
administer a specific server.
Capabilities
Determines which MCP tools, resources, and prompts are available to the
actor’s server role.
Custom server roles are available on . Tool-level access is
available on .
Request decision flow
When a protected MCP request reaches Horizon, the gateway checks access before the request reaches server code.Identify the actor
Horizon authenticates the bearer credential and resolves it to a user or
service account. Invalid, expired, revoked, or missing credentials fail
before authorization.
Check organization membership
The actor must belong to the organization that owns the server. An actor in
another organization cannot use that organization’s servers.
Resolve server access
Horizon resolves the actor’s effective server role from organization
privileges, explicit server grants, and the server’s default role.
Apply capability access
If the server has tool-level access configured, Horizon filters tools,
resources, and prompts by the actor’s effective server role.
Disabling Horizon authentication removes Horizon gateway authentication and
server access checks for that hosted server endpoint. Do so only when the
endpoint is intentionally public or the server implements its own
authentication and authorization. This is available only for hosted servers;
remix servers and external servers always keep Horizon authentication enabled.
Actors
An actor is an identity that can authenticate, hold access, and own API keys. Horizon supports two actor types:| Actor type | Used for | How access is evaluated |
|---|---|---|
| User | People using the dashboard, REST API, playground, or MCP clients | Organization role, explicit server grants, server default role, and capability access |
| Service account | Automation, CI/CD, Terraform, and non-human clients | The same organization and server access model as users |
Organization roles
Organization roles control organization-wide management permissions.| Role | Contract |
|---|---|
| Admin | Can manage organization settings and has full access to every server in the organization. Horizon evaluates organization admins as the admin server role for server and capability access. |
| Member | Can read basic organization information and can access servers according to explicit server grants or server default roles. |
Server roles
Server roles control what an actor can do with an individual server after they have access to it.| Role | Slug | Server management | MCP endpoint access |
|---|---|---|---|
| Admin | admin | Full server access, including access management, configuration, builds, permissions policies, and deletion. | Can call the server and all capabilities. The admin role stays allowed in capability policies so administrators can recover access. |
| Editor | editor | Can view and update server configuration, create builds, and edit permissions policies. Editors cannot grant or revoke server access and cannot delete the server. | Can call the server. Capability policies can allow or deny specific tools, resources, and prompts for this role. |
| Viewer | viewer | Can view the server, its access list, and its permissions policy. Viewers cannot modify the server. | Can call the server. Capability policies can allow or deny specific tools, resources, and prompts for this role. |
No Access is a server default setting, not a role slug.
Server roles are not hierarchical in capability policies. If both
viewer
and editor should access a capability, both roles must be allowed. Use *
only when every server role should have access.Server access resolution
For a member who is not an organization admin, Horizon resolves server access in this order:| Step | Result |
|---|---|
| Explicit server grant | If the actor has an explicit grant on the server, Horizon uses the role on that grant. |
| Default server role | If there is no explicit grant and the server has a default role, Horizon gives that role to the rest of the organization. |
| No access | If there is no explicit grant and no default role, the actor cannot access the server. |
Viewer, Editor, Admin, or a custom role to make the
server available to all organization members at that level. Set it to
No Access to restrict the server to actors with explicit grants.
Explicit grants are useful for exceptions. For example, a server can default to
Viewer for the organization while granting Editor to the team that deploys
it. Removing an explicit grant falls back to the server default role, if one is
configured.
Custom server roles
Custom server roles are scoped to one organization. Use them when the built-inAdmin, Editor, and Viewer roles are too broad for a server management
workflow.
Each custom role has:
| Field | Purpose |
|---|---|
| Name | A stable slug used by policies and API responses. The name is set when the role is created and cannot be changed later. |
| Label | The human-readable role name shown in the dashboard. |
| Permissions | The server-level actions the role can perform. |
Capability-level access
Capability-level access controls which MCP tools, resources, and prompts are available to each server role. It is configured from a server’s Settings pages after Horizon has a manifest for the server. For hosted servers, saved capability policy changes apply to the dashboard immediately, but live MCP endpoint traffic uses the updated policy after the next deployment. Server explicit grant changes and server default role changes do not require a code change or rebuild. Capability access has two layers:| Layer | What it controls |
|---|---|
| Default permissions | Which roles can access tools, resources, and prompts by default. |
| Capability overrides | Per-tool, per-resource, and per-prompt exceptions from the default. |
| Override | Effect |
|---|---|
| Default | Inherit the server’s default capability permissions. |
| All roles | Allow every server role. |
| One or more roles | Allow only the listed roles. |
admin server role allowed in capability policies.
Organization admins and server admins can recover access to server capabilities.
Capability policies apply to MCP tools, MCP resources, resource templates, and
MCP prompts. Resource templates use the resource access settings.
Applying changes
Authorization changes have different lifecycle boundaries depending on what you change.| Change | When it affects Horizon management | When it affects MCP endpoint traffic |
|---|---|---|
| Organization role change | On the next authenticated dashboard or API request. | On the next authenticated MCP request that resolves the actor’s current access. |
| Server explicit grant change | After the change is saved. | After Horizon updates the live deployment’s access metadata. No code change is required. |
| Server default role change | After the change is saved. | After Horizon updates the live deployment’s access metadata. No code change is required. |
| Capability policy change | After the change is saved in Horizon. | For hosted servers, after redeploying the server so the deployed endpoint uses the updated policy. |
| API key revocation | Immediately stops that key from authenticating. | Immediately stops that key from authenticating. |
Common outcomes
A request succeeds
A request succeeds
Horizon authenticated the actor, found organization membership, resolved an
effective server role, and allowed the requested server or capability.
A request returns 401
A request returns 401
Authentication failed before authorization. Check the bearer credential,
API key state, token expiration, and target organization.
A request returns 403
A request returns 403
Authentication succeeded, but authorization denied access to the
organization, server, or requested capability. Check the actor’s
organization role, explicit server grants, the server default role, and
capability policy.
A request returns 404
A request returns 404
The server or deployment does not exist, or Horizon is concealing a server
from a caller without discovery access.
A tool, resource, or prompt is missing
A tool, resource, or prompt is missing
The actor may have server access but not capability access. Check the
server’s default capability permissions and any per-capability overrides,
then redeploy hosted servers if the policy was changed.
Operational guidance
For production servers, keep Horizon authentication enabled and use server roles to control who can manage or call it. Prefer service accounts with narrowly scoped server grants for automation. UseNo Access as the default role for sensitive servers, then grant explicit
access to the users and service accounts that need them. Use a Viewer default
for broadly discoverable servers where most users should be able to inspect or
call safe capabilities.
Use capability-level access for high-impact tools, sensitive resources, and
prompts that should not be available to every server user. Keep destructive or
write-capable tools restricted to roles that are meant to perform those actions.
Related docs
Authentication
Learn how users, service accounts, MCP clients, and API keys prove identity.
Gateway
Learn where authentication and authorization run in the request path.
Members
Invite, remove, and manage people in your organization.
API keys
Create, rotate, and revoke bearer credentials.
Limits
Review product limits that can affect server requests.