> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sideshift.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Capability reference

> Every MCP tool with the scope it needs and the risk it carries, generated from the live registry.

The complete list of tools the [MCP server](/mcp-server) exposes. The MCP page covers the
core set an agent reaches for most often; this is all of them.

Each tool is a typed map onto the same `/api/oauth/v1` surface documented in the API
reference, so the scope and tenant rules are identical. A tool never takes a company
selector: the company is fixed by the token.

## Risk levels

| Level         | Meaning                                                                                                                                             |
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| read          | No writes and no side effects.                                                                                                                      |
| write         | Mutates SideShift state, reversibly. No money movement, no outbound message.                                                                        |
| **sensitive** | Moves money, or sends an outbound email, direct message, or push. Rejected for sandbox and test tokens, and blocked entirely under `MCP_SAFE_MODE`. |

<Note>
  Looking for the exact input schema for one tool? Call `catalog_get_schema` against the MCP
  server rather than reading it here. The schema it returns is authoritative and always
  current, which a page cannot promise.
</Note>

## Tools

| Metric        | Count   |
| ------------- | ------- |
| Tools         | **246** |
| Read          | 109     |
| Write         | 81      |
| Sensitive     | 56      |
| Domains       | 38      |
| Scopes in use | 49      |

### Agencies

| Tool                           | Scope            | Risk  | What it does                                                                                                                                                                                                    |
| ------------------------------ | ---------------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `get_agency_cashflow_forecast` | `agencies:read`  | read  | Forecast the agency-wide payout cashflow across all clients/subaccounts: current- and next-month projected totals, total owed now, due-this-week amount, and a per-brand breakdown of upcoming creator payouts. |
| `get_agency_dashboard`         | `agencies:read`  | read  | Fetch the agency dashboard with clients, programs, creators, cycle progress, and summary metrics.                                                                                                               |
| `get_client_notes`             | `agencies:read`  | read  | Fetch dashboard notes for a client/subaccount.                                                                                                                                                                  |
| `get_contract_notes`           | `agencies:read`  | read  | Fetch notes for a creator contract.                                                                                                                                                                             |
| `get_creator_receipts`         | `agencies:read`  | read  | Fetch payment receipts for a creator across all wallets in the agency.                                                                                                                                          |
| `get_program_creators`         | `agencies:read`  | read  | Fetch creators for a specific program, including payment terms, bonus details, and post progress.                                                                                                               |
| `get_program_notes`            | `agencies:read`  | read  | Fetch dashboard notes for a program.                                                                                                                                                                            |
| `list_agency_creators`         | `agencies:read`  | read  | List all creators across the agency and its subaccounts, aggregated from contracts and wallet ledgers.                                                                                                          |
| `set_client_archived`          | `agencies:write` | write | Set the archive status of a client/subaccount.                                                                                                                                                                  |
| `update_client_notes`          | `agencies:write` | write | Update dashboard notes for a client/subaccount (max 2000 characters).                                                                                                                                           |
| `update_contract_notes`        | `agencies:write` | write | Update notes for a creator contract (max 2000 characters).                                                                                                                                                      |
| `update_program_notes`         | `agencies:write` | write | Update dashboard notes for a program (max 2000 characters).                                                                                                                                                     |
| `update_program_status`        | `agencies:write` | write | Update the dashboard status for a program.                                                                                                                                                                      |

### Agency billing

| Tool                         | Scope                  | Risk          | What it does                                                                                                                                                                                                                                                                                                                               |
| ---------------------------- | ---------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `assign_agency_free_client`  | `agency-billing:write` | write         | Assign the authenticated agency’s free included client for per-client billing: sets the OLDEST subaccount as the one client included free with the agency plan.                                                                                                                                                                            |
| `generate_subscription_link` | `agency-billing:write` | write         | Generate a Stripe Checkout URL to share with an agency subaccount client so it can start its own per-client subscription, then give that URL to the user.                                                                                                                                                                                  |
| `get_agency_billing`         | `agency-billing:read`  | read          | Read the authenticated company's invoicing/billing profile: company name, logo, email, phone, billing address, tax id and type, and brand color.                                                                                                                                                                                           |
| `get_agency_billing_state`   | `agency-billing:read`  | read          | Read the authenticated company's per-client billing configuration: whether it is an agency (isAgency), its parent agency id (parentCompanyId, for subaccounts), whether separate per-client subscriptions are enabled (separateAgencySubs), the free included client id (freeClientId), and the active-client seat cap (maxActiveClients). |
| `set_agency_separate_subs`   | `agency-billing:write` | write         | Turn per-client (separate) subscriptions ON or OFF for the authenticated agency.                                                                                                                                                                                                                                                           |
| `update_agency_billing`      | `agency-billing:write` | **sensitive** | Update the authenticated company's invoicing/billing profile (company name, email, phone, billing address, tax id/type, brand color) with a best-effort Stripe customer sync.                                                                                                                                                              |

### Analytics

| Tool                       | Scope            | Risk | What it does                                                                                                                                                                                                  |
| -------------------------- | ---------------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `get_analytics_accounts`   | `analytics:read` | read | Tracked social accounts (grouped by creator + platform) with per-account analytics (posts/views/engagement, averages, date range) + a cross-account summary.                                                  |
| `get_analytics_kpis`       | `analytics:read` | read | Dashboard KPI blocks for the company: programs (by status), contracts (by status), posts (totals), and creators (total + with active contracts).                                                              |
| `get_analytics_overview`   | `analytics:read` | read | The composite dashboard snapshot for the company: summary + snapshot totals (views/likes/comments/shares/bookmarks, engagement rate, unique creators), top posts, top creators, and a per-platform breakdown. |
| `get_analytics_timeseries` | `analytics:read` | read | Daily aggregated metrics time series (the data behind the Performance Overview chart): per-day views/likes/comments/shares/bookmarks + a summary.                                                             |
| `get_analytics_videos`     | `analytics:read` | read | The tracked-videos list: paginated post rows (metrics + live link) with a window summary.                                                                                                                     |

### Applicants

| Tool                                | Scope              | Risk          | What it does                                                                                                                                                                 |
| ----------------------------------- | ------------------ | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `accept_applicant`                  | `applicants:write` | write         | Accept one creator who applied to a SideShift job.                                                                                                                           |
| `bookmark_applicant`                | `applicants:write` | write         | Bookmark or unbookmark an applicant for quick access.                                                                                                                        |
| `decline_applicant`                 | `applicants:write` | write         | Decline one creator who applied to a SideShift job.                                                                                                                          |
| `export_applicants`                 | `applicants:read`  | read          | Export all applicants for a job as a CSV file with detailed profile data.                                                                                                    |
| `get_applicant_counts`              | `applicants:read`  | read          | Get per-status applicant counts for a job (Waiting Review, Viewed, Accepted, Declined, Bookmarked), honoring advanced filters.                                               |
| `get_applicant_top_posts`           | `applicants:read`  | read          | Get an applicant's top 3 most-viewed posts (TikTok, Instagram, etc).                                                                                                         |
| `list_applicants`                   | `applicants:read`  | read          | List applicants for a job with basic filtering by school year and grades.                                                                                                    |
| `list_applicants_advanced`          | `applicants:read`  | read          | List applicants for a job with advanced profile-dependent filtering, including training progress, social profiles, experiences, certifications, and repeat-applicant hiding. |
| `message_applicant`                 | `applicants:write` | **sensitive** | Send a new message to a creator who applied to a SideShift job.                                                                                                              |
| `resolve_applicant_support_channel` | `applicants:write` | **sensitive** | Resolve (create or re-use) the support channel for messaging an applicant.                                                                                                   |
| `update_applicant_status`           | `applicants:write` | write         | Update an applicant's status for a job (e.g., from "Waiting Review" to "Accepted" or "Declined").                                                                            |

### Applications

| Tool                            | Scope                | Risk          | What it does                                                                             |
| ------------------------------- | -------------------- | ------------- | ---------------------------------------------------------------------------------------- |
| `action_creator_invite`         | `applications:write` | write         | Approve or reject a creator invite.                                                      |
| `count_pending_handle_requests` | `applications:read`  | read          | Count the total number of pending handle requests across all of the company's campaigns. |
| `get_application`               | `applications:read`  | read          | Fetch a single application (handle request) by id.                                       |
| `list_applications`             | `applications:read`  | read          | List creator applications (handle requests) to the company's campaigns.                  |
| `list_creator_invites`          | `applications:read`  | read          | List all creator invites for the company.                                                |
| `update_application_status`     | `applications:write` | **sensitive** | Approve or reject a creator application.                                                 |

### Billing Handoff

| Tool                            | Scope          | Risk  | What it does                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------------------------- | -------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `check_billing_handoff_link`    | `billing:read` | read  | Check a billing handoff link by its code: whether the user has opened it, whether it expired, and the LIVE billing state (subscription active? wallet available/pending balance?) plus the change since the link was created (wallet balance delta, subscription activated).                                                                                                                                                                                                                                                                                                                                                                           |
| `generate_billing_handoff_link` | `billing:read` | write | Create a short-lived link + code that lets the USER (in their browser, logged in to SideShift) do one of the things agents can never do because they require paying or entering card details: pay for / manage the SideShift subscription (kind 'subscription'), add funds to the company wallet (kind 'wallet\_topup'), set up an agency subaccount's own per-client subscription (kind 'agency\_client\_subscription', for agencies with per-client billing — pass subaccount\_id), add a payment method / card (kind 'add\_card'), buy an extra job-posting slot (kind 'job\_post'), or buy more recruitment invites (kind 'recruitment\_invites'). |

### Billing: payment methods

| Tool                         | Scope           | Risk  | What it does                                                                                                          |
| ---------------------------- | --------------- | ----- | --------------------------------------------------------------------------------------------------------------------- |
| `list_payment_methods`       | `billing:read`  | read  | List the company's saved Stripe payment methods (cards and bank accounts), including which one is the default.        |
| `set_default_payment_method` | `billing:write` | write | Set the default payment method for the company and sync it across active subscriptions and open auto-charge invoices. |

### Billing: subscription

| Tool                  | Scope          | Risk | What it does                                                                                                                                                                                                                             |
| --------------------- | -------------- | ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `get_billing_history` | `billing:read` | read | Read the company's Stripe billing history: past invoices and payment intents (what the company has actually been charged — amounts, status, dates, hosted invoice URLs / PDFs), its default payment method, and its active subscription. |
| `get_subscription`    | `billing:read` | read | Read the company's current subscription status: whether it has an active subscription, plus a cryptographically-signed status payload.                                                                                                   |
| `preview_upgrade`     | `billing:read` | read | Preview what changing the company's current subscription to a different plan would cost, prorated — the amount due today, the new recurring price, and tax — BEFORE the user commits.                                                    |

### Brand Content Pages

| Tool                        | Scope                       | Risk  | What it does                                          |
| --------------------------- | --------------------------- | ----- | ----------------------------------------------------- |
| `create_brand_content_page` | `brand-content-pages:write` | write | Create a new draft brand content page.                |
| `get_brand_content_page`    | `brand-content-pages:read`  | read  | Fetch a single brand content page by id.              |
| `list_brand_content_pages`  | `brand-content-pages:read`  | read  | List the authenticated company's brand content pages. |
| `update_brand_content_page` | `brand-content-pages:write` | write | Update a brand content page.                          |

### Brand Verification

| Tool                            | Scope                     | Risk | What it does                                                                                                                                           |
| ------------------------------- | ------------------------- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `get_brand_verification_status` | `brand-verification:read` | read | Fetch the authenticated company's brand verification status, including verification tier, verification timestamp, and the latest verification request. |

### Campaign Templates

| Tool                      | Scope            | Risk | What it does                                                                                                                                                                                                                                                                                               |
| ------------------------- | ---------------- | ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `get_campaign_templates`  | `campaigns:read` | read | Fetch the SideShift campaign template library: the top-performing real campaigns per category (anonymized), with payment structures, requirements, settings, real performance benchmarks (creators, views, spend, effective CPM), linked marketplace-job configurations, and a playbook for adapting them. |
| `match_campaign_template` | `campaigns:read` | read | Pick THE single best proven campaign template for a brand using the same deterministic, success-scored matcher the AI onboarding flow uses — then copy it near-verbatim.                                                                                                                                   |

### Campaigns

| Tool                                | Scope             | Risk          | What it does                                                                                                                                                     |
| ----------------------------------- | ----------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `add_campaign_ghost_handle`         | `campaigns:write` | write         | Add one ghost social handle to any campaign, matching the dashboard Add Ghost Handle flow.                                                                       |
| `add_campaign_ghost_video`          | `campaigns:write` | write         | Add one ghost video to any campaign, matching the dashboard Add Ghost Video flow.                                                                                |
| `archive_campaign`                  | `campaigns:write` | **sensitive** | Archive a campaign.                                                                                                                                              |
| `bulk_add_campaign_ghost_handles`   | `campaigns:write` | write         | Bulk-add 1–500 ghost handles to any campaign, matching the dashboard bulk handle import.                                                                         |
| `bulk_add_campaign_ghost_videos`    | `campaigns:write` | write         | Bulk-add 1–500 ghost videos to any campaign, matching the dashboard bulk video import.                                                                           |
| `create_campaign`                   | `campaigns:write` | write         | Create a COMPLETE campaign (program) in ONE call — the same way the SideShift campaign wizard does: gather EVERYTHING first, confirm with the user, then create. |
| `duplicate_campaign`                | `campaigns:write` | write         | Create a copy of an existing campaign (its settings/payment structure are cloned into a new campaign).                                                           |
| `get_campaign`                      | `campaigns:read`  | read          | Fetch a single campaign by id, including its settings and stats.                                                                                                 |
| `get_payment_structure`             | `campaigns:read`  | read          | Read a campaign's payment structure (payout model, rates, bonuses).                                                                                              |
| `import_campaign_analytics_history` | `campaigns:write` | write         | Validate or import real cumulative daily observations captured before SideShift began tracking campaign posts.                                                   |
| `list_campaigns`                    | `campaigns:read`  | read          | List the authenticated company's campaigns (also called programs).                                                                                               |
| `update_campaign`                   | `campaigns:write` | **sensitive** | Update a campaign's editable fields — details (name, emoji, description, dates), requirements, settings (e.g.                                                    |

### Collections

| Tool                             | Scope            | Risk  | What it does                                                                                  |
| -------------------------------- | ---------------- | ----- | --------------------------------------------------------------------------------------------- |
| `delete_collection`              | `creators:write` | write | Delete a creator collection and remove it from all creators in it.                            |
| `remove_creator_from_collection` | `creators:write` | write | Remove a creator from a collection.                                                           |
| `update_collection`              | `creators:write` | write | Update a creator collection's name, description, or color, and optionally add creators to it. |

### Contracts

| Tool              | Scope             | Risk          | What it does                                                                       |
| ----------------- | ----------------- | ------------- | ---------------------------------------------------------------------------------- |
| `cancel_contract` | `contracts:write` | write         | Cancel a contract by id.                                                           |
| `create_contract` | `contracts:write` | **sensitive** | Create a contract that offers a campaign to a specific creator.                    |
| `get_contract`    | `contracts:read`  | read          | Fetch a single contract by id.                                                     |
| `list_contracts`  | `contracts:read`  | read          | List the company's contracts, optionally filtered by status, campaign, or creator. |

### Contracts (extended)

| Tool                            | Scope             | Risk          | What it does                                                                                                                                     |
| ------------------------------- | ----------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `generate_contract_preview_pdf` | `contracts:read`  | write         | Generate an unsigned preview PDF for a contract (for pre-signing review).                                                                        |
| `get_contract_content`          | `contracts:read`  | read          | Fetch the contract document content (custom override, program template, or default).                                                             |
| `get_contract_details`          | `contracts:read`  | read          | Fetch one contract by id, including basic metadata and status.                                                                                   |
| `get_contract_history`          | `contracts:read`  | read          | Fetch a contract's version history for a specific creator, including all changeLog entries and variant timestamps.                               |
| `get_contract_metrics`          | `contracts:read`  | read          | Fetch contract metrics including post performance (views, likes, comments, shares, bookmarks), payment terms, delivery %, and ledger line items. |
| `reject_contract`               | `contracts:write` | write         | Reject a pending or expired contract (company side).                                                                                             |
| `save_contract_signature`       | `contracts:write` | **sensitive** | Upload and save an e-signature (drawn, typed, or image) for a contract.                                                                          |
| `update_contract`               | `contracts:write` | **sensitive** | Update the common per-creator contract overrides without replacing the full payout or requirements objects.                                      |
| `update_contract_content`       | `contracts:write` | **sensitive** | Upsert or reset the per-creator contract document content override.                                                                              |
| `update_contract_fields`        | `contracts:write` | write         | Update contract state via allowlist operations.                                                                                                  |
| `update_contract_payment`       | `contracts:write` | **sensitive** | Update contract payment structure and/or requirements.                                                                                           |
| `update_contract_with_regen`    | `contracts:write` | **sensitive** | Atomically update payment terms/requirements AND regenerate the contract PDF (in a single transaction).                                          |

### Creators

| Tool                        | Scope            | Risk  | What it does                                                                                             |
| --------------------------- | ---------------- | ----- | -------------------------------------------------------------------------------------------------------- |
| `create_campaign_invite`    | `creators:write` | write | Create a shareable invite link that lets creators join a campaign.                                       |
| `create_creator_collection` | `creators:write` | write | Create a new creator collection (a saved group).                                                         |
| `get_creator`               | `creators:read`  | read  | Fetch a single creator by id (the company's view of them), including the company's private note history. |
| `get_creator_notes`         | `creators:read`  | read  | Fetch the company's private notes history for one creator, newest first.                                 |
| `list_creator_collections`  | `creators:read`  | read  | List the company's creator collections (saved groups of creators).                                       |
| `list_creators`             | `creators:read`  | read  | List creators associated with the company (optionally filtered by campaign or search).                   |

### Creator discovery

| Tool                    | Scope            | Risk  | What it does                                                     |
| ----------------------- | ---------------- | ----- | ---------------------------------------------------------------- |
| `create_creator_invite` | `creators:write` | write | Create a shareable invite link for creators to join the company. |

### Discover

| Tool                             | Scope            | Risk          | What it does                                                                                                                                                                                     |
| -------------------------------- | ---------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `create_discover_cal_host`       | `discover:write` | write         | Create (or relabel) the authenticated company's secondary Discover calendar host, used as a second bookable host on your offer.                                                                  |
| `delete_discover_offer`          | `discover:write` | write         | Remove the company's Discover marketplace offer (unpublish + delete).                                                                                                                            |
| `get_discover_lead_submission`   | `discover:read`  | read          | Fetch one of the authenticated company's Discover lead-form submissions by id.                                                                                                                   |
| `get_discover_offer`             | `discover:read`  | read          | Read the authenticated company's Discover marketplace offer/listing (what creators see when browsing Discover).                                                                                  |
| `get_discover_offer_by_id`       | `discover:read`  | read          | Fetch a single published Discover offer by its id.                                                                                                                                               |
| `list_discover_lead_submissions` | `discover:read`  | read          | List the authenticated company's qualified Discover lead-form submissions (the agency-side inbox of brands that submitted a lead form or messaged your offer).                                   |
| `save_discover_offer`            | `discover:write` | write         | Use this when the user asks to create, publish, save, edit, or update their Discover marketplace offer/listing.                                                                                  |
| `send_discover_lead_reminders`   | `discover:write` | **sensitive** | Fan out CRM status-reminder prompts to the authenticated company's Discover leads (the 'send-status-reminders' agency-inbox action).                                                             |
| `send_discover_message`          | `discover:write` | **sensitive** | Send a message to a Discover agency (brand→agency outreach).                                                                                                                                     |
| `submit_discover_lead_form`      | `discover:write` | **sensitive** | Submit a lead form to another company's Discover offer (brand→agency outreach).                                                                                                                  |
| `update_discover_lead_status`    | `discover:write` | write         | Advance one of the authenticated company's Discover leads through the CRM pipeline (new → contacted → call\_booked → proposal\_sent → won → lost → unqualified → nurture) with an optional note. |
| `upsert_discover_offer`          | `discover:write` | write         | BACKWARDS-COMPATIBILITY TOOL for integrations already calling `upsert_discover_offer`.                                                                                                           |

### Disputes

| Tool                     | Scope            | Risk          | What it does                                                    |
| ------------------------ | ---------------- | ------------- | --------------------------------------------------------------- |
| `get_dispute`            | `disputes:read`  | read          | Fetch a single dispute by id, including its evidence.           |
| `list_disputes`          | `disputes:read`  | read          | List the authenticated company's creator-payment disputes.      |
| `prepare_dispute_upload` | `disputes:write` | write         | Get signed upload URLs for counter-evidence files on a dispute. |
| `resolve_dispute`        | `disputes:write` | **sensitive** | Resolve a dispute.                                              |

### Integrations

| Tool                      | Scope                | Risk          | What it does                                                                                              |
| ------------------------- | -------------------- | ------------- | --------------------------------------------------------------------------------------------------------- |
| `delete_slack_template`   | `integrations:write` | write         | Delete a Slack workflow template by ID.                                                                   |
| `get_agency_slack`        | `integrations:read`  | read          | Fetch Slack integration data across all companies in an agency (parent-only).                             |
| `get_slack_channels`      | `integrations:read`  | read          | List the authenticated company's Slack bot channels (with cache fallback on rate-limit).                  |
| `get_slack_integration`   | `integrations:read`  | read          | Fetch the authenticated company's Slack integration config (bot token redacted, connected flag included). |
| `get_slack_templates`     | `integrations:read`  | read          | List Slack workflow templates for a company.                                                              |
| `remove_agency_workflows` | `integrations:write` | write         | Remove specific workflows from a subaccount's Slack config (parent-only).                                 |
| `save_slack_channel`      | `integrations:write` | write         | Save the selected agency-lead-reminder Slack channel for the authenticated company (integrations:write).  |
| `save_slack_integration`  | `integrations:write` | write         | Save or remove the authenticated company's Slack integration config (integrations:write).                 |
| `save_slack_template`     | `integrations:write` | write         | Save a new Slack workflow template for a company.                                                         |
| `send_test_workflow`      | `integrations:write` | **sensitive** | Test a Slack/Discord workflow by sending a sample payload via the configured webhook.                     |
| `start_slack_oauth`       | `integrations:write` | write         | Initiate Slack OAuth flow and get an authorization URL.                                                   |
| `sync_agency_slack`       | `integrations:write` | write         | Bulk merge/replace Slack webhooks and workflows across agency subaccounts (parent-only).                  |

### Invites

| Tool            | Scope            | Risk  | What it does                                                                                            |
| --------------- | ---------------- | ----- | ------------------------------------------------------------------------------------------------------- |
| `list_invites`  | `creators:read`  | read  | List the company's campaign/program invite links (token, target campaign, usage, expiry), newest first. |
| `revoke_invite` | `creators:write` | write | Revoke (delete) a campaign invite link so it can no longer be used to join.                             |

### Invoices

| Tool             | Scope            | Risk          | What it does                                                                  |
| ---------------- | ---------------- | ------------- | ----------------------------------------------------------------------------- |
| `create_invoice` | `invoices:write` | **sensitive** | Create a new invoice for a customer.                                          |
| `get_invoice`    | `invoices:read`  | read          | Fetch a single invoice by id.                                                 |
| `list_invoices`  | `invoices:read`  | read          | List the company's invoices, optionally filtered by status or customer email. |
| `send_invoice`   | `invoices:write` | **sensitive** | Send (email) an existing invoice to its customer.                             |
| `void_invoice`   | `invoices:write` | **sensitive** | Void an existing invoice (cancels it so it can no longer be paid).            |

### Invoices (extended)

| Tool                          | Scope            | Risk          | What it does                                                                                                                                                                          |
| ----------------------------- | ---------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `get_invoice_payment_details` | `invoices:read`  | read          | Fetch the underlying Stripe or payment-provider payment record for a paid invoice (status, card brand/last4, amounts, refundable/voidable flags), normalized into one payment object. |
| `refund_invoice`              | `invoices:write` | **sensitive** | Refund (fully or partially) a paid invoice: debits the company wallet and issues a live refund.                                                                                       |
| `send_invoice_receipt`        | `invoices:write` | **sensitive** | Email the receipt for a paid invoice to its customer.                                                                                                                                 |
| `stop_invoice_reminders`      | `invoices:write` | write         | Disable the automated payment-reminder emails for an invoice (sets sendReminders to false).                                                                                           |
| `verify_invoice_payment`      | `invoices:read`  | **sensitive** | Confirm and settle an invoice payment, idempotently transitioning it to paid (or pending for bank settlement) and crediting the company wallet.                                       |

### Jobs

| Tool                         | Scope        | Risk          | What it does                                                                                                                                                                                                                                                                                                                               |
| ---------------------------- | ------------ | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `boost_job`                  | `jobs:write` | **sensitive** | Apply one or more boosts to one of your jobs to increase its visibility: "topFeed" (top of the creator feed for 7 days — 2 credits / $250), "staffPick" (featured badge for 7 days — 1 credit / $125), or "push" (a push notification sent to creators — 4 credits / \$500, one capped slot per day so it may be queued for a later send). |
| `create_job`                 | `jobs:write` | write         | Create, post, or publish a NEW SideShift job listing in the Creator Marketplace.                                                                                                                                                                                                                                                           |
| `get_job`                    | `jobs:read`  | read          | Fetch one of the company's jobs by id.                                                                                                                                                                                                                                                                                                     |
| `list_job_duplicate_targets` | `jobs:read`  | read          | List companies a job can be duplicated into.                                                                                                                                                                                                                                                                                               |
| `list_jobs`                  | `jobs:read`  | read          | List the company's job postings (newest first).                                                                                                                                                                                                                                                                                            |
| `repost_job`                 | `jobs:write` | write         | Repost an expired job to refresh it in the feed for another 30 days.                                                                                                                                                                                                                                                                       |
| `update_job`                 | `jobs:write` | write         | Use this exact tool when the user asks to edit, change, or update an existing SideShift job.                                                                                                                                                                                                                                               |
| `update_job_status`          | `jobs:write` | write         | Archive, unarchive, or delete a job by ID.                                                                                                                                                                                                                                                                                                 |
| `upsert_job`                 | `jobs:write` | write         | BACKWARDS-COMPATIBILITY TOOL for integrations already calling `upsert_job`.                                                                                                                                                                                                                                                                |

### Messages

| Tool                      | Scope            | Risk          | What it does                                                                                  |
| ------------------------- | ---------------- | ------------- | --------------------------------------------------------------------------------------------- |
| `add_conversation_member` | `messages:write` | **sensitive** | Add a member to a GROUP conversation.                                                         |
| `create_conversation`     | `messages:write` | **sensitive** | Create a new conversation.                                                                    |
| `forward_message`         | `messages:write` | **sensitive** | Forward a message's content from a conversation to its other member, using the company token. |
| `get_messages`            | `messages:read`  | read          | List messages in a DM conversation.                                                           |
| `leave_conversation`      | `messages:write` | **sensitive** | Leave a GROUP conversation as the company.                                                    |
| `list_conversations`      | `messages:read`  | read          | List the company's DM conversations ONLY — this is NOT the main inbox.                        |
| `react_to_message`        | `messages:write` | **sensitive** | Add an emoji reaction to a message in a conversation.                                         |
| `rename_conversation`     | `messages:write` | **sensitive** | Rename a conversation's group channel.                                                        |
| `send_message`            | `messages:write` | **sensitive** | Send a direct message to a creator.                                                           |

### Oauth Settings

| Tool                     | Scope            | Risk          | What it does                                                                                                                                                                                     |
| ------------------------ | ---------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `get_company`            | `settings:read`  | read          | Read the company profile (read-only view).                                                                                                                                                       |
| `get_company_billing`    | `settings:read`  | read          | Read the company's invoicing/billing profile — the identity shown on the invoices it issues: company name, logo, email, phone, billing address, tax id and type, and brand color.                |
| `get_settings`           | `settings:read`  | read          | Read the company's API-visible settings (profile, contact, socials, signing).                                                                                                                    |
| `update_company_billing` | `settings:write` | **sensitive** | Update the company's invoicing/billing profile (company name, email, phone, billing address, tax id/type, brand color) shown on the invoices it issues, with a best-effort Stripe customer sync. |
| `update_settings`        | `settings:write` | **sensitive** | Update the company's settings.                                                                                                                                                                   |

### Payouts

| Tool                   | Scope           | Risk          | What it does                                                                                                                      |
| ---------------------- | --------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `execute_payouts`      | `payouts:write` | **sensitive** | Execute (or dry-run) contract payouts for the listed contracts.                                                                   |
| `get_payout_stats`     | `payouts:read`  | read          | Read the company wallet balance + lifetime payout summary.                                                                        |
| `list_payouts`         | `payouts:read`  | read          | List completed/historical payouts with a summary aggregate, filterable by status, type, creator, contract, date range, or reason. |
| `list_pending_payouts` | `payouts:read`  | read          | List payouts that are pending/owed (what the company would pay next), with a summary aggregate.                                   |
| `quick_pay`            | `payouts:write` | **sensitive** | Send a one-off quick payment to a creator (by email) for an ad-hoc amount or set of line items.                                   |

### Payouts (extended)

| Tool                           | Scope           | Risk          | What it does                                                                                                                                 |
| ------------------------------ | --------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `execute_custom_bonus`         | `payouts:write` | **sensitive** | Send a wallet-funded custom bonus to a creator for an arbitrary amount.                                                                      |
| `execute_one_time_payout`      | `payouts:write` | **sensitive** | Send a wallet-funded one-time payout to a creator for an arbitrary amount.                                                                   |
| `get_bonus_milestone_dates`    | `payouts:read`  | read          | Read the dates each bonus milestone was crossed for a contract, from daily-snapshot data.                                                    |
| `get_payout_breakdown`         | `payouts:read`  | read          | Read the payment-breakdown details for a payout of a contract (the components that make up the amount).                                      |
| `get_payout_contracts_summary` | `payouts:read`  | read          | Read the aggregate total-owed summary for the company: total owed, cycle totals, the continued-performance breakdown, and contract counts.   |
| `ignore_payout_cycle`          | `payouts:write` | **sensitive** | Mark a payment cycle's posts as cycle-skipped on a contract so they no longer count toward owed.                                             |
| `list_payout_contracts`        | `payouts:read`  | read          | List the payout-table contracts for the company: each active contract with its owed-this-cycle amount, delivered/required posts, and status. |
| `recalculate_payout`           | `payouts:write` | **sensitive** | Recompute a single contract's owed-this-cycle transfer row (amount + breakdown) from current posts/metrics.                                  |
| `retry_reversed_payout`        | `payouts:write` | **sensitive** | Re-attempt a previously reversed payout, identified by its ledger-entry id.                                                                  |
| `set_payout_start`             | `payouts:write` | **sensitive** | Set (or clear) a contract's per-creator payout start date.                                                                                   |

### Posts

| Tool                           | Scope         | Risk          | What it does                                                                                                          |
| ------------------------------ | ------------- | ------------- | --------------------------------------------------------------------------------------------------------------------- |
| `bulk_set_post_analytics_tags` | `posts:write` | write         | Add, remove, or replace analytics tags across many posts at once.                                                     |
| `export_posts`                 | `posts:read`  | read          | Export the company's posts as CSV (optionally filtered, or limited to specific post ids).                             |
| `get_post`                     | `posts:read`  | read          | Fetch a single tracked post by id, with its latest metrics.                                                           |
| `get_post_metrics`             | `posts:read`  | read          | Read a post's daily metrics time-series (views/likes/comments/shares/bookmarks + daily deltas).                       |
| `get_post_rescrape_status`     | `posts:read`  | read          | Read the status of a queued post re-scrape (queued/running/succeeded/failed + progress + result).                     |
| `list_posts`                   | `posts:read`  | read          | List the company's tracked posts, optionally filtered by campaign, platform, creator, or date range.                  |
| `set_post_analytics_hidden`    | `posts:write` | write         | Hide a post from analytics (excluded from analytics aggregates/exports) or unhide it.                                 |
| `set_post_analytics_tags`      | `posts:write` | write         | Replace, add, or remove a post's analytics tags (free-form labels, max 50 × 60 chars).                                |
| `set_post_approval_status`     | `posts:write` | **sensitive** | Approve, reject, or clear the approval status of a post.                                                              |
| `set_post_deletion`            | `posts:write` | write         | Mark a post as deleted (excluded from analytics + payout calculations) or clear that status.                          |
| `trigger_post_rescrape`        | `posts:write` | **sensitive** | SENSITIVE: queue a real external re-scrape of a contract's posts (re-fetches live metrics from the source platforms). |

### Programs and campaigns

| Tool              | Scope             | Risk  | What it does                                                               |
| ----------------- | ----------------- | ----- | -------------------------------------------------------------------------- |
| `delete_campaign` | `campaigns:write` | write | Permanently delete a campaign and cascade-cancel all associated contracts. |

### Quick-Pay

| Tool                              | Scope             | Risk          | What it does                                                                                                                                                               |
| --------------------------------- | ----------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `action_quickpay_approval`        | `quick-pay:write` | **sensitive** | Approve or reject a pending quick-pay approval request.                                                                                                                    |
| `cancel_quickpay`                 | `quick-pay:write` | **sensitive** | Cancel a pending Quick Pay / Claim Link payment (by its wallet ledger entry id) and refund the held amount back to the company wallet.                                     |
| `cancel_quickpay_schedule`        | `quick-pay:write` | write         | Cancel a recurring schedule (soft-delete: status becomes cancelled, no future runs fire).                                                                                  |
| `create_quickpay_approval`        | `quick-pay:write` | **sensitive** | Create a pending quick-pay approval request for a batch of recipients.                                                                                                     |
| `create_quickpay_claim_link`      | `quick-pay:write` | **sensitive** | Create a shareable claim link for a given amount that a recipient can redeem.                                                                                              |
| `create_quickpay_draft`           | `quick-pay:write` | write         | Create a pending quick-pay draft (parent-agency only) with a list of recipients.                                                                                           |
| `create_quickpay_schedule`        | `quick-pay:write` | **sensitive** | Create a recurring payment schedule (weekly/biweekly/monthly) that will pay the listed recipients on each run.                                                             |
| `create_quickpay_template`        | `quick-pay:write` | write         | Create a reusable quick-pay template (a named set of recipients).                                                                                                          |
| `delete_quickpay_draft`           | `quick-pay:write` | write         | Delete a pending quick-pay draft.                                                                                                                                          |
| `delete_quickpay_template`        | `quick-pay:write` | write         | Delete a quick-pay template.                                                                                                                                               |
| `get_quickpay_approval_config`    | `quick-pay:read`  | read          | Read the company's quick-pay approval configuration (whether approvals are required and the approver/requester roles).                                                     |
| `get_recent_recipients`           | `quick-pay:read`  | read          | List the 10 most recent unique quick-pay recipients for the company (rolled up from the wallet ledger).                                                                    |
| `list_pending_quickpay`           | `quick-pay:read`  | read          | List pending quick-pay / claim-link payments waiting for an email address, with the net total owed.                                                                        |
| `list_quickpay_approvals`         | `quick-pay:read`  | read          | List the company's PENDING quick-pay approval requests (newest first).                                                                                                     |
| `list_quickpay_drafts`            | `quick-pay:read`  | read          | List pending quick-pay drafts for the company (parent-agency accounts only).                                                                                               |
| `list_quickpay_schedules`         | `quick-pay:read`  | read          | List the company's active and paused recurring quick-pay schedules (newest first).                                                                                         |
| `list_quickpay_templates`         | `quick-pay:read`  | read          | List the company's quick-pay payment templates (reusable recipient sets).                                                                                                  |
| `lookup_quickpay_user`            | `quick-pay:read`  | read          | Check whether a SideShift user exists for an email and return basic recipient info (name, profile picture).                                                                |
| `preview_quickpay`                | `quick-pay:read`  | read          | Preview (dry-run) a quick pay to a recipient BEFORE any money moves: validates the email + line items, resolves whether the recipient already has a SideShift account (vs. |
| `send_quickpay_draft`             | `quick-pay:write` | **sensitive** | Approve and SEND a pending draft: each recipient is paid as a real quick pay.                                                                                              |
| `update_quickpay_approval_config` | `quick-pay:write` | write         | Update the quick-pay approval configuration (Owner only): enable/disable approvals and set the approver/requester roles.                                                   |
| `update_quickpay_draft`           | `quick-pay:write` | write         | Edit a pending quick-pay draft's recipients.                                                                                                                               |
| `update_quickpay_schedule`        | `quick-pay:write` | **sensitive** | Update a recurring schedule (name, frequency, day, recipients, status, or requiresApproval).                                                                               |
| `update_quickpay_template`        | `quick-pay:write` | write         | Update a quick-pay template's name and/or recipients.                                                                                                                      |

### Recruit

| Tool                            | Scope           | Risk          | What it does                                                                                                                                                                                     |
| ------------------------------- | --------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `find_creators_for_campaign`    | `recruit:read`  | read          | Browse SideShift's creator marketplace to build a professional outreach shortlist for a campaign or creator-marketing job.                                                                       |
| `get_bookmarked_recruits`       | `recruit:read`  | read          | Fetch the list of user IDs bookmarked for a specific job.                                                                                                                                        |
| `get_creator_outreach_profile`  | `recruit:read`  | read          | Fetch one creator-marketplace candidate by ID using the same scanner-friendly professional projection as `find_creators_for_campaign`.                                                           |
| `get_recruit_candidate`         | `recruit:read`  | read          | LEGACY COMPATIBILITY TOOL: existing clients may keep calling this rich-profile operation, but agents MUST use `get_creator_outreach_profile` for ordinary outreach workflows.                    |
| `remove_creator_from_shortlist` | `recruit:write` | write         | Remove one creator-marketplace candidate from the shortlist for a specific SideShift job.                                                                                                        |
| `search_recruit_students`       | `recruit:read`  | read          | LEGACY COMPATIBILITY TOOL: existing clients may keep calling this rich-profile operation, but agents handling ordinary creator-discovery requests MUST use `find_creators_for_campaign` instead. |
| `send_recruit_invite`           | `recruit:write` | **sensitive** | Send a recruitment invite to a candidate.                                                                                                                                                        |
| `shortlist_creator`             | `recruit:write` | write         | Save one creator-marketplace candidate to the shortlist for a specific SideShift job.                                                                                                            |
| `update_recruit_bookmark`       | `recruit:write` | write         | Add or remove a recruit bookmark for a user/job pair.                                                                                                                                            |

### Settings

| Tool                   | Scope            | Risk          | What it does                                                                                                          |
| ---------------------- | ---------------- | ------------- | --------------------------------------------------------------------------------------------------------------------- |
| `create_company`       | `settings:write` | write         | Create an agency SUBACCOUNT under your own company (the token tenant).                                                |
| `get_agency_tree`      | `settings:read`  | read          | Fetch the full agency tree for the authenticated user's active company, including all subaccounts and parent agency.  |
| `invite_team_members`  | `settings:write` | **sensitive** | Invite team members to a company or copy existing members.                                                            |
| `join_companies`       | `settings:write` | write         | Re-affirm the authenticated user's membership of the token's company.                                                 |
| `list_companies`       | `settings:read`  | read          | List the authenticated user's accessible companies with Pro/plan status, agency relationships, and subscription info. |
| `sync_company_name`    | `settings:write` | write         | Sync company name and logo to all programs, jobs, and creator experiences associated with the company.                |
| `update_company_niche` | `settings:write` | write         | Update a company's niche and propagate it to all associated jobs.                                                     |
| `update_signed_name`   | `settings:write` | write         | Update a company's signed name used for invoicing and contracts.                                                      |

### Support Channels

| Tool                           | Scope            | Risk          | What it does                                                                                                                                                                           |
| ------------------------------ | ---------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `get_support_channel_messages` | `messages:read`  | read          | List messages in a support channel — the PRIMARY employer↔creator conversation type (use `list_support_channels` to find the channel id; DM conversations use `get_messages` instead). |
| `list_inbox`                   | `messages:read`  | read          | The company's merged conversation inbox — START HERE for any 'show my conversations / recent messages / who wrote to us' request.                                                      |
| `list_support_channels`        | `messages:read`  | read          | List the company's support channels — the PRIMARY employer↔creator conversation type (most creator communication happens here, not in DM conversations).                               |
| `send_support_channel_message` | `messages:write` | **sensitive** | Send a new message in an existing SideShift support channel.                                                                                                                           |

### Team

| Tool                        | Scope        | Risk          | What it does                                                                                  |
| --------------------------- | ------------ | ------------- | --------------------------------------------------------------------------------------------- |
| `accept_invite`             | `team:write` | write         | Accept a team invitation by code.                                                             |
| `add_team_member`           | `team:write` | write         | Add a user to the company's team.                                                             |
| `create_team_invite`        | `team:write` | write         | Create a new pending team invitation.                                                         |
| `get_invite_preview`        | `team:read`  | read          | Fetch a team invitation preview by code (public, no auth required).                           |
| `list_team_invites`         | `team:read`  | read          | List all pending team invitations for the company.                                            |
| `list_team_members`         | `team:read`  | read          | List the authenticated company's team members with roles, permissions, and email preferences. |
| `remove_team_member`        | `team:write` | write         | Remove a user from the company's team by email.                                               |
| `send_team_invite`          | `team:write` | **sensitive** | Resend a team invitation email to a pending invitee.                                          |
| `update_member_permissions` | `team:write` | write         | Update a team member's role, permissions, and email preferences.                              |

### Verifications

| Tool               | Scope               | Risk | What it does                                                                                |
| ------------------ | ------------------- | ---- | ------------------------------------------------------------------------------------------- |
| `get_verification` | `verification:read` | read | Get one identity verification by ID, including its current status and any required actions. |

### Video Submissions

| Tool                      | Scope                     | Risk          | What it does                                                                                                                      |
| ------------------------- | ------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `delete_video_submission` | `video-submissions:write` | write         | Delete a creator video submission and the posts it created.                                                                       |
| `list_video_submissions`  | `video-submissions:read`  | read          | List creator video submissions for the company's campaigns, optionally filtered by status, contract, program, or reviewable-only. |
| `review_video_submission` | `video-submissions:write` | **sensitive** | Approve, reject, or request revisions on a creator video submission, with optional feedback.                                      |

### Wallet

| Tool                      | Scope          | Risk          | What it does                                                                                                                                                                                                                      |
| ------------------------- | -------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `get_agency_balance`      | `wallet:read`  | read          | Read aggregated wallet balance + pending payouts across the agency (parent company + subaccounts).                                                                                                                                |
| `get_wallet_balance`      | `wallet:read`  | read          | Read the company wallet balance (balance in cents and dollars, USD).                                                                                                                                                              |
| `get_wallet_summary`      | `wallet:read`  | read          | Read the company wallet available + pending balance summary (USD).                                                                                                                                                                |
| `list_wallet_ledger`      | `wallet:read`  | read          | List the company wallet ledger entries (top-ups, payouts, transfers) enriched with profiles, withdrawals, and pending-payment claim status, plus a lifetime summary.                                                              |
| `transfer_wallet_balance` | `wallet:write` | **sensitive** | Move wallet funds between YOUR agency wallet and one of your OWN subaccount wallets — the classic agency flow of funding a subaccount before running its payouts, or sweeping a subaccount’s leftover balance back to the agency. |
