NewMCP ServerView docs
Security

Access Control

Configure role-based access control for your organization.

6 min readUpdated 2026-01-16

Access Control (RBAC)

Role-based access control lets you define who can do what in your organization.

Built-in Roles

RoleDescription
OwnerFull access including billing and org deletion
AdminUser management, settings, full API access
EditorUpload, edit, delete documents; full search
ViewerRead-only access to documents and search

Permissions Matrix

PermissionOwnerAdminEditorViewer
View documentsYesYesYesYes
SearchYesYesYesYes
Upload documentsYesYesYesNo
Delete documentsYesYesYesNo
Manage usersYesYesNoNo
Manage settingsYesYesNoNo
Manage billingYesNoNoNo
Delete organizationYesNoNoNo

Assigning Roles

python
# Invite user with role
client.users.invite(
    email="user@example.com",
    role="editor"
)

# Update existing user role
client.users.update("user_123", role="admin")

Custom Roles (Enterprise)

Create custom roles with specific permissions:

python
client.roles.create({
    "name": "Reviewer",
    "permissions": [
        "documents:read",
        "search:execute",
        "documents:comment"
    ]
})

Resource-Level Permissions

Restrict access to specific documents or collections:

python
client.permissions.grant({
    "user_id": "user_123",
    "resource_type": "collection",
    "resource_id": "col_legal",
    "permission": "read"
})

API Key Scopes

Limit API key permissions:

python
key = client.api_keys.create({
    "name": "Search Only",
    "scopes": ["search:execute"]
})