# Scopes

> Every scope a credential can carry, generated from the permission catalog the app's roles use.

A scope is one permission, written `<area>.<action>`, such as
`companies.view`. There is one list of them. The app's roles, API keys, OAuth
sign-in, MCP tools and this page all use the same names, and this page is
generated from that list every time the site is built.

## How scopes combine

- **API key:** the scopes ticked on the key. In the preview, a key is also
  narrowed to what its owner's role allows right now.
- **OAuth sign-in (preview):** the scopes the app asked for and the person allowed,
  narrowed by that person's role, checked again on every request.

Asking for a scope your role does not have is not an error. The consent page
shows it as unavailable, and it is not granted.

In the OAuth preview, an app that asks for no scope Funnel One knows gets a
small default: `agent.use` for the MCP server, and `companies.view` and
`contacts.view` for the REST API.

## Opportunities

Opportunities use `opportunities.*` everywhere outside the app: on keys, at
sign-in, in MCP tool requirements and in these docs.

## Scopes that matter first

| Scope | Needed for |
|---|---|
| `leads.manage` | `POST /api/v1/leads` |
| `motions.start` | `POST /api/v1/motions/{id}/start` |
| `agent.use` | Every MCP tool (preview) |
| `companies.view` | The MCP tools `search_companies` and `get_company` (preview) |

## All scopes

88 scopes, generated from the app's permission catalog when this site was built.

| Scope | What it allows |
|---|---|
| `companies.view` | Companies · View |
| `companies.edit` | Companies · Edit |
| `companies.delete` | Companies · Delete |
| `companies.export` | Companies · Export |
| `companies.bulk` | Companies · Bulk edit |
| `contacts.view` | Contacts · View |
| `contacts.edit` | Contacts · Edit |
| `contacts.delete` | Contacts · Delete |
| `contacts.export` | Contacts · Export |
| `contacts.bulk` | Contacts · Bulk edit |
| `opportunities.view` | Opportunities · View |
| `opportunities.edit` | Opportunities · Edit |
| `opportunities.delete` | Opportunities · Delete |
| `opportunities.export` | Opportunities · Export |
| `opportunities.bulk` | Opportunities · Bulk edit |
| `routing.view` | Routing · View |
| `routing.manage` | Routing · Manage |
| `assignment.override` | Assignment · Override |
| `segments.view` | Segments · View |
| `segments.manage` | Segments · Manage |
| `scoring.view` | Scoring · View |
| `scoring.manage` | Scoring · Manage |
| `taxonomy.view` | Taxonomy · View |
| `taxonomy.manage` | Taxonomy · Manage |
| `fields.view` | Fields · View |
| `fields.manage` | Fields · Manage |
| `lifecycle.view` | Lifecycle · View |
| `lifecycle.manage` | Lifecycle · Manage |
| `plays.view` | Plays · View |
| `plays.run` | Plays · Run |
| `plays.manage` | Plays · Manage |
| `orchestration.view` | Orchestration · View |
| `orchestration.manage` | Orchestration · Manage |
| `governance.view` | Governance · View |
| `governance.manage` | Governance · Manage |
| `forms.view` | Forms · View |
| `forms.manage` | Forms · Manage |
| `forms.manage_own` | Manage your own 1:1 booking forms |
| `meetings.view` | Meetings · View |
| `meetings.manage` | Meetings · Manage |
| `meetings.book` | Meetings · Book |
| `calls.view` | Calls · View |
| `calls.config` | Calls · Configure |
| `marketing.view` | Marketing · View |
| `marketing.manage` | Marketing · Manage |
| `templates.manage` | Templates · Manage |
| `subscriptions.manage` | Subscriptions · Manage |
| `sender.manage` | Sender · Manage |
| `content.view` | Content · View |
| `content.manage` | Content · Manage |
| `writer.use` | Writer · Use |
| `records.touch` | Fix small details and add notes |
| `leads.view` | Leads · View |
| `leads.manage` | Leads · Manage |
| `market.search` | Run new Market searches, which spend credits |
| `motions.start` | Start a motion from the API |
| `signals.view` | Signals · View |
| `signals.manage` | Signals · Manage |
| `collectors.view` | Collectors · View |
| `collectors.run` | Collectors · Run |
| `collectors.manage` | Collectors · Manage |
| `visitors.view` | Visitors · View |
| `sitekeys.manage` | Site keys · Manage |
| `data.export` | Data · Export |
| `integrations.view` | Integrations · View |
| `integrations.manage` | Integrations · Manage |
| `experiments.view` | Experiments · View |
| `experiments.manage` | Experiments · Manage |
| `members.view` | Members · View |
| `members.manage` | Members · Manage |
| `roles.view` | Roles · View |
| `roles.manage` | Roles · Manage |
| `workforce.view` | Workforce · View |
| `workforce.manage` | Workforce · Manage |
| `workforce.availability` | Workforce · Set availability |
| `settings.view` | Settings · View |
| `settings.manage` | Settings · Manage |
| `agent.config` | Agent · Configure |
| `agent.use` | Agent · Use |
| `api.manage` | Manage API keys, API logs and connected apps |
| `external_agents.manage` | Invite and manage external agents |
| `coach.self` | Coach your own F1 |
| `coach.teammates` | Coach any AI teammate |
| `coach.sales_teammates` | Coach the sales teammates |
| `coach.marketing_teammates` | Coach the marketing teammates |
| `billing.view` | Billing · View |
| `billing.manage` | Billing · Manage |
| `danger.admin` | Danger zone · Admin |

Source: https://dev.funnelone.ai/get-started/scopes/
