MCP App Store
by KeenEthics

Overview

Scribe is email signature management for enterprise: IT sets it up once, marketing runs it, and no employee ever installs anything. Connect Scribe to ChatGPT and manage your workspace in plain language: • Create, edit, preview and publish signature templates • Assign signatures to teammates, groups and folders • Manage smart fields, assets and integrations • Launch, schedule and pause banner campaigns • Pull view, click and conversion analytics Signatures deploy centrally across Google Workspace, Microsoft 365 and 30+ tools. Sign in with your Scribe account via OAuth — the app forwards your own access token and never stores an API key.

Tools

add_signature_recipient_entities

ChatGPT
Target a signature at a batch of directory org units / groups (by uuid); everyone in them becomes a recipient. Returns the updated selection. Unknown entity uuids fail with 422.

add_signature_recipients

ChatGPT
Manually assign a signature to a batch of emails (by uuid). Returns the updated selection. Unknown email uuids fail with 422.

create_asset

ChatGPT
Upload an image to the workspace's asset library. Provide EITHER file_base64 (+ filename) OR source_url — exactly one. For a file the user uploaded in chat (no public URL), send its bytes as file_base64; if you cannot read the raw bytes on this platform, ask the user for a hosted URL or reuse an existing asset from list_assets instead of guessing. Non-images, bad base64, oversized files (>15MB), or a disallowed URL return 422.

create_email

ChatGPT
Add an alias email address to a teammate. Only available when the workspace manages its own team list — if a directory integration (Google, Microsoft or Zoho Mail) drives teammates, this returns a 409 conflict. The address is validated (format, uniqueness, disposable/deny-list) → 422 on failure.

create_folder

ChatGPT
Create a signature folder to organize signature templates. A blank name returns 422.

create_marketing_campaign

ChatGPT
Create a marketing campaign. name, start_time, end_time, and time_zone are required; a missing one returns 422. The campaign is created as a draft — use schedule_marketing_campaign to activate it. content is a block tree (a stack root whose children are blocks) strict-validated server-side, the same format as signature draft_content; smart_fields_conditions and signature_template_ids set the targeting.

create_signature

ChatGPT
Create a signature template. Sets draft_content (the working copy) — content stays empty until you publish_signature. name is required; draft_content is a block tree (a stack root whose children are blocks) strict-validated server-side; folder_id is a folder UUID. Call get_content_schema FIRST for the block-tree schema, every enum value (incl. the non-obvious icon names like linkedin-in/facebook-f), and a complete worked example to adapt — that's how you build a full signature, social-icon row included, in one shot. An invalid tree returns 422 naming each offending field and (for enums) its allowed values. Returns the created template.

create_smart_field

ChatGPT
Define a new custom smart field. Optionally bind it to a workspace integration (integration_id + integration_attribute) to sync its values. An invalid kind or unknown integration returns 422.

create_teammate

ChatGPT
Create a new teammate from a primary email plus optional smart-field values. Only available when the workspace manages its own team list — if a directory integration (Google, Microsoft or Zoho Mail) drives teammates, this returns a 409 conflict. Email aliases are managed separately.

delete_asset

ChatGPT
Delete an asset by UUID. If it's still in use (referenced by a signature or set as the workspace picture) it is soft-deleted so those keep rendering; otherwise it is permanently removed. Either way it disappears from list_assets.

delete_email

ChatGPT
Delete an alias email by UUID (soft delete). A teammate's primary email cannot be deleted (returns 422). Only available when the workspace manages its own team list — a directory integration returns a 409 conflict.

delete_folder

ChatGPT
Delete a signature folder by UUID. A folder that still contains signatures cannot be deleted (returns 409) — move or delete its signatures first.

delete_marketing_campaign

ChatGPT
Delete a marketing campaign by UUID. An active campaign is stopped first (it stops applying to signatures), then removed.

delete_signature

ChatGPT
Delete a signature template by UUID (also unassigns it from every teammate/email).

delete_signature_variant

ChatGPT
Reset a signature's reply/internal variant back to the primary: deactivate it and restore the primary's content (the variant record is kept). This is the 'reset to primary' action, not a hard delete. Returns 409 if the workspace lacks a Microsoft 365 signatures integration (variants_unavailable).

delete_smart_field

ChatGPT
Delete a custom smart field by UUID (this also removes its value on every teammate). Default fields are read-only (422), the computed Email field is not addressable (404), and a field used in a signature template or campaign can't be deleted (409).

delete_teammate

ChatGPT
Delete a teammate by UUID (a soft delete; their emails are removed from signature deployment). Only available when the workspace manages its own team list — if a directory integration (Google, Microsoft or Zoho Mail) drives teammates, this returns a 409 conflict.

duplicate_signature

ChatGPT
Copy a signature into a new one, as the dashboard's Duplicate: a safe copy to try a change on (a new banner, a layout) without touching the original or anyone's signature. The copy gets the source's design (its draft, published as the copy's content) and its reply/internal variants; it is assigned to no one, its installation is off, it has no smart-field rules. Use it instead of reading the design and create_signature. Then edit the copy with update_signature and check it with preview_signature; to bring a tried change back, update_signature the original with the copy's draft_content. Unknown signature → 404; unknown folder → 422. Returns the copy.

get_analytics_clicks

ChatGPT
Signature-click counts over a date range. By DEFAULT a timeseries bucketed by granularity (hour/day/week/month, UTC): { data:[{period, count}], totals:{count} }. Set group_by (signature_template | marketing_campaign | teammate | country) for a ranked breakdown instead: { data:[{id, label, view_count, click_count, clickthrough_rate}], pagination } — each breakdown row already carries views, clicks, AND the clickthrough rate, so one call answers "which signature/teammate drives the most engagement". Filter by start_date/end_date and any of signature_template_id, marketing_campaign_id, teammate_id.

get_analytics_events_summary

ChatGPT
Aggregated conversion/revenue numbers from recorded events. By DEFAULT a timeseries of event count + sum of value bucketed by granularity: { data:[{period, count, value}], totals:{count, value} }. Set group_by (name | signature_template | marketing_campaign | teammate | anchor | country | currency | user) for a ranked breakdown: { data:[{id, label, count, value}], pagination } — rank by order_by (count | value). value is summed across currencies, so pass currency or group_by=currency for a clean total. Answers total revenue, revenue by campaign/template/teammate/country, conversions per day, top customers (group_by=user).

get_analytics_views

ChatGPT
Signature-view counts over a date range. By DEFAULT a timeseries bucketed by granularity (hour/day/week/month, UTC): { data:[{period, count}], totals:{count} }. Set group_by (signature_template | marketing_campaign | teammate | country) for a ranked breakdown instead: { data:[{id, label, view_count, click_count, clickthrough_rate}], pagination } — each breakdown row already carries views, clicks, AND the clickthrough rate, so one call answers "which signature/teammate drives the most engagement". Filter by start_date/end_date and any of signature_template_id, marketing_campaign_id, teammate_id.

get_content_schema

ChatGPT
Call this FIRST before authoring or editing a signature draft_content (create_signature / update_signature) or a marketing-campaign content. Returns, in ONE call, everything needed to build a valid block tree: the strict JSON Schema; a flat enums lookup of every allowed value (including the 100+ valid icon names and the iconStyle.shape values); the social_icons map from common platform to its exact (non-obvious) icon enum, e.g. linkedin -> linkedin-in, facebook -> facebook-f, youtube -> youtube, instagram -> instagram, whatsapp -> whatsapp; a complete worked example signature containing every block type AND a populated 5-platform socialList; and short guidance. Adapt example to author a full signature — social-icon row included — without guessing the format or brute-forcing enum spellings.

get_more_tools

ChatGPT
Check for additional tools whenever your task might benefit from specialized capabilities - even if existing tools could work as a fallback.

get_signature_html

ChatGPT
Get the REAL final installed HTML of a signature for a SPECIFIC recipient — the live published content rendered with that teammate's real values and tracking links on, i.e. exactly what their mail client receives. This is NOT a preview: it reflects the published signature (publish_signature first), and returns empty HTML if the signature has not been published. The email must be a recipient of this signature (see list_signature_recipients), otherwise the API returns a 404 (no such email) or 422 (not a recipient). For a tracking-free placeholder layout check of a draft before publishing, use preview_signature instead.

get_visitor

ChatGPT
Fetch one identified visitor (the customer's identify subject — NOT a Scribe member) by its Scribe id — the uuid from list_visitors, not the distinct_id (to look up by distinct_id, filter list_visitors instead). Returns the visitor's distinct_id, traits (PII lives here), first/last_seen_at, first_touch attribution (the signature click that drove their first visit), and stats — the visitor's lifetime engagement (event count + total value).

get_visitor_breakdown

ChatGPT
Rank which signature template or teammate acquired the most identified visitors (the first signature click that drove their first visit): { data:[{id, label, count}], pagination }.

get_workspace

ChatGPT
A snapshot of the current workspace's commercial state: plan (tier, kind, status, billing_interval, cancel_at_period_end + start/end dates), seat_count (invoiced seats — what Stripe is billed for), and event_tracking (conversion-tracking setup: the Event Tracking ID to paste into the website snippet / @scribemail/js init, plus whether events would be ingested). When helping a user set up conversion tracking, read the ID here and search_docs for 'conversion tracking' to walk them through the snippet, identify() and track() calls. There is no id — it is always the API key's own workspace. Read-only: plan and seats are managed in the dashboard / by the billing system, never via the API.

install_signature

ChatGPT
Trigger installation of a signature template's current content to connected mail clients (without publishing). Returns 403 if the plan lacks signature installation, or 409 if no API signature integration is connected — in both cases the error includes a dashboard link to connect an integration or upgrade the plan; relay it to the user (the API can't run OAuth).

list_analytics_events

ChatGPT
The raw recorded events behind the analytics (server-to-server + SDK), most recent first. Each row: recorded_at, name, value, currency, source, the attribution *_uuid fields, country_code, and a read-opaque properties bag. Filter by date range, name, and any of signature_template_id / marketing_campaign_id / teammate_id / country. Use for verify/export. Paginated (page/limit).

list_assets

ChatGPT
List the workspace's asset library (logos, banners, profile pictures). Each has a downloadable file URL, its role, and in_use (whether a signature or the workspace picture references it). Paginated (page/limit).

list_emails

ChatGPT
List the workspace's teammate email addresses (primary + aliases), each with its owning teammate_id. Optionally filter to one teammate. Paginated (page/limit).

list_financial_documents

ChatGPT
List the workspace's financial documents (invoices and credit notes), newest first. Only documents with a downloadable PDF are returned: each carries a file ({ url, filename, content_type, byte_size }) whose url downloads the document, plus a receipt (same shape) when a separate receipt PDF exists. Use the file.url to fetch/download the document. Read-only — documents are issued by the billing system, not via the API. Paginated (page/limit).

list_folders

ChatGPT
List the workspace's signature folders, each with its signature_count (how many signature templates it directly contains). Paginated (page/limit).

list_integration_entities

ChatGPT
List the workspace's directory org units / groups (from a teammates integration). Their uuids are what you pass to add_signature_recipient_entities to target a signature at a whole org unit. Paginated (page/limit).

list_integrations

ChatGPT
List the workspace's active (set-up) integrations, including any currently failing. Each carries a status ("active" or "error") and, when erroring, an error_message + error_since so you can see which integrations are connected and debug what went wrong. Each also has a dashboard_url to manage or reconnect it — relay that link when an integration is in error (the API can't run OAuth). Integrations are connected and configured in the dashboard, not via the API — and connecting one (Google Workspace, Microsoft 365, Zoho Mail, …) must be done by a SUPER ADMIN of that third-party app (an Admin is enough in Zoho Mail), so guide the user rather than trying to act: use search_docs (e.g. 'connect Microsoft 365', 'Google Workspace setup') to fetch the step-by-step setup guide and walk them through it alongside the dashboard link. This is WORKSPACE-level health only — for per-email install state/errors (e.g. a recipient not found on Front) use list_signature_installations. Paginated (page/limit).

list_marketing_campaigns

ChatGPT
List the workspace's marketing campaigns, each with its status, targeting (smart_fields_conditions + signature_template_ids), and content (an ILayoutBlock block tree). Paginated (page/limit).

list_signature_installations

ChatGPT
Where each signature actually IS (or failed to be) installed, per email: one row per email × signature × integration/email client with status (installed | failed | uninstalled) and, on failure, the error_code (e.g. user_not_found = the recipient has no account on that integration). Use this to answer 'is X's signature installed on <integration>?' or 'which installs failed and why?' — list_integrations only reports workspace-level connection health. Filter by email_id or email_address, signature_template_id, integration_id, status.

list_signature_recipients

ChatGPT
REQUIRES signature_id (a signature template UUID) — there is no workspace-wide form of this tool. Without one in hand, call list_signatures first and pass an id from it. List the emails a signature is assigned to — each with the sources explaining why (manual, smart_field, or an org unit) — plus the selection config (manual ids, targeted org units, smart-field conditions, and the assign-to-all-future flag). data is paginated; selection is the full rule config.

list_signature_variants

ChatGPT
List a signature's reply and internal variants (always both entries). A variant is an alternate signature shown on reply emails (reply) or internal/same-domain emails (internal). Each entry reports its state (exists / activated / hidden / show_marketing_campaigns) and content. Also returns supported: variants require an active Microsoft 365 signatures integration, and writes return 409 variants_unavailable when it's false.

list_signatures

ChatGPT
List the workspace's email-signature templates. A Scribe 'signature' is a reusable template (the layout that gets deployed to teammates' mail clients); v1 returns the workspace's primary templates. Paginated (page/limit). The large content/draft_content block trees are omitted by default — pass include_content:true to fetch them.

list_smart_fields

ChatGPT
List the workspace's smart-field definitions — the merge fields available to signature templates (e.g. first name, job position, custom fields). Each carries its kind, whether it's a default field, and an integration_id when its values are synced. The computed Email field is not exposed. Paginated (page/limit).

list_teammates

ChatGPT
List the workspace's teammates. A 'teammate' is a managed person whose email signature Scribe deploys; each carries their email addresses and smart-field values (the data merged into signature templates). Paginated (page/limit).

list_visitors

ChatGPT
The workspace's identified visitors — the customer's own end-users, described by their identify calls (NOT Scribe members/teammates). Each row: distinct_id, traits (PII lives here), first/last_seen_at, and first_touch (the signature click that drove their first visit). Filter by distinct_id (exact), a trait (trait_key + trait_value, e.g. plan=enterprise), identified_via, and first-seen date range. Newest first, paginated.

pause_marketing_campaign

ChatGPT
Pause an active campaign — it stops applying to signatures. Only an active campaign can be paused (otherwise 409). Resume later with resume_marketing_campaign.

preview_marketing_campaign

ChatGPT
Render a marketing campaign's content block tree to HTML with PLACEHOLDER values — the same recipient-less, tracking-free render preview_signature does. Use it to VERIFY a banner's layout after create/update_marketing_campaign and BEFORE schedule_marketing_campaign: read the returned html, confirm it looks right, fix the content if not. An empty html means the campaign has no content yet.

preview_signature

ChatGPT
Render a signature to HTML with PLACEHOLDER values (each smart field shows its label, like the editor canvas for an empty field) — no recipient needed. Use this to VERIFY layout and spacing after create_signature / update_signature and BEFORE publish_signature: read the returned html to confirm the result looks right (no overlapping lines, correct spacing), and fix the draft if not. Renders the draft by default; pass content:"published" for the live copy.

publish_signature

ChatGPT
Publish a signature template: copy draft_content into the live content and, when the workspace can, trigger installation to connected mail clients. SIDE EFFECT: a successful publish also activates installation for the template (signature_installation_activated becomes true) — the signature goes live to its recipients' mail clients, not just in the API. Confirm with the user before publishing a signature that has recipients. Returns the updated template (with last_published_at set).

publish_signature_variant

ChatGPT
Publish a signature's reply/internal variant: copy its draft_content into the live content and redeploy through the primary signature. Returns the updated variant (with last_published_at set). Returns 409 if the variant hasn't been created yet (variant_not_created) or if the workspace lacks a Microsoft 365 signatures integration (variants_unavailable).

read_docs_page

ChatGPT
Fetch the FULL content of one Scribe help-center page by its path (from a search_docs result). Use it when the search excerpt isn't enough — e.g. to walk a user step-by-step through an integration setup, DNS configuration, or the conversion-tracking install. Public documentation; needs no scope and touches no workspace data.

remove_signature_recipient_entities

ChatGPT
Stop targeting a signature at a batch of directory org units / groups (by uuid). Manual and condition-based recipients are untouched. Returns the updated selection.

remove_signature_recipients

ChatGPT
Remove a batch of manual recipients (by email uuid) from a signature. Only manual assignment is affected — emails matched by a condition or org unit stay. Returns the updated selection.

resume_marketing_campaign

ChatGPT
Resume a paused campaign — it becomes active again. Only a paused campaign with a future end time can be resumed (otherwise 409). Returns 403 if the workspace's plan does not include marketing campaigns.

schedule_marketing_campaign

ChatGPT
Activate a draft or paused campaign — it goes live immediately if it has started, otherwise it is scheduled to start at start_time. Only a draft/paused campaign with a future end time can be scheduled (otherwise 409). Returns 403 if the workspace's plan does not include marketing campaigns.

search_docs

ChatGPT
Search the official Scribe help-center documentation (help.scribe-mail.com) and return matching excerpts with titles and links. ALWAYS use this before answering product/how-to questions from memory — how smart fields work, how the editor works, DNS configuration, connecting an integration (Google Workspace, Microsoft 365, Zoho Mail, Front, …), conversion-tracking setup, plans and billing — and before telling a user something isn't possible. Results are excerpts: to read a full guide, pass the page path from a result to read_docs_page. Public documentation; needs no scope and touches no workspace data.

send_feedback

ChatGPT
Send a bug report, missing-capability request, or question straight to the Scribe team. When a tool fails unexpectedly, a capability the user needs is missing, or the docs can't answer their question, OFFER the user to report it — and only send after they agree (the report includes their workspace identity). Works with any valid API key, no extra scope. Returns { received: true } once accepted; the team reads every report.

send_test_email

ChatGPT
Mail the user a test of a signature's DRAFT, to their own inbox and no one else's: what publish would install (the published design when the signature has no draft), with one email's real values and no tracking. To see a design in a real mail client (dark mode, Outlook, a phone) before anyone gets it: use it instead of copying, assigning, publishing or installing a signature to check it. There is no recipient to set: it goes to the signed-in user's own address (sent_to in the result), never a teammate's or anyone else's. email_id chooses whose values show; the user's own by default. Sent in the background, usually within a minute. 10 an hour per user: 429 rate_limited past that, say so and stop. 422 on email_id when the user has no address in the workspace (ask whose values to show), or on draft_content when the signature has no design yet. Unknown signature or email → 404.

set_signature_recipient_rules

ChatGPT
Set a signature's rule-based targeting: the smart-field conditions tree and/or the assign_to_all_future_emails flag (provide at least one). Replaces conditions wholesale; manual and org-unit targeting are untouched. An unknown field or bad operator fails with 422.

sync_teammates

ChatGPT
Resync the workspace's team now, as the dashboard's Refresh does, instead of waiting for the daily sync: every activated teammates integration (a directory such as Google Workspace, Microsoft Entra ID or Zoho Mail) and smart fields integration (BambooHR, Okta, …) syncs, so new people, aliases and changed details (a job title) reach Scribe and their signatures. A teammates sync can add and remove teammates, a smart fields sync changes and clears their values; both install their signatures, and neither mails anyone. Takes no argument. The syncs run in the background: the result lists those started. An integration whose sync already runs, or that lost its access, is left out. 409 sync_already_running when every sync already runs, integration_access_lost when every integration must be reconnected first, no_integration_to_sync when none is connected (relay the dashboard link).

update_asset

ChatGPT
Update an asset's metadata (name and/or role) by UUID. The image bytes can't be changed — create a new asset to replace them. An unknown role returns 422.

update_email

ChatGPT
Change an email's address (works for primary and alias addresses). Only available when the workspace manages its own team list — a directory integration returns a 409 conflict. The new address is validated → 422 on failure.

update_folder

ChatGPT
Rename a signature folder by UUID. A blank name returns 422.

update_marketing_campaign

ChatGPT
Update a marketing campaign by UUID. Only the fields you pass change (omit = leave as-is; content: null clears it). status is read-only — use schedule/pause/resume to change it. Invalid enums, unknown smart fields, or unknown signature templates return 422.

update_signature

ChatGPT
Update a signature template by UUID. Stages draft_content (the working copy) — the live content only changes when you publish_signature. Only the fields you pass change (omit = leave as-is; draft_content: null / folder_id: null clear them). When editing draft_content, call get_content_schema first for the block-tree schema, enum values (incl. the non-obvious icon names), and a worked example; an invalid tree returns 422 naming each offending field and its allowed values. Blocks are CLOSED: every key you add must exist in the schema, so build each block by adapting the schema's example rather than attaching extra keys to carry styling or smart-field values — an invented key fails the whole update with unknown_property.

update_signature_variant

ChatGPT
Create or update a signature's reply/internal variant (upsert). Passing draft_content or activated: true creates the variant if it doesn't exist yet. draft_content stages the variant's working copy — publish_signature_variant copies it live. Also toggles activated (use a distinct variant vs. the primary), hidden (show no signature on this kind of email), and show_marketing_campaigns. Only the fields you pass change (omit = leave as-is; draft_content: null clears it). When editing draft_content, call get_content_schema first. Variants require an active Microsoft 365 signatures integration — otherwise 409 variants_unavailable.

update_smart_field

ChatGPT
Update a custom smart field's definition or its integration link. Default fields are read-only (422) and the computed Email field is not addressable (404). An invalid kind or unknown integration returns 422.

update_teammate

ChatGPT
Set a teammate's smart-field values. Pass the teammate's UUID and an array of { smart_field_id, value }. Only manually-editable fields change — integration-synced and image fields in the payload are ignored. Email addresses are managed separately, not here.

Capabilities

WritesInteractive

Example Prompts

Click any prompt to copy it.

App Stats

66

Tools

3

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily