1Password SaaS Manager integration for AI agents.
1Password SaaS Manager integration for AI agents with secure authentication and server-side credential injection. Open Connector runs the OAuth, seals the token in an encrypted vault, and serves 1Password SaaS Manager tools to your agent over MCP or a typed API — credentials injected server-side, every call audited, nothing leaving your infrastructure. Open source (AGPL-3.0) and self-hostable.
Real 1Password SaaS Manager actions, managed and audited.
Your user connects 1Password SaaS Manager once; your agent can then manage SaaS applications, people, teams, devices, workflows, audit logs, and SCIM resources with 1Password SaaS Manager — scoped to the OAuth permissions you grant and the tool allowlist you configure. Every action is least-privilege and written to a tamper-evident audit trail.
- 1
Your user grants 1Password SaaS Manager access once (OAuth) — the token lands in the vault.
- 2
Your agent calls a tool over MCP or the typed API; Open Connector injects the credential server-side.
- 3
Every routed call appends a hash-chained audit record — nothing leaves your infra.
Supported 1Password SaaS Manager tools.
43 tools are generated from the published 1Password SaaS Manager catalog. Descriptions are plain text; each action remains subject to its configured authentication and tool allowlist.
Showing 43 tools. All published catalog entries are included in this page's server-rendered HTML.
- Delete a device
- Deletes the device with the given SaaS Manager ID. **Required scope:** `Assets.Write` (Write access to devices)
- Devices
- Delete a contract
- Deletes a contract by its SaaS Manager ID or by your own external ID. **Required scope:** `Contracts.Write` (Write access to contracts)
- Contracts
- Delete a team
- Deletes the team with the given ID, along with its descendants, and removes the corresponding memberships from people. Teams that are in use by integrations cannot be deleted. **Required scope:** `People.Write` (Write access to people and teams)
- Teams
- Delete a user
- Removes a user's SaaS Manager access, following the SCIM 2.0 protocol (RFC 7644). Returns 204 No Content on success. System-managed and EPM-managed users cannot be deleted (400). **Required scope:** `Users.Write` (Write access to users with access to SaaS Manager)
- SCIM
- List applications
- Returns a paginated list of the applications in your organization. Use `filter` and `q` to narrow the results, and follow the `next` link (also provided in the `link` response header) to page through large result sets. **Required scope:** `Apps.Read` (Read-only access to applications)
- Applications
- Get an application
- Fetches a single application (a managed SaaS app in your organization) by its ID. **Required scope:** `Apps.Read` (Read-only access to applications)
- Applications
- List application accounts
- Returns a paginated list of the accounts (users) on a given application. Follow the `next` link to page through large result sets. **Required scope:** `Apps.Users.Read` (Read-only access to application accounts)
- Applications
- Get application categories
- Returns the application category tags as a nested hierarchy. **Required scope:** `Apps.Read` (Read-only access to applications)
- Applications
- List application custom fields
- Returns the application custom fields defined for your organization. Use the field `lookupKey` values as the keys of the `customFields` object when creating or updating an application. **Required scope:** `Apps.Read` (Read-only access to applications)
- Applications
- List devices
- Returns a paginated list of the devices in your organization. Use `filter` and `q` to narrow the results, and follow the `next` link (also provided in the `link` response header) to page through large result sets. **Required scope:** `Assets.Read` (Read-only access to devices)
- Devices
- List device custom fields
- Returns the device custom fields defined for your organization. Use the field `lookupKey` values as the keys of the `customFields` object when creating or updating a device. **Required scope:** `Assets.Read` (Read-only access to devices)
- Devices
- Get a device
- Fetches a single device by its SaaS Manager ID. **Required scope:** `Assets.Read` (Read-only access to devices)
- Devices
- List audit log events
- Returns audit log events for your organization, oldest first. The audit log is a continuous, append-only stream. Pagination is cursor-based but differs from the rest of the SaaS Manager API: the response's `next` field (and the `link` response header, `rel="next"`) always returns a cursor URL — even on the last page — so you can keep following it to receive new events as they are written. Page until no further `results` are returned, then poll the same `next` URL periodically to pick up new events. Narrow results with `since`/`until` (a time window — by default the last 7 days), a SCIM-style `filter` (all operators except `[ ]`), or a free-text `q` query (matches the actor/target name, target email, and exactly matches event ID, event type, target ID and target type). Use `sortOrder=DESCENDING` to return newest events first. `limit` defaults to 100 (maximum 1000).
- Audit log
- List contracts
- Returns a paginated list of the contracts in your organization. Use `filter` and `q` to narrow the results, and follow the `next` link (also provided in the `link` response header) to page through large result sets. **Required scope:** `Contracts.Read` (Read-only access to contracts)
- Contracts
- Get a contract
- Fetches a single contract by its SaaS Manager ID or by your own external ID. **Required scope:** `Contracts.Read` (Read-only access to contracts)
- Contracts
- List people
- Returns a paginated list of the people in your organization. Use `filter` and `q` to narrow the results, and follow the `next` link (also provided in the `link` response header) to page through large result sets. **Required scope:** `People.Read` (Read-only access to people and teams)
- People
- Get a person
- Fetches a single person by their SaaS Manager ID (a UUID) or by email address. If an email address matches more than one person a 409 Conflict is returned. **Required scope:** `People.Read` (Read-only access to people and teams)
- People
- List a person's applications
- Returns a paginated list of the applications a person has an account on, identified by their SaaS Manager ID or email address. If an email address matches more than one person a 409 Conflict is returned. **Required scope:** `People.Read` (Read-only access to people and teams)
- People
- Get a team
- Fetches a single team by ID, including its parent team ID (if any). **Required scope:** `People.Read` (Read-only access to people and teams)
- Teams
- List teams
- Returns all teams as a flat list; each entry carries its parent team ID (if any). **Required scope:** `People.Read` (Read-only access to people and teams)
- Teams
- Get the team hierarchy
- Returns all teams as a nested tree, starting from the root teams. **Required scope:** `People.Read` (Read-only access to people and teams)
- Teams
- List resource types
- Returns the SCIM 2.0 resource types this provider exposes (RFC 7643), in a SCIM `ListResponse` envelope. SCIM clients read this during discovery. Per the SCIM standard, supplying a `filter` is not permitted.
- SCIM
- Get the User resource type
- Returns the SCIM 2.0 "User" resource type definition (RFC 7643).
- SCIM
- List users
- Lists users with SaaS Manager access, following the SCIM 2.0 protocol (RFC 7644). Results are returned in a SCIM `ListResponse` envelope (`totalResults`, `itemsPerPage`, `startIndex`, `Resources`). Paging is SCIM-style — 1-based `startIndex` plus `count` (default and maximum 100) — not the cursor paging used elsewhere in the SaaS Manager API. An optional SCIM `filter` expression (e.g. `userName eq "john.doe@example.com"`) narrows the results.
- SCIM
- Get a user
- Fetches a single user by SCIM resource ID, following the SCIM 2.0 protocol (RFC 7644).
- SCIM
- List workflows
- Returns a paginated list of the published workflows in your organization, including each workflow's trigger and steps. Use `filter` and `q` to narrow the results, and follow the `next` link (also provided in the `link` response header) to page through large result sets. **Required scope:** `Workflows.Read` (Read-only access to workflow definitions)
- Workflows
- Get a workflow
- Returns the published workflow with the given ID, including its trigger and steps. The workflow is returned inside a one-item result page (empty if no workflow has that ID). **Required scope:** `Workflows.Read` (Read-only access to workflow definitions)
- Workflows
- List workflow runs
- Returns a paginated list of the runs (individual executions) of a workflow, including the run's context, current step states and any waiting actions. Use `filter` and `q` to narrow the results, and follow the `next` link to page through large result sets. **Variables:** workflow variable values are not returned by default. Pass the `variables` query parameter — a comma-separated list of variable IDs — to include those variables' values in each run's context. Reading the value of a **secret** (password) variable additionally requires the `Workflows.Runs.ReadSecrets` scope; requesting a secret variable without it returns `401`. **Required scope:** `Workflows.Runs.Read` (Read-only access to workflow runs)
- Workflows
- Get a workflow run
- Returns the run with the given ID for the workflow, including its context and step states, inside a one-item result page (empty if no run has that ID). The `variables` query parameter and the `Workflows.Runs.ReadSecrets` scope behave as for listing runs. **Required scope:** `Workflows.Runs.Read` (Read-only access to workflow runs)
- Workflows
- Authorize (Authorization Code flow)
- Redirects the user to the SaaS Manager consent screen. After the user consents, the browser is redirected back to `redirect_uri` with a `code` (and `state`) query parameter, which you then exchange for a token at `/connect/token`. This is a browser-redirect endpoint, not a JSON API call.
- Authentication
- Update selected details of an application
- Partially updates an application: only the fields present in the request body are changed. Omitting a field leaves it untouched, whereas sending an explicit `null` clears it. At least one field must be supplied. **Required scope:** `Apps.Write` (Write access to applications)
- Applications
- Update selected details of a device
- Partially updates a device: only the fields present in the request body are changed. Omitting a field leaves it untouched, whereas sending an explicit `null` clears it. At least one field must be supplied. **Required scope:** `Assets.Write` (Write access to devices)
- Devices
- Update selected details of a person
- Partially updates a person: only the fields present in the request body are changed. Omitting a field leaves it untouched, whereas sending an explicit `null` clears it. At least one field must be supplied. **Required scope:** `People.Write` (Write access to people and teams)
- People
- Update a user
- Applies a SCIM PATCH operation set to a user, following the SCIM 2.0 protocol (RFC 7644). The request body must use the SCIM PatchOp schema (`urn:ietf:params:scim:api:messages:2.0:PatchOp`) and supply one or more `add`/`replace`/ `remove` operations, each with a `path`. `userName` is immutable. EPM-managed and system-managed users cannot be modified (403). **Required scope:** `Users.Write` (Write access to users with access to SaaS Manager)
- SCIM
- Create an application
- Adds a managed application to your organization. Identify the underlying app with either `globalAppId` or `globalAppName` (exactly one is required). When supplying a name that does not match an app in the global catalog, supply `vendorName` and a new local vendor is created. Returns 409 if the application already exists. **Required scope:** `Apps.Write` (Write access to applications)
- Applications
- Create a user
- Creates a user, following the SCIM 2.0 protocol (RFC 7644). `userName` is required and must belong to a domain verified for your organization; it must not already be in use (a duplicate returns 409). Server-controlled fields (`id`, `meta`) are ignored on the request and set by the service. Returns 201 with the created user and a `Location` header. **Required scope:** `Users.Write` (Write access to users with access to SaaS Manager)
- SCIM
- Fire a signal
- Fires a named signal (for example an approval or rejection) on a workflow step that is currently waiting for input, allowing the run to continue. The valid signals for a waiting step — and the URL to call to fire each one — are listed under the step's `waiting.actions` in the run's response, so a client can simply `POST` to the supplied `href`. Returns `200` when the signal was fired and the run advanced. Returns `409` if the step is no longer waiting (for example it has already been signalled or has timed out), and `404` if the run or workflow cannot be found. **Required scope:** `Workflows.Runs.Execute` (Execute workflow run actions)
- Workflows
- Request an access token
- Exchanges client credentials (or an authorization code / refresh token) for an access token. The client ID and secret are sent via HTTP Basic authentication. The body is `application/x-www-form-urlencoded`. - **Client Credentials:** `grant_type=client_credentials` (optional `scope`). - **Authorization Code:** `grant_type=authorization_code` with `code` and `redirect_uri`. - **Refresh:** `grant_type=refresh_token` with `refresh_token` (requires the `offline_access` scope).
- Authentication
- Create or replace a device
- Creates a new device, or fully replaces an existing one when an ID is supplied (in the route or in the body). When creating, `hardwareVendor` and `modelName` are required. Assign the device to a person with `assignedToEmail` and to a location with `locationName` (a location is created if needed). `netPrice` is converted to your base currency. **Required scope:** `Assets.Write` (Write access to devices)
- Devices
- Create or update a contract
- Creates a contract, or updates an existing one matched by its `id` or your own `externalId`. Either all line items carry an `externalId` or none do. Set the business owner with `businessOwnerEmail`. **Required scope:** `Contracts.Write` (Write access to contracts)
- Contracts
- Create or replace a person
- Creates a new person, or fully replaces an existing one when an ID is supplied (in the route or in the body). When creating, the email address must not already be in use. Set the line manager with lineManagerId or lineManagerEmail. Team membership is replaced wholesale: supply either teams (by ID or name) or teamIds (not both) — omitting both removes the person's manually-assigned teams. **Required scope:** `People.Write` (Write access to people and teams)
- People
- Create or update a team
- Creates a new team when no ID is supplied (returns 201 with the created team), or updates an existing team's name and/or parent when an ID is supplied (returns 200). A team cannot be moved beneath one of its own descendants. **Required scope:** `People.Write` (Write access to people and teams)
- Teams
- Replace a user
- Replaces a user's attributes, following the SCIM 2.0 protocol (RFC 7644). Server-controlled fields (`id`, `meta`) are ignored on the request. EPM-managed and system-managed users, and users shared across multiple organizations, cannot be modified (403). **Required scope:** `Users.Write` (Write access to users with access to SaaS Manager)
- SCIM
1Password SaaS Manager integration, answered
- How do AI agents use 1Password SaaS Manager through Open Connector?
- Your user connects 1Password SaaS Manager once with one of its cataloged authentication methods. Open Connector stores the credential in an encrypted vault and exposes 1Password SaaS Manager tools to your agent over MCP or a typed API, with credentials injected server-side on each call.
- Is this a 1Password SaaS Manager MCP server?
- Yes. Open Connector can serve 1Password SaaS Manager as a named MCP server with a scoped allowlist and a per-user connection URL, so any MCP client can call 1Password SaaS Manager actions with credentials injected server-side.
- Where do 1Password SaaS Manager credentials live?
- In your own infrastructure. Open Connector keeps credentials in its own vault and injects them at call time, so they never leave your environment.
Give your agents 1Password SaaS Manager — keep the keys.
Open source, self-hostable, with 1Password SaaS Manager credentials that never leave your infrastructure. Run it from source today.