Skip to content
Docs

Type to search. Arrow keys to move, Enter to open, Escape to close.

Developers

MCP server

SIGNL exposes a Model Context Protocol server so an AI client (Claude, an IDE, or your own agent) can read your workspace and act in it. Connect with OAuth, or paste an API key.

117 tools · 5 scopes

Endpoint

MCP endpoint

POST

/api/mcp: streamable HTTP, JSON-RPC. Send Authorization: Bearer <token>.

Discovery

GET

/.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server. An unauthenticated request to the endpoint returns 401 with a WWW-Authenticate header pointing at the first of these.

Connecting with OAuth

Authorization code with PKCE (S256, required; there is no plain option). Clients are public: no client secret is issued, and PKCE is what authenticates the exchange.

1. Identify your client

two ways

Preferred: host a Client ID Metadata Document and pass its https:// URL as your client_id. The document’s own client_id must equal the URL it was fetched from. Otherwise: POST /oauth/register (RFC 7591) with redirect_uris and get a client_id back.

2. Authorize

GET /oauth/authorize

Open in a browser. The person approves the scopes while signed in to SIGNL. Your redirect_uri must match one you registered exactly, with no prefix matching and no normalisation.

3. Exchange the code

POST /oauth/token

Form-encoded, with code_verifier and the same redirect_uri. Codes are single-use and short-lived; a replay is refused. Returns an access token and a refresh token.

Redirect URIs

https://, any custom scheme (vscode://, cursor://), or http:// on localhost / 127.0.0.1 on any port. Plaintext http to any other host is refused, because the authorization code would cross the network in clear.

Scopes

A token only sees the tools its scopes allow: write tools are not registered on the server for a read-only token, so they do not appear in tools/list at all.

signl:read

scope

Read leads, calls, deals, forms, automations and reporting. Every read tool.

signl:write

scope

Create and update records: notes, tasks, deal stages, lead fields.

signl:write_sensitive

scope

Actions that reach a person: enrolling a lead in a cadence, sending a message. Deliberately does NOT imply signl:write, so a connector granted this alone cannot rewrite your pipeline.

signl:write_builder

scope

Create and edit draft forms and booking pages. Nothing goes live until you publish it in SIGNL. Deliberately does NOT imply signl:write.

signl:write_ads

scope

Pause or resume an ad campaign and change its daily budget. Real ad spend, kept separate from signl:write_sensitive so a connector granted cadence enrolment cannot also move a budget.

Connecting with an API key

Create an AI Assistant key in Settings and send it as the bearer token. Simpler for a server-side integration you control; OAuth is the right choice for a client used by other people, because they authorise it themselves and can revoke it.

Workspace tools

86 tools that act inside one workspace. Each is registered only for a credential holding the scope beside it: the API key scope first, then the OAuth scope. Each tool's input fields are on the REST API page.

read · signl:read

63

get_client_snapshot

Get client snapshot

Compact 30-day KPI snapshot for this client: leads, calls, deals, pipeline, top leads, cadences. Start here for open-ended questions. Key read, OAuth signl:read.

list_leads

List leads

Leads (visitors) for this client, most recently seen first. Each lead has name (full) plus firstName and lastName, which are null when unknown (never guessed from the full name). Filter by free-text search, tag, minimum intent score, or customer status. Key read, OAuth signl:read.

get_lead

Get lead detail

Full detail for one lead plus their recent journey events, notes, and calls. Key read, OAuth signl:read.

list_calls

List calls

Calls for this client, most recent first. Filter by lead, closer, outcome, type or a date window. Each call carries leadId, callType, repId and setterId so it can be joined to a lead or rep without a get_call per row. Key read, OAuth signl:read.

list_pipelines

List pipelines and stages

CRM pipelines with their ordered stages. Call this to get stage ids before creating or moving a deal. Key read, OAuth signl:read.

list_deals

List deals

CRM deals for this client, most recently updated first. Key read, OAuth signl:read.

list_tasks

List tasks

Tasks for this client, soonest due first, or newest first with sort "newest". Key read, OAuth signl:read.

get_commissions_summary

Get commissions summary

Pending, approved, and paid commission totals (integer pence) for this client. Key read, OAuth signl:read.

get_affiliate_summary

Get affiliate summary

Affiliate/JV partner totals for this client: active partners, verified postback conversions, and outstanding payout (integer pence). Key read, OAuth signl:read.

get_leaderboard

Get leaderboard

Rep leaderboard for this client: paid commission, total calls and close rate (won over calls with a recorded outcome), ranked. Includes every rep with a call or a paid commission. Key read, OAuth signl:read.

get_attribution_summary

Get attribution summary

Multi-touch revenue attribution by source/medium for this client. Key read, OAuth signl:read.

get_funnel_summary

Get funnel summary

Funnel for this client over a window: page views, leads captured, applied and qualified (only when the client has a form with qualification rules; `applicationForms` counts them), booked, showed, won, with stage-to-stage conversion, booked/showed/won by source, and the worst leak priced in money. Use it for "where am I losing people". Key read, OAuth signl:read.

get_metric_figures

Get metric figures

Named figures SIGNL has already worked out for this client, the same ones the dashboards show (collected revenue, show rate, close rate and the rest), each with its value as displayed, the period before it, the change and how it was reached. Call it with no `metrics` to list the keys and what each counts, then with up to 12 keys to read them. Quote these figures in an answer; do not state a number that none of them gives. Key read, OAuth signl:read.

get_vsl_summary

Get VSL summary

Every VSL video with views, completed views, average watch time and the 15-second stretch where the most viewers stop watching (needs 50 views). All-time; up to 20 videos. Key read, OAuth signl:read.

get_tracking_summary

Get tracking summary

Visitor behaviour over a window (page views by hour and weekday in UTC, device, browser, country, median time on page, scroll depth, returning visitors) and, per tracking source (see list_sources), visitors, net revenue, revenue per visitor and share of revenue over the same window, by first or last touch. Key read, OAuth signl:read.

check_tracking_install

Check tracking install

Fetch one page of the client's site and check the SIGNL tag on it: present, this workspace's id, loaded from SIGNL, async, not doubled, held by a consent tool, plus events from that host in the last 24 hours and 14 days. Reads the HTML only (no JavaScript on the page is run), so a page built in the browser answers status unknown. Returns status (ok, degraded, broken, not_installed, unknown) and findings, each with an explanation and a fix. Ten checks a minute per workspace. Key read, OAuth signl:read.

get_email_stats

Get email stats

Email performance from the client's connected Kit account: sent, opened and clicked with open and click rates over Kit's last 90 days, subscriber growth, and per-broadcast stats for recent broadcasts. Says so when Kit is not connected. Key read, OAuth signl:read.

list_ad_campaigns

List ad campaigns

Ad campaigns SIGNL has seen for this client, newest first: platform, status, objective and currency, and whether pause, resume and budget can act on it (`controllable`: Meta and Whop today). The ids are what pause_ad_campaign, resume_ad_campaign and update_ad_campaign_budget take. Key read, OAuth signl:read.

list_talent

List talent

Sales roster (closers, setters, managers) for this client. Use these ids to assign calls. Key read, OAuth signl:read.

list_automations

List automations

Automations for this client with trigger type, active state, and run counts. Key read, OAuth signl:read.

list_cadences

List cadences

Outbound follow-up cadences for this client. Use these ids with enroll_lead_in_cadence. Key read, OAuth signl:read.

list_sources

List traffic sources

Every traffic source a tracked link can sit under: the built-in ones (YouTube, Instagram, Kit, Email…) and this client’s own, with each one’s key, default utm_source and utm_medium, whether it is hidden in the Source tab, and how many content items it has. Pass a key as create_tracked_link’s `source`. Key read, OAuth signl:read.

get_content_performance

Get content performance

One row per content item in the Source tab (a video, a post, a broadcast or a campaign filed under a source such as YouTube, Instagram, Email or your own), with the numbers that tab shows: the item's links, their clicks, and the forms, calls booked and revenue (integer pence) of people whose first tracked link was one of them, plus their calls that showed (shows), calls won (wins) and ledger cash by currency in minor units (cash). All time by default; days counts one window, with clicks and revenue from the dated click ledger (ledgerCovers.note says when the window starts before it). A YouTube video is one item however many links it has. Pass a source key from list_sources to see one source. Key read, OAuth signl:read.

list_forms

List forms

Forms for this client with view, start, submission counts and completion rate. Key read, OAuth signl:read.

list_form_submissions

List form submissions

Recent form submissions with answers, most recent first. Key read, OAuth signl:read.

get_form

Get form

One form in full: fields with their stable ids, pages, endings, qualification rules and settings. Read this before update_form, and send the ids back, so rules keep matching. Key read, OAuth signl:read.

list_booking_pages

List booking pages

Booking pages (calendars) for this client with status, duration and booking count. Key read, OAuth signl:read.

get_booking_page

Get booking page

One booking page with every setting that changes how it behaves: duration, buffer, notice, window, weekly hours, intake questions, location, hosts and endings. Key read, OAuth signl:read.

list_availability_schedules

List availability schedules

Shared weekly-hours schedules a booking page can use instead of its own hours, with their time zones. Key read, OAuth signl:read.

get_call

Get call detail

One call in full: lead, rep, status, outcome, objection, notes, recording summary and the post-call record. Key read, OAuth signl:read.

get_deal

Get deal detail

One deal in full, including notes and custom fields. Key read, OAuth signl:read.

get_call_transcript

Get call transcript

The recording transcript of one call, up to 20,000 characters per response. Check `hasMore` and send `nextOffset` back as `offset` to read the rest. Personal data: read it to answer a question about a call, not to copy it elsewhere. Empty until transcription has run (see `transcriptionStatus`). Key read, OAuth signl:read.

list_tags

List tags

Every tag in use on this client’s leads with how many leads carry it, most used first. Use it to pick a tag for list_leads or update_lead instead of guessing spelling. Key read, OAuth signl:read.

get_ad_performance

Get ad performance

Ad campaigns over the last N days (default 30, at most 90): spend (integer pence, `null` when no spend row exists, which is unmeasured and not free), impressions, clicks, CTR and CPC, highest spend first. Same numbers as the Ads page. Key read, OAuth signl:read.

list_offers

List offers

What this client sells: name, description, price (integer minor units in `currency`) and whether it is active. Offer ids link calls and deals to what was sold. Key read, OAuth signl:read.

list_contracts

List contracts

Agreements sent for e-signature, newest first: status, signed total (integer minor units), the lead it is for (`leadId`, null for someone kept out of the CRM), the linked deal (often null: a contract need not have one) and dates. `get_contract` has the text and each signer. Key read, OAuth signl:read.

get_contract

Get contract

One contract with its text (first 20,000 characters), its sections, the template version it was drafted from, the fields the signer fills in (key, type, label, required) with the values they entered once signed, and each signer’s name, email, role and status. Signing links and drawn signatures are never returned. Key read, OAuth signl:read.

list_contract_templates

List contract templates

This workspace’s active contract templates, newest edit first: id, name, current version, whether it is a copy of an agency template and when it last changed. `get_contract_template` has the sections. Key read, OAuth signl:read.

get_contract_template

Get contract template

One contract template at its current version: its sections (key, heading, text, whether locked) and line items. Templates are written in the app. Key read, OAuth signl:read.

list_webinars

List webinars

Webinars for this client, newest first (deleted ones excluded): title, slug, mode, status and timezone. Key read, OAuth signl:read.

list_webinar_registrations

List webinar registrations

Who registered for one webinar, newest first: name, email, status, session time, how much they watched and whether they clicked the call to action. Key read, OAuth signl:read.

list_custom_fields

List custom fields

The custom fields this client added, with key, label, type, choices and what they attach to (leads, calls or deals). Key read, OAuth signl:read.

list_dni_numbers

List tracking numbers

The client’s call-tracking phone numbers: number, name, where it forwards, country and status. Key read, OAuth signl:read.

list_data_tables

List data tables

The client’s own tables (the Data page): name, description, field definitions and whether the rows come from a form, booking page or report or are entered by hand. Use the ids with list_data_records. Key read, OAuth signl:read.

list_data_records

List data records

Rows of one data table, newest first. `values` is keyed by the table’s field ids from list_data_tables. Key read, OAuth signl:read.

list_dashboards

List dashboards

The client’s custom dashboards: name, description, which is the default, whether the client portal shows it, and how many widgets it has. Key read, OAuth signl:read.

list_import_runs

List import runs

Imports and syncs, newest first: mode, status, file name, rows total, processed and failed, per-kind counts, any error, and whether it was undone. Key read, OAuth signl:read.

list_training_assignments

List training assignments

Role-play practice assigned to reps, newest first: who, against which persona, status, due date and note. Key read, OAuth signl:read.

get_task

Get task detail

One task by id. Key read, OAuth signl:read.

list_payments

List payments

Payments received from connected providers (Stripe, Whop and others), newest first. Amounts are integer minor units in the currency returned beside them; refunds point at the payment they reverse. Key read, OAuth signl:read.

list_payment_plans

List payment plans

Payment plans with every instalment, what is paid, and what is due. Use for "who is behind on their plan". Key read, OAuth signl:read.

list_eod_reports

List EOD reports

End-of-day reports from the sales team, newest first: calls taken, shows, offers, closes, cash collected and the template answers. Key read, OAuth signl:read.

list_commission_entries

List commission entries

The individual commission rows behind get_commissions_summary, with the call or deal each came from. Key read, OAuth signl:read.

list_recordings

List recordings

Screen and video recordings in this workspace. Share links are not returned. Key read, OAuth signl:read.

list_sops

List SOPs

Standard operating procedures, with their section and a short excerpt of each. Use get_sop for the full text. Key read, OAuth signl:read.

get_sop

Get SOP

One SOP with its full body. Key read, OAuth signl:read.

list_cadence_enrollments

List cadence enrolments

Leads enrolled in cadences: which step they are on, when the next action runs, and whether they replied or failed. Key read, OAuth signl:read.

list_messages

List a lead's messages

One lead's texts, WhatsApp messages and emails, newest first: what SIGNL sent (a subject or the first 80 characters, with delivery status) and what the lead replied by text or WhatsApp. Inbound email is not recorded yet. Key read, OAuth signl:read.

get_usage

Get credit usage

What this workspace has spent in credits, and what the caller has left: credits used in a window (default this month, UTC), split by vendor (AI, texts and calls, transcription, email, Meeting Bots) and by feature, optionally by day, plus the caller's own balance (credits belong to each person). Use it for "what have I spent on texts this month?". The balance is null when no person is calling. Key read, OAuth signl:read.

list_lead_history

List a lead's owner history

The recorded changes to one lead's owner, newest first: who it was, who it became, who changed it (a member, the Agent with the member who approved it, an API key) and when. History starts on 5 Oct 2026; earlier changes are not reconstructed. Key read, OAuth signl:read.

list_deal_history

List a deal's stage history

The recorded stage moves of one deal, newest first: from, to, who moved it (a member, the Agent with the member who approved it, an automation, an API key) and when, plus the time spent in each stage. History starts on 5 Oct 2026; earlier moves are not reconstructed. Key read, OAuth signl:read.

whoami

Who am I

Which workspace this connection is working in and who it is acting as: the workspace name and slug, whether it acts as a team member or an API key or connector (and its name), and the time zone dates are read in. Call it first when you start a task with no context. It returns no ids, keys or permissions. Key read, OAuth signl:read.

write · signl:write

13

create_lead

Create lead

Create a lead for this client. Deduplicates on email then phone — if a matching lead exists it is returned instead of creating a duplicate. Key write, OAuth signl:write.

update_lead

Update lead

Update a lead. Tag changes are additive/subtractive via add_tags and remove_tags — existing tags are never blindly overwritten. Key write, OAuth signl:write.

add_lead_note

Add lead note

Append a timestamped note to a lead. Attributed to the API key that wrote it. Key write, OAuth signl:write.

create_call

Create call

Log a booked call for this client. Key write, OAuth signl:write.

update_call

Update call

Update a call — typically logging the outcome after it happened, or pushing its transcript or recording link from any call recorder. Money is integer pence. Does not create commission entries; the commissions engine derives those from rules. Key write, OAuth signl:write.

create_deal

Create deal

Create a CRM deal. Call list_pipelines first to get a valid stage_id. Key write, OAuth signl:write.

update_deal

Update deal

Update a deal — move stage, change value, or mark won/lost (with a loss_reason when lost). Moving stage keeps the pipeline consistent automatically. A stage can require fields before a deal enters it (value, close date, offer, custom fields): a move that leaves any empty is refused and names them, so set them in the same call or first. Key write, OAuth signl:write.

create_task

Create task

Create a task, optionally linked to a lead. Key write, OAuth signl:write.

update_task

Update task

Update or complete a task. Setting status to done stamps the completion time. Key write, OAuth signl:write.

create_source

Create traffic source

Add a traffic source of this client’s own (up to 40). Its key is its name as a slug; a built-in source’s name is refused. Links and content items go under it with create_tracked_link. Key write, OAuth signl:write.

create_sop

Create SOP

Write a new standard operating procedure. role_scope labels who it is for, e.g. ["closer"]; it does not restrict who can read it. Key write, OAuth signl:write.

update_sop

Update SOP

Change an SOP. Only the fields you send change; body replaces the whole text. Key write, OAuth signl:write.

write:sensitive · signl:write_sensitive

2

enroll_lead_in_cadence

Enrol a lead in a cadence

Start an outbound follow-up cadence for a lead. This sends real messages to a real person — requires the write:sensitive scope. Refuses a lead who has bounced, complained or unsubscribed when the cadence sends email. Key write:sensitive, OAuth signl:write_sensitive.

set_automation_status

Activate or pause an automation

Turn an automation on or off. An active automation can contact leads, so this requires the write:sensitive scope. Switching on is refused when the published version cannot do anything (the same check as the Active toggle in SIGNL), and steps that will skip are returned as warnings. Editing the automation node graph is intentionally not exposed here. Key write:sensitive, OAuth signl:write_sensitive.

write:ads · signl:write_ads

3

pause_ad_campaign

Pause ad campaign

Pause a running ad campaign on the platform it is connected to. Spends real money if left running, so requires the write:ads scope. Meta and Whop today — a Google or TikTok campaign, or one only ever seen as a UTM string, is refused with the reason (roadmap E2). Key write:ads, OAuth signl:write_ads.

resume_ad_campaign

Resume ad campaign

Resume a paused ad campaign on the platform it is connected to. This starts real spend again, so requires the write:ads scope. Meta and Whop today (roadmap E2). Key write:ads, OAuth signl:write_ads.

update_ad_campaign_budget

Change ad campaign daily budget

Change a running ad campaign’s daily budget on the platform it is connected to. Changes real spend, so requires the write:ads scope. Meta and Whop today; refused when the campaign’s currency is unset or is not what SIGNL displays, the same guard ad-spend import uses. Capped at 10000 USD/day — a higher figure is refused rather than sent, to catch a fat-fingered amount (e.g. typing pounds where pence, or dollars where cents, were meant) before it reaches the platform. Key write:ads, OAuth signl:write_ads.

write:builder · signl:write_builder

5

create_form

Create form (draft)

Create a form as a DRAFT: fields, pages, endings and qualification rules. Nothing goes live; a person publishes it in SIGNL. Give an id to any field or option a rule refers to. Branching logic from another platform is never imported automatically; if you are migrating a form, list the rules you could not express and tell the operator. Key write:builder, OAuth signl:write_builder.

update_form

Update draft form

Edit a form. A draft is edited directly. A published form keeps its live version: the edit goes to its working copy and reaches visitors only when a person presses Publish changes in SIGNL. Refuses an archived form. `fields` replaces the whole list, so call get_form first and send every field you want to keep, with its id. Key write:builder, OAuth signl:write_builder.

import_form

Import form from Typeform (draft)

Import a Typeform from its public link as a DRAFT: questions, choices, endings and jumps. Returns `unmapped`, the list of what could not come across (score or variable logic, dropped screens). Always tell the operator what is in `unmapped` before they publish; never imply the logic came across when it did not. Key write:builder, OAuth signl:write_builder.

create_booking_page

Create booking page (draft)

Create a booking page (calendar) as a DRAFT: duration, buffer, notice, booking window, weekly hours and time zone (or a shared schedule), hosts (one, or a round-robin pool from list_talent), intake questions, location and look. It takes no bookings until a person activates it in SIGNL. Key write:builder, OAuth signl:write_builder.

update_booking_page

Update draft booking page

Edit a DRAFT booking page. Refuses an active or inactive page. `questions` replaces the whole list. Key write:builder, OAuth signl:write_builder.

Agency read tools

10 tools that answer across every client in the organisation. Only an organisation-wide API key holding read sees them, beside list_workspaces, which names the workspace slugs the workspace tools take. An OAuth grant is pinned to one workspace, so it never sees these.

list_clients

List clients

Every client workspace in the organisation: id, slug, name, status, type and the name of its current package (null when it has none). Use the slug as the `workspace` argument of client tools. Key read.

get_portfolio_overview

Portfolio overview

The whole agency at a glance, over the last 30 days: totals across active clients, clients by status, average measured close and show rates, clients below their ROAS target, top performers, daily revenue trend and the team leaderboard. The same figures the agency dashboard shows. Package retainers are per client, each in its own currency — never totalled across clients. Start portfolio questions here. Key read.

compare_clients

Compare clients

Side-by-side performance for several clients over the last 30 days, sorted. Omit `workspaces` to compare every active client. Rates are null when no calls were measured. Each client carries its current package (name, currency, monthly value) as /clients shows it. Key read.

get_client_health

Client health

One client's performance over the last 30 days with plain flags for what deserves a look (below ROAS target, no calls, cash collected far below contracted), and its current package in its own currency. For detail inside the client, follow up with its client tools. Key read.

list_packages

List packages

The packages this agency sells its clients: name, kind (core or add-on), status, terms in their own currency (retainer, setup fee and instalments, revenue share) and how many clients are on each today. Key read.

list_statements

List agency statements

What each client owes the agency, month by month, newest first: client, period, status, total and paid (integer minor units in the statement’s currency) and the engine’s warnings. Read only: issuing, voiding and recording payment stay in SIGNL. Key read.

list_event_templates

List event templates

Managed booking-page templates defined once and pushed to clients: name, duration, how many fields are locked and how many client pages are linked. Owners and admins only. Key read.

list_agency_skills

List agency skills

Agent skills the agency wrote once and pushed to clients: title, version, the tools each names, and for every client carrying a still-linked copy whether it is locked and whether it has the latest version. Owners and admins only. Key read.

list_org_members

List team members

Everyone with a SIGNL login in the organisation: name, email, role, the one client they are pinned to (if any) and when they were last active. Key read.

list_agency_talent

List talent across clients

Setters, closers and other talent across every client, with the client each works in and their paid commission, total calls and close rate from the agency leaderboard. Filter by workspace or role. Key read.

Agency write tools

21 tools that run the agency itself. Only an organisation-wide API key sees one, and only when it holds every scope listed beside it.

create_client

Create a client

Create a new client workspace in the organisation, with the starter pipeline and report templates for its type. Counts against the plan’s client limit, and is refused at the limit exactly as Add Client is. Commercial terms are not set here: assign a package in SIGNL. Returns the new client’s id and slug, the workspace to use in every other tool. Key write:agency.

update_client

Edit a client

Change a client’s name, contact, type, status or target ROAS. Send only the fields to change. Retainer and rev share belong to the client’s package and cannot be set here. Key write:agency.

archive_client

Archive a client

Archive a client: it leaves every agency list, aggregate and Login As, and its workspace becomes read-only. Reversible with restore_client. Its package assignment is left alone, so restoring brings it back on the terms it left with. Archiving again is a no-op. Key write:agency.

restore_client

Restore an archived client

Bring an archived client back. Counts against the plan’s client limit again, and is refused at the limit. Takes the client’s id or slug as shown when it was archived. Key write:agency.

create_package

Create a package

Add a package to the catalogue: a core offer (or an add-on) with its setup fee, retainer and/or rev share. Created as a draft unless `status` says otherwise; only an active package can be assigned to a client. Money is integer pence of the stated currency. Key write:agency.

update_package

Edit a package

Replace a package’s details and terms (send the whole package, as the edit form does; list_packages shows the current one). Clients already assigned keep the terms they were assigned on. Key write:agency.

set_package_status

Activate, draft or archive a package

Move a package between draft, active and archived. Archiving hides it from new assignments; existing assignments are untouched. Key write:agency.

duplicate_package

Duplicate a package

Copy a package as a new draft named “… (copy)”. Key write:agency.

delete_package

Delete a draft package

Permanently delete a package. Only a draft that has never been assigned can be deleted; anything else is refused (archive it instead). Key write:agency.

assign_package

Put a client on a package

Assign an active core package (and optional add-ons) to a client from a date, with the terms that apply to that client. This sets what the client will be billed from `effective_from`. Refused if the client already has a current package (use switch_package) or the date falls inside a period with an issued statement. Key write:agency.

switch_package

Switch a client to another package

Move a client from its current core package to another from a date: the current package (and its add-ons) ends the day before and the new one starts, in one step that is rolled back if it cannot complete. Switching to the same package is a re-price and does not charge the setup fee again. Refused inside a period with an issued statement. Key write:agency.

end_package_assignment

End a client’s package

End an assignment (and its add-ons) on a date. Cannot end before it started, or before the period covered by an issued statement. Key write:agency.

create_event_template

Create an event template

Define booking-page settings once for the agency: duration, buffer, questions, location, branding and rules. `locked_fields` names what clients cannot change on pages made from it. Nothing reaches a client until push_event_template. Key write:agency.

update_event_template

Edit an event template

Change an event template; send only the fields to change. Saving propagates its LOCKED fields to every booking page already made from it, so this can change live client pages. The result says how many pages were updated. Key write:agency.

push_event_template

Push an event template to clients

Create a draft booking page from the template in each named client (slug, id or exact name). Clients that already have a page from it are skipped. Pages start as drafts; publishing stays a human action in SIGNL. Key write:agency.

detach_event_template_page

Unlink a booking page from its template

Stop a booking page following its template. It keeps its current values and becomes fully editable by the client. Key write:agency.

delete_event_template

Delete an event template

Delete a template. Pages already made from it stay as they are, with their current values, and become fully editable. Key write:agency.

set_client_setup_brief

Set a client’s setup brief

Shape the AI setup chat a client sees at their first login (replaces the brief; send all of it). `enabled: false` turns the chat off for that client. `notes` is private to the agency (server-only, never shown to the client) but the setup guide reads it and may act on it, so write nothing you would regret the client hearing paraphrased. `prefill` answers questions the agency already knows, in the setup profile’s own values; these ARE shown to the client, because the chat confirms each in one line instead of asking: business_model (one_to_one, group, course, agency, community, other), offers ([{ name, price_band: under_1k | 1k_3k | 3k_10k | 10k_plus, delivery }]), sales_motion (application_call, direct_booking, webinar, vsl, dm_setting, checkout, referrals), team_shape (solo, with_setter, setters_closers, sales_team), stack ([{ category, provider }]), alert_channel, alert_events, automations_before, notes. `allowed` names the kinds the chat may propose (pipeline, form, event, automation, integration; any left out stay allowed). `include_event_template_ids` puts up to 20 of the agency’s event templates on the client’s plan as draft booking pages. Refused once the client’s setup has been planned, built or skipped. A client with no setup yet gets one, opened at their next login. Key write:agency.

generate_statement_drafts

Generate the month’s statement drafts

Compute what each client owes the agency for a month from its packages and collected cash, and create or refresh the DRAFT statements. Drafts are working copies: nothing is issued to a client. Issuing, voiding and recording payment stay in SIGNL. Returns how many drafts were created, refreshed and skipped (already issued). Key write:finance.

add_statement_adjustment

Add an adjustment to a draft statement

Add a manual line to a DRAFT statement: a positive amount adds to what the client owes, a negative one is a credit. Amount is integer pence of the statement’s currency. Refused once the statement is issued: put it on next month’s draft instead. Key write:finance.

invite_client_member

Invite someone to one client’s workspace

Email an invitation to join ONE client’s workspace as a member. Always the member role, pinned to that client: inviting an admin, someone with the whole organisation or a custom role is done in SIGNL. Emails a real person, so the key needs write:sensitive as well as write:agency. Resending to a pending address replaces its earlier link. Key write:agency and write:sensitive.

This page is generated from the same list the product runs on, so it is never out of date. Something missing or unclear? Get help.