Concepts
Workspaces, roles, membership, and the creator-video vocabulary the API and tools use.
The API uses a handful of nouns consistently. The most important one is not named what you would expect, so start there.
A brand is a workspace
The word that trips everyone up
In Passo, a brand's account is a workspace. The word "brand" is reserved for a third-party brand that appears in a creator's video — a product being featured. So when you mean "the company whose account this is", the API calls that a workspace, never a brand. Every list, every id, every membership hangs off workspaces.
A workspace is the tenant: a brand's account, its members, its jobs, and the
videos delivered to it. It has a name and a URL slug. This is the object
list_workspaces returns and the one everything
else references.
Roles
Membership carries a role, ordered from least to most privileged:
| Role | Can |
|---|---|
viewer | See the workspace and its content. |
member | The above, plus create and act on jobs, deals, and reviews. |
admin | The above, plus manage membership and workspace settings. |
Roles are ordered, so a check is "at least a member", not an exact match.
Function
Orthogonal to role is a function — the team axis — either marketing (the
ordinary brand user) or compliance. It defaults to marketing, and only an
admin can assign a non-default value. Function does not widen or narrow a role;
it marks which review a member performs when a workspace requires a separate
compliance sign-off.
Membership
A user joins a workspace through an invite, which they accept to become a member with a role and function. You can be a member of many workspaces; that is why the tools and endpoints are workspace-scoped and paginate.
The other side: creators, agencies, and the work
Videos are delivered to a workspace by people outside it. That side has its own nouns.
- Creator — the person or entity who delivers video. A creator can be onboarded by an agency before they have a Passo login, and claim the account later, so a creator is not always a user.
- Agency — represents a roster of creators and acts on their behalf. Agencies
have their own
viewer/member/adminroles, over their roster rather than over a workspace. - Job — a piece of work a workspace posts, with a
titleand a status ofopen(accepting deliveries) orclosed. - Deal — the assignment of one creator to one job. A deal is the binding that connects a creator to a workspace's work; a video is delivered against a deal.
Videos and versions
A video is a single delivery: it belongs to a workspace and a creator, was delivered against a deal, and points at its current version. The video is the thing under review; its content lives in versions.
A video version is one cut. Uploading a revision creates a new version and
supersedes the previous one, so a video accumulates a version history — which is
what get_video_review returns. Each version carries two
independent status fields, and the difference matters:
muxStatus— where the file is in the processing pipeline:preparing,ready(playable, has aplaybackId), orerrored. This is about the media.state— the review decision:in_review,changes_requested,approved, orrejected. This is about the human verdict.
A cut can be ready to watch while still in_review, or approved while a newer
cut sits in_review above it. When an agent asks "what needs my attention", it
means state: in_review — which is exactly what
list_videos_awaiting_review filters to.
How this maps to the surface
Everything above is reachable two ways, under the same permissions:
- MCP tools — task-shaped operations for agents: your workspaces, your videos, the review queue, a video's full history. See the tools reference.
- REST endpoints — resource-shaped operations for code: workspaces, jobs, deals, videos, members, and invites. See the API reference.
Both run under your row-level security, so either way you see exactly the workspaces, creators, and videos your account can — see Authentication.