Skip to content
Siglata Docs
English
Esc
navigateopen⌘Jpreview
On this page

Organizations

Create a team, invite members, and set roles.

Siglata keeps files and access permissions within an organization. Every project asset — including files, upload reservations, storage quotas, member lists, invitations, and Model Context Protocol (MCP) grants — is partitioned by organization ID. A user can belong to multiple organizations and switch between them. Each organization retains its own data and permissions.

Multi-Tenant Architecture

In Siglata, an organization is the foundational boundary for security and data retention:

┌────────────────────────────────────────────────────────────────────────┐
│                          Siglata Account                               │
│                         (alex@example.com)                             │
└──────────────────────────────────┬─────────────────────────────────────┘

         ┌─────────────────────────┴─────────────────────────┐
         ▼                                                   ▼
┌─────────────────────────────────┐         ┌─────────────────────────────────┐
│     Acme Corp (org_1a2b3c)      │         │     Dev Studio (org_9z8y7x)     │
├─────────────────────────────────┤         ├─────────────────────────────────┤
│ • Role: Owner                   │         │ • Role: Member                  │
│ • Quota: 10 GiB Dedicated       │         │ • Quota: 10 GiB Dedicated       │
│ • Private Files & Trash View    │         │ • Private Files & Trash View    │
│ • Distinct Members & Invites    │         │ • Distinct Members & Invites    │
│ • Dedicated MCP OAuth Grants    │         │ • Dedicated MCP OAuth Grants    │
└─────────────────────────────────┘         └─────────────────────────────────┘
  • Strict Data Partitioning: All database queries and object storage paths include the organizationId. Cross-tenant data leakage is prevented at both the database schema and application layers.
  • Independent Storage Quotas: Each organization holds its own 10 GiB baseline quota (limitBytes), unaffected by file storage in other organizations.
  • Scoped Integrations: Connected MCP clients and OAuth grants bind strictly to one organization at a time. Product MCP additionally requires that organization to hold a access tier before tokens issue or tools run.

Role-Based Access Control (RBAC)

Siglata provides three distinct organizational roles with enforced hierarchy and least-privilege principles:

Capability owner admin member
View, upload, download, and rename files
Move files to trash and restore within 30 days
Inspect organization storage metrics
Connect personal MCP clients
Invite new members and assign roles
Cancel pending invitations
Update member roles
Remove members from organization
Update organization name and URL slug
Promote members to Owner or delete organization

Owners delete an organization with typed-name confirmation in the console, the CallScript operation organization_delete (empty input; grant-bound), or POST /auth/organization/delete. Deletion wipes the organization file plane first, then removes members, invitations, and the organization row.

Role Safeguards & Invariants

  • Sole Owner Protection: An organization must always have at least one active owner. A sole owner cannot be demoted or removed until another member is promoted to owner.
  • Admin Delegation: Administrators can invite members, assign member/admin roles, and remove collaborators, but cannot demote or remove existing owners.
  • Real-Time Policy Evaluation: Role checks (requireRoleForScopes) occur dynamically on every API request and MCP operation. Role changes take effect immediately without requiring users to log out.

Member Invitation Lifecycle

Invite collaborators to your workspace securely using localized email invitations:

1. Admin sends invite ──> Localized invite email (en-US / pt-BR) ──> Token saved


2. Recipient opens link ──> Passwordless magic link sign-in ──> Accept invite


3. Member record created in DB ──> Workspace appears in switcher ──> Access active

1. Sending an Invitation

Administrators and owners can invite new team members with the invitation_create CallScript operation inside an MCP execute script or the POST /auth/organization/invite-member endpoint:

  • Specify the recipient’s email address.
  • Select their assigned role (owner, admin, or member).
  • Select the language preference (en-US or pt-BR) via the x-siglata-locale header to ensure transactional emails are sent in the recipient’s native language.

2. Managing Pending Invitations

  • Outstanding invitations are returned by the invitations_list CallScript operation or GET /auth/organization/list-invitations.
  • Resend a pending invite with invitation_resend (same email and role as create).
  • List invitations addressed to you across organizations with invitations_mine.
  • Invitations remain valid for 7 days.
  • An admin can cancel a pending invitation at any time before acceptance (invitation_cancel), which immediately invalidates the invite token.

3. Acceptance and Onboarding

  • The recipient clicks the secure link in their email, or uses grant-bound invitation_accept / invitation_reject when the invite targets the OAuth grant’s organization.
  • Accept and reject refuse invitations for other organizations (INVITATION_ORG_MISMATCH); joining another org requires console accept and a new OAuth grant.
  • Leave the grant-bound organization with organization_leave; the next MCP call fails membership.
  • If they do not yet have a Siglata account, they authenticate immediately through a passwordless magic link — no password creation required.
  • Upon confirming the invitation, their user account is linked as an active member, and the organization appears in their workspace switcher.

Switching Workspaces

Users who belong to multiple organizations can switch contexts:

  • Siglata Console: During sign-in and MCP authorization, the organization selection step sets the active workspace.
  • MCP AI Clients: Each MCP connection grant is tied to a specific organization. Confirm the binding with the CallScript operation principal_get inside an execute script (organizationId, role, scopes); call organization_get when you need the name or slug. To connect an AI agent to multiple organizations, authorize separate server connections for each workspace.

Member Removal & Immediate Revocation

When a member leaves a team or their access is revoked:

  1. An administrator removes the user with the member_remove CallScript operation or the POST /auth/organization/remove-member endpoint.
  2. The user’s member record in the database is removed atomically.
  3. Any active MCP tokens held by that user for the organization are immediately rejected on their next call with:
    {
      "code": "ORGANIZATION_MEMBERSHIP_REQUIRED",
      "message": "Current organization membership is required"
    }
  4. Authenticated binary file downloads and API requests are blocked immediately, ensuring zero unauthorized data retention.

Was this page helpful?