Scripe relaunch is live.See what's new

API v1 · MCP — agents

MCP tool catalogue

The Scripe MCP server lists 35 tools for 116 operations: the 8 planning operations as tools of their own, 26 domain tools carrying the other 108, and describe_actions. A domain tool takes the operation as action and its arguments in arguments:

json
{ "name": "ideas_write", "arguments": { "action": "create_idea", "arguments": { "title": "Why most carousels fail" } } }

Each operation keeps the name, arguments, scopes, rate bucket and behaviour of the flat tool of the same name — see MCP tools & contracts for every contract, and MCP §1.1 for how the catalogue is served. describe_actions returns an operation's full description and JSON input schema.

Tools listed by name

ToolAnnotationsSummary
get_planning_overviewreadOnlyHint, idempotentHintSTART HERE to plan Scripe content: the whole workspace calendar in ONE call.
get_profile_planning_contextreadOnlyHint, idempotentHinteverything you need to write good ideas and posts for Scripe profiles, in ONE bounded call: pass profileIds (up to 10 per call — every profile you are planning for, e.g. all with open slots from get_planning_overview) or one…
preview_planreadOnlyHintstep 1 of planning Scripe content into calendar slots, for one or many profiles in ONE call.
commit_planidempotentHintstep 2 of Scripe planning: write a plan preview_plan returned, in ONE call, once the user has seen the plan and said yes (unless they asked you to plan without asking).
draft_planned_postsidempotentHintstep 3 of Scripe planning: turn ideas planned into slots into DRAFT posts in those same slots, many at once (up to 20).
request_reviewidempotentHintsend Scripe posts for REVIEW and assign the reviewer, many at once (up to 50): each post moves into the workspace's review stage with a pending review for that person, and the reviewer gets ONE notification for the whole batch.
list_waiting_for_mereadOnlyHint, idempotentHintwhat waits on YOU in this Scripe workspace: posts you are the assigned reviewer of (still in review, not yet on LinkedIn) and content questions sent to you that nobody has answered yet.
get_planning_signalsreadOnlyHint, idempotentHintwhat is HAPPENING around Scripe profiles, for planning from evidence, in ONE bounded call (up to 10 profiles; omit profileIds for every profile you can reach).

Domain tools

ToolAnnotationsOperations
workspace_readreadOnlyHint, idempotentHintget_workspace, list_workspaces, list_projects, get_project, list_jobs, get_job, list_company_pages, get_workspace_context, list_team, get_usage
workspace_writeopenWorldHintswitch_workspace, create_upload_url, cancel_job
posts_readreadOnlyHint, idempotentHintlist_posts, get_post, list_post_statuses, get_post_engagements
posts_writeopenWorldHintcreate_post_draft, update_post, schedule_post, generate_post, attach_media_to_post, publish_post
posts_deletedestructiveHintdelete_post, update_post_engagements
ideas_readreadOnlyHint, idempotentHintlist_ideas, get_idea, list_for_you_ideas, get_for_you_idea
ideas_writecreate_idea, update_idea, schedule_idea, attach_media_to_idea, generate_post_ideas, save_for_you_idea, dismiss_for_you_idea
ideas_deletedestructiveHintdelete_idea
calendar_readreadOnlyHintlist_notes, get_note, get_posting_times, list_calendar, get_next_free_slot, get_goals, list_calendar_slots
calendar_writecreate_note, update_note, update_posting_schedule, fill_calendar_slot
calendar_deletedestructiveHint, idempotentHintdelete_note
knowledge_readreadOnlyHint, idempotentHintget_source, list_knowledge, get_knowledge_doc, list_sources, search_knowledge, read_knowledge_document
knowledge_writeopenWorldHintcreate_source_text, create_source_file, add_to_knowledge_base
knowledge_deletedestructiveHint, idempotentHintdelete_knowledge_doc, delete_source
media_readreadOnlyHint, idempotentHintsearch_media
media_writecreate_media_asset, generate_image, generate_carousel
media_deletedestructiveHint, idempotentHintdelete_media_asset
analytics_readreadOnlyHint, idempotentHintget_analytics_overview, list_post_analytics, search_viral_posts, get_analytics_report, get_cross_workspace_analytics_overview, get_cross_workspace_analytics_report
brand_readreadOnlyHint, openWorldHintget_settings, get_engagement_policy, get_positioning, draft_positioning_from_website, get_personal_dna, list_content_topics
brand_writeupdate_tone_of_voice, update_engagement_policy, update_positioning, update_global_tone_of_voice, update_personal_dna, create_content_topic, assign_content_topic
brand_deletedestructiveHint, idempotentHintunassign_content_topic
organize_readreadOnlyHint, idempotentHintlist_labels, list_posts_with_label, list_campaigns, get_campaign, list_content_questions, get_content_question
organize_writeopenWorldHintcreate_label, update_label, update_post_labels, create_campaign, update_campaign, set_post_campaign, create_content_question, update_content_question, send_content_question, nudge_content_question, answer_content_question
organize_deletedestructiveHintdelete_label, delete_campaign, delete_content_question
community_readreadOnlyHint, idempotentHintlist_profile_lists, get_profile_list
community_writeidempotentHint, openWorldHintadd_profile_to_list

workspace_read

OperationSummary
get_workspace()the Scripe workspace this connection is currently acting against, including plan and the principal envelope (OAuth client + acting user, or API key).
list_workspaces()every Scripe workspace this connection can reach; for an OAuth connection, every workspace the consenting user belongs to plus every client workspace billed to an agency they own.
list_projects(cursor?: string, limit?: int)the Scripe projects (LinkedIn accounts, company pages and amplifiers) in the connected workspace, newest first.
get_project(projectId?: string)one Scripe project (a LinkedIn account, company page or amplifier) by id.
list_jobs(type?: oneOrMany<POST_GENERATION|KB_INGEST_TEXT|KB_INGEST_FILE|KB_INGEST_URL|KB_INGEST_YOUTUBE|SOURCE_INGEST_FILE|IMAGE_GENERATION|CAROUSEL_GENERATION>, status?: oneOrMany<QUEUED|RUNNING|DONE|FAILED|CANCELLED>, dateFrom?: date, dateTo?: date, cursor?: string, limit?: int)async Scripe jobs (generation, ingest, indexing) in the workspace, newest first.
get_job(jobId: string)one async Scripe job by id, including a live progress snapshot (percent + stage label) when the worker has reported one.
list_company_pages()every LinkedIn company page discovered or activated in the active Scripe workspace; the delta over list_projects: activation status, stored admin token health (as of last validation, never a live probe), follower count, and the activated…
get_workspace_context()one-call overview of the active Scripe workspace: plan + feature flags, whether the review workflow is required, and up to 25 projects with display name, type, stored LinkedIn connection health, and posting streak.
list_team()the active Scripe workspace's team members: display name, email, role (the label the dashboard shows: "Admin", "Member" or "Client"), avatar, join date, and the projects each member is individually assigned to.
get_usage(projectId?: string)what this Scripe workspace has used of its limits, and whether the next AI job would be accepted.

workspace_write

OperationSummary
switch_workspace(workspaceId: string)change the active Scripe workspace for this connection.
create_upload_url(contentType: string, maxSizeBytes?: int)mint a presigned PUT URL for uploading bytes into Scripe directly.
cancel_job(jobId: string)cancel a queued Scripe job.

posts_read

OperationSummary
list_posts(projectId?: string, status?: oneOrMany<waitingProcessing|draft|waitingApproval|approved|rejected|published|scheduled|suggested>, statusCategory?: oneOrMany<suggested|draft|inProgress|review|scheduled|published>, statusId?: oneOrMany<string>, delivery?: oneOrMany<not_scheduled|scheduled|due|missed|published>, review?: oneOrMany<not_requested|pending|approved|rejected>, dateFrom?: date, dateTo?: date, publishedFrom?: date, publishedTo?: date, q?: string, content?: preview|full|none, cursor?: string, limit?: int)the LinkedIn posts and drafts in a Scripe project, newest first.
get_post(postId: string)one Scripe post (a LinkedIn post or draft) by id — the full content, which list_posts only excerpts — including the media it will publish with — read that before attach_media_to_post, which is a full-state write — and the workspace…
list_post_statuses(projectId?: string)a Scripe project's content pipeline: every kanban column (draft / inProgress / review / scheduled / published categories) with postCount, how many posts sit in it right now.
get_post_engagements(postId: string)a Scripe post's team engagement timeline: the likes, comments and reposts queued to fire under OTHER brands' LinkedIn identities after the post goes live, plus availableActors — the workspace brands and company pages this post could…

posts_write

OperationSummary
create_post_draft(idempotencyKey?: string, projectId?: string, content?: string, title?: string, contentType?: PERSONAL|BUSINESS_INTERNAL|BUSINESS_EXTERNAL|EDUCATIONAL|UNKNOWN, scheduledFor?: string|null)save the user's own text as a real LinkedIn post in a Scripe project: it lands with the project's posts (NOT on the idea board), ready to edit, schedule and publish.
update_post(postId: string, content?: string, title?: string, contentType?: PERSONAL|BUSINESS_INTERNAL|BUSINESS_EXTERNAL|EDUCATIONAL|UNKNOWN, statusCategory?: suggested|draft|inProgress|review|scheduled|published, statusId?: string, scheduledFor?: string|null, autoLike?: bool, autoComment?: bool)edit an existing Scripe LinkedIn post's content/title/contentType, change its custom status (by statusCategory or statusId), and/or UNSCHEDULE it via scheduledFor: null.
schedule_post(postId: string, confirmationToken?: string, scheduledFor: string, autoLike?: bool, autoComment?: bool)put an existing Scripe post on the calendar to go live on LinkedIn.
generate_post(idempotencyKey?: string, projectId?: string, source: {type: text|note|topic|idea, text?: string, noteId?: string, topicId?: string, ideaId?: string}, scheduledFor?: string|null, options?: {language?: string, contentType?: PERSONAL|BUSINESS_INTERNAL|BUSINESS_EXTERNAL|EDUCATIONAL|UNKNOWN}, wait_for_completion?: bool)THE way to write a LinkedIn post for the user ("write me a post about X"): Scripe drafts it in the profile's own voice — tone, voice samples, knowledge base — and saves it as a draft, from a brief (source.type: "text"), a note, a board idea or a source topic. Returns a Job to poll.
attach_media_to_post(postId: string, media: {kind: images, images: ({source: key, key: string, alt?: string, name?: string}|{source: library, assetId: string, alt?: string})[]}|{kind: video, video: {key: string, alt?: string, name?: string, thumbnailKey?: string, title?: string}}|{kind: document, document: {key: string, alt?: string, name?: string, title?: string}}|{kind: none})set a Scripe post's media in one FULL-STATE write: it replaces whatever the post carried, so to add a second image read media from get_post first and send the existing entries alongside the new one.
publish_post(projectId: string, postId: string, confirmationToken?: string)publish a Scripe post to LinkedIn immediately.

posts_delete

OperationSummary
delete_post(postId: string, confirmationToken?: string)PERMANENTLY delete a Scripe post — TWO-PHASE by design, and the only way to remove a post the user did not want.
update_post_engagements(postId: string, add?: ({actorProjectId?: string, actorCompanyPageId?: string, engagementType: LIKE|COMMENT|REPOST, content?: string, reactionType?: LIKE|CELEBRATE|SUPPORT|LOVE|INSIGHTFUL|FUNNY, delayMinutes?: int})[], modify?: ({engagementId: string, actorProjectId?: string, actorCompanyPageId?: string, engagementType: LIKE|COMMENT|REPOST, content?: string, reactionType?: LIKE|CELEBRATE|SUPPORT|LOVE|INSIGHTFUL|FUNNY, delayMinutes?: int})[], remove?: string[])edit a Scripe post's team engagement timeline (add / modify / remove queued likes, comments and reposts), exactly what the post editor's team engagement panel does.

ideas_read

OperationSummary
list_ideas(projectId?: string, status?: inbox|in_production|review|done, limit?: int, cursor?: string)a Scripe project's idea board, newest first: title, brief fields (pillar, post format, hook), the DERIVED workflow status (inbox | in_production | review | done), calendar placement, and whether the idea is waiting on someone's input.
get_idea(projectId?: string, ideaId: string)one idea from a Scripe idea board, in full: the creative brief (pillar, format, hook, topic), the capture evidence (angle, proven-idea stats, reference posts, origin), the idea's media (attached images / a carousel cover with img_……
list_for_you_ideas(projectId?: string, lane?: REACH|TRUST|CONVERT, sourceType?: topic|rss|youtube|website|linkedin_profile|chat_input, postType?: string, query?: string, saved?: all|unsaved|saved, limit?: int, cursor?: string)the Scripe "For you" suggested post ideas (Explore → For you): ideas Scripe generated for a profile from trending LinkedIn topics, followed sources, the client's own results and knowledge base.
get_for_you_idea(ideaId: string)one Scripe "For you" idea in full: title, hook, angle, lane and format, the ARGUMENT for it with numbered markers, and every SOURCE it was built on — the origin item (article, video, followed profile, knowledge document) and each cited…

ideas_write

OperationSummary
create_idea(projectId?: string, title: string, content?: string, status?: inbox|in_production, pillar?: string, postType?: string, assetFormat?: string, hook?: string, topic?: string)add an idea to a Scripe project's idea board, at the top of its column — exactly like creating a card on the board.
update_idea(projectId?: string, ideaId: string, title?: string, content?: string, status?: inbox|in_production, pillar?: string|null, postType?: string|null, assetFormat?: string|null, hook?: string|null, topic?: string|null)edit an idea's brief on a Scripe idea board: title, body, pillar, post format, visual format, hook, topic, and/or its workflow status.
schedule_idea(projectId?: string, ideaId: string, scheduledFor: string|null)place an idea on a DAY of a Scripe idea board's content calendar (or remove it with null) — planning only, fully reversible, no confirmation.
attach_media_to_idea(projectId?: string, ideaId: string, media: {kind: images, images: {assetId: string}[]}|{kind: none})set a Scripe board idea's media in one FULL-STATE write: it replaces whatever the idea carried, so to add an image read media from get_idea first and send the existing img_… ids alongside the new one.
generate_post_ideas(idempotencyKey?: string, projectId?: string, request: string, text?: string, knowledgeDocumentId?: string, count?: int, funnelStage?: REACH|TRUST|CONVERT)turns material into LinkedIn post ideas in Scripe — the same suggested ideas the Scripe dashboard shows: each is saved to the brand's idea pool ("Suggested ideas for you" → "Your files") with a title, a hook, an angle and a brief that…
save_for_you_idea(ideaId: string, projectId?: string, forAllSuitedProfiles?: bool)the "Save" on a Scripe "For you" card: puts the idea on a profile's idea board with its brief, sources and template, exactly as the dashboard does.
dismiss_for_you_idea(ideaId: string, restore?: bool)"Not interested" on a Scripe "For you" card: hides the idea for EVERY profile it suits and teaches Scripe to stop suggesting similar ideas.

ideas_delete

OperationSummary
delete_idea(projectId?: string, ideaId: string, confirmationToken?: string)PERMANENTLY delete an idea from a Scripe idea board, and everything attached to it (assignments, sources, activity, labels, post links, input requests — recipients' public answer links stop working).

calendar_read

OperationSummary
list_notes(projectId?: string, folderId?: string|null, dateFrom?: date, dateTo?: date, q?: string, cursor?: string, limit?: int)the notes in a Scripe project, newest first.
get_note(noteId: string)one Scripe note by id (the short-form thoughts that seed LinkedIn posts).
get_posting_times(projectId: string, days?: int, timeZone?: string)when this Scripe project's LinkedIn posts perform best: the user's OWN posting-time buckets (per hour of day and per weekday×hour) with post counts, impressions, and engagement, aggregated over a lookback window.
list_calendar(projectId: string, from: date, to: date, timeZone?: string)a Scripe project's LinkedIn content calendar for a date range: scheduled and planned posts (with workflow status and any last publish error), note slots, idea placements, and the recurring posting-time template.
get_next_free_slot(projectId: string)the next free LinkedIn posting slot for a Scripe project, from its posting-time template (falls back to 09:00 on the first open day when no template is configured).
get_goals(projectId?: string, period?: previous|current|next)Scripe's posting GOALS and progress, as the dashboard's goal tile shows them: per profile the goal period (the workspace's planning cycle, 1–12 weeks), the weekly post goal, the lane mix, and per lane (REACH / TRUST / CONVERT) the target,…
list_calendar_slots(projectId?: string, from?: date, to?: date, days?: int, period?: previous|current|next, weeksAhead?: int, onlyEmpty?: bool)a Scripe profile's PLANNED posting slots ahead, by day: every posting time of its schedule with the content lane the posting goal gives it (REACH / TRUST / CONVERT), the time in the profile's zone, a pillar hint, and its state — empty,…

calendar_write

OperationSummary
create_note(idempotencyKey?: string, projectId?: string, content?: string, folderId?: string|null, date?: string, contentType?: PERSONAL|BUSINESS_INTERNAL|BUSINESS_EXTERNAL|EDUCATIONAL|UNKNOWN)add a note to a Scripe project.
update_note(noteId: string, content?: string, folderId?: string|null)edit an existing Scripe note's body and/or folder.
update_posting_schedule(projectId: string, confirmationToken?: string, slots: ({time: string, days: (sunday|monday|tuesday|wednesday|thursday|friday|saturday)[]})[], timeZone?: string, weekStartsOn?: sunday|monday)set a Scripe project's RECURRING LinkedIn posting-time template - the weekly slots get_next_free_slot suggests from and the calendar draws as open.
fill_calendar_slot(projectId?: string, slotAt: string, content?: string, title?: string, postId?: string, ideaId?: string, forYouIdeaId?: string, campaignId?: string)put a post into one planned Scripe posting slot as a DRAFT (never scheduled to LinkedIn).

calendar_delete

OperationSummary
delete_note(noteId: string, permanent?: bool, confirmationToken?: string)remove a Scripe note.

knowledge_read

OperationSummary
get_source(sourceId: string)one Scripe source (a transcribed long-form input for LinkedIn drafting) by id.
list_knowledge(projectId?: string, folderId?: string, cursor?: string, limit?: int)the Scripe knowledge-base documents visible to a project, newest first: the project's own documents plus workspace-wide documents (0 assignments = visible to all projects).
get_knowledge_doc(projectId?: string, documentId: string)one Scripe knowledge document: metadata, processing status, tags, the chunk count, and a text preview capped at 2,000 characters — the full body is never returned over the API.
list_sources(projectId?: string, cursor?: string, limit?: int)a Scripe project's sources (transcribed long-form inputs for LinkedIn drafting), newest first: name, status, duration, and a 2 KB transcript preview per row.
search_knowledge(query: string, projectId?: string, folderId?: string, documentIds?: string[], limit?: int)search a Scripe profile's knowledge base by MEANING: the passages most relevant to a topic, from uploaded documents, synced Drive / GitHub files, Granola meeting notes and the profile's own post history.
read_knowledge_document(documentId: string, projectId?: string, maxCharacters?: int)read ONE Scripe knowledge-base document in full (a Granola meeting, an uploaded file, a synced Drive or GitHub file), in order, up to maxCharacters (default 12,000, at most 24,000).

knowledge_write

OperationSummary
create_source_text(idempotencyKey?: string, projectId?: string, text: string, name?: string|null)create a Scripe source (long-form input for LinkedIn drafting) directly from caller-supplied text.
create_source_file(idempotencyKey?: string, projectId?: string, uploadId?: string, content_base64?: string, sha256?: string, mimeType?: string, filename?: string, name?: string|null)asynchronous ingest of an audio / video / pdf / image / docx file into Scripe as a source for LinkedIn drafting.
add_to_knowledge_base(idempotencyKey?: string, type: text|file|url|youtube, projectId?: string|null, name?: string, text?: string, uploadId?: string, content_base64?: string, sha256?: string, mimeType?: string, filename?: string, url?: url)asynchronous ingest into the Scripe knowledge base.

knowledge_delete

OperationSummary
delete_knowledge_doc(projectId: string, documentId: string, confirmationToken?: string)PERMANENTLY delete a Scripe knowledge-base document.
delete_source(sourceId: string, confirmationToken?: string)PERMANENTLY delete a Scripe source (a transcribed long-form input) — TWO-PHASE by design.

media_read

OperationSummary
search_media(projectId?: string, query?: string, source?: UPLOAD|LINKEDIN_SYNC|GENERATED, cursor?: string, limit?: int)search a Scripe project's reachable media-library images (owned or profile-assigned), READY only, newest first.

media_write

OperationSummary
create_media_asset(projectId?: string, content_base64?: string, sha256?: string, uploadId?: string, fileName?: string, mimeType?: string, alt?: string, title?: string)add the user's OWN image to a Scripe project's media library — send the bytes inline as content_base64 (small files only, ~3 MB decoded max — larger requests die at the platform edge as a bare 413), or pass an uploadId from…
generate_image(idempotencyKey?: string, projectId: string, kind: PHOTO|PHOTO_EDIT|IMAGE_EDIT, promptAsset?: string, subject?: string, steer?: string, referenceMode?: style|replicate, referenceMediaIds?: string[], subjectMediaIds?: string[], baseMediaId?: string, wait_for_completion?: bool)AI-generate a raster image into a Scripe project's media library.
generate_carousel(idempotencyKey?: string, projectId: string, topic: string, steer?: string, outline?: string, templateId?: string, wait_for_completion?: bool)AI-generate a multi-slide LinkedIn carousel into a Scripe project's media library: the model storyboards the deck, writes every slide in the project's own voice, generates any imagery the design calls for, stamps the project's brand…

media_delete

OperationSummary
delete_media_asset(mediaId: string, confirmationToken?: string)remove an image from a Scripe project's media library — TWO-PHASE by design, and the undo for a create_media_asset or generate_image the user did not want.

analytics_read

OperationSummary
get_analytics_overview(projectId?: string, dateFrom?: date, dateTo?: date)current vs previous-period LinkedIn analytics rollup for one or more Scripe projects: post count, impressions, engagement rate, follower growth, and posting activity.
list_post_analytics(projectId?: string, postId?: oneOrMany<string>, dateFrom?: date, dateTo?: date, limit?: int, offset?: int, sort?: recent|impressions|engagement, content?: preview|full|none)per-post LinkedIn analytics (views, likes, comments, shares, engagement rate) for posts already LIVE on LinkedIn, for one or more Scripe projects.
search_viral_posts(projectId?: string, query: string, sortBy?: relevance|engagement|recent, language?: all|english|german, minEngagement?: int, minOutlierMultiplier?: number, mediaFormats?: (carousel|multi_image|image|video|text|article|other)[], publishedWithinDays?: int, limit?: int)semantic search over Scripe's inspiration feed for high-performing LinkedIn posts relevant to a topic.
get_analytics_report(projectId?: string, dateFrom?: date, dateTo?: date, currency?: USD|EUR|GBP, cpm?: number)the full LinkedIn analytics report for one or more Scripe projects over a date range: executive summary (posts, impressions, likes/comments/shares, engagement rate, follower growth, earned media value), per-author performance, the top…
get_cross_workspace_analytics_overview(workspaceId?: oneOrMany<string>, dateFrom?: date, dateTo?: date)the Scripe LinkedIn analytics rollup (posts, impressions, engagement rate, follower growth, posting activity) for EVERY workspace this connection can reach, in ONE call.
get_cross_workspace_analytics_report(workspaceId?: oneOrMany<string>, dateFrom?: date, dateTo?: date, currency?: USD|EUR|GBP, cpm?: number)the full Scripe LinkedIn analytics report (executive summary, earned media value, per-author performance, top posts, daily engagement series, follower timeline) for every workspace this connection can reach, one report per workspace under…

brand_read

OperationSummary
get_settings(projectId?: string)a Scripe project's curated settings: generation-context knobs (language, formality, post length / formatting / emoji preferences), the project tone-of-voice fields (custom instructions, CTAs, footer, emoji + bullet symbols), the…
get_engagement_policy(projectId?: string)a Scripe project's engagement-policy defaults (auto-like / comment / reshare: OFF | REQUEST | ON), per-requester overrides, whether engagement CAN be enabled (stored LinkedIn-connection state — no live probe), and the plan-lock state.
get_positioning(workspaceId?: string)reads a Scripe workspace's Positioning: the COMPANY document (what the company does and for whom, mission, vision, core statements, promised results, and the website it was synced from), the TARGET-AUDIENCE document, and the GLOBAL…
draft_positioning_from_website(workspaceId?: string, url: string, language?: english|german)is Scripe's website sync: it reads a company's own website and DRAFTS the workspace's positioning from it — company description, mission, vision, core statements, audience line, promised results, and the target-audience document.
get_personal_dna(projectId?: string)reads a Scripe profile's positioning — the PERSON document of the content strategy (dashboard: knowledge base → profile folder → Positioning; "You" on the Strategy card): who the author is (intro), their credibility points, their…
list_content_topics(workspaceId?: string, profileId?: string)lists a Scripe workspace's content topics (the dashboard calls them TOPIC GROUPS / Themen — the list under Settings → Organization → Positioning) and, for each, the people/brands it is assigned to.

brand_write

OperationSummary
update_tone_of_voice(projectId: string, confirmationToken?: string, language?: string, germanFormality?: du|sie, postLengthPreference?: short|standard|long|1|2|3, formattingPreference?: short|standard|long|3|0|2, emojiPreference?: none|moderate|frequent|1|3|5, customInstructions?: string, customInstructionsEnabled?: bool, ctas?: string, footer?: string, footerEnabled?: bool, emojis?: string[], bulletSymbols?: string[])update a Scripe project's PROJECT-LEVEL tone-of-voice and generation settings - TWO-PHASE by design.
update_engagement_policy(projectId: string, confirmationToken?: string, likeDefault: OFF|REQUEST|ON, commentDefault: OFF|REQUEST|ON, reshareDefault: OFF|REQUEST|ON)set a Scripe project's engagement-policy defaults (auto-like / comment / reshare) - TWO-PHASE by design, and DIRECTION-RESTRICTED: this surface can set OFF or REQUEST only; turning a policy fully ON (autonomous engagement under this…
update_positioning(workspaceId?: string, companyDescription?: string, mission?: string, vision?: string, statements?: string, audienceLine?: string, results?: string, websiteUrl?: string, targetAudience?: string, overwrite?: bool, confirmationToken?: string)writes a Scripe workspace's Positioning documents (company description, mission, vision, statements, audience line, results, website; and the separate target-audience document).
update_global_tone_of_voice(workspaceId?: string, customInstructions?: string, customInstructionsEnabled?: bool, footer?: string, footerEnabled?: bool, allowPersonalBrandCustomInstructions?: bool, overwrite?: bool, confirmationToken?: string)writes a Scripe workspace's organization-wide tone of voice (custom instructions, footer, per-brand instruction policy).
update_personal_dna(projectId: string, intro?: string, credibility?: string, opinions?: string, stories?: string, overwrite?: bool, confirmationToken?: string)writes a Scripe profile's positioning (the person document: intro, credibility, opinions, stories — list sections one entry per line).
create_content_topic(idempotencyKey?: string, workspaceId?: string, title: string, searchTerm?: string|null, profileIds?: string[])adds a content topic (the Scripe dashboard calls it a TOPIC GROUP) to a Scripe workspace — one of the themes the workspace wants to be known for on LinkedIn, which Scripe mines the LinkedIn corpus around and builds post ideas from.
assign_content_topic(workspaceId?: string, topic: string, profiles: string[])assigns an existing Scripe content topic (the dashboard's TOPIC GROUP / Thema, Settings → Organization → Positioning) to one or more people/brands, so Scripe builds their post ideas around it.

brand_delete

OperationSummary
unassign_content_topic(workspaceId?: string, topic: string, profiles: string[])removes a Scripe content topic (the dashboard's TOPIC GROUP / Thema) from one or more people/brands, so it no longer steers their post ideas.

organize_read

OperationSummary
list_labels(workspaceId?: string)list every label of the Scripe workspace (the post labels managed under Settings → Labels), with each label's colour, description and label group.
list_posts_with_label(workspaceId?: string, labelId: string, projectId?: string, limit?: int, cursor?: string)list the Scripe posts that carry one label, newest first, across every profile the user can access (or one profile with projectId).
list_campaigns(workspaceId?: string, status?: (draft|active|completed|archived)[])list the Scripe workspace's campaigns (the Campaigns page): title, emoji, status, start and end dates, the profiles each is narrowed to (none = workspace-wide), labels and post count.
get_campaign(workspaceId?: string, campaignId: string)one Scripe campaign in full: its brief (summary + description), dates, status, labels, the profiles it is narrowed to with each profile's progress as the home page's campaign tile shows it (posted / scheduled / in progress / no post yet),…
list_content_questions(projectId?: string, ideaId: string)the content questions of one Scripe idea (the idea page's Questions rail): each question's text, status (draft / scheduled / sent / answered) and who it is for.
get_content_question(projectId?: string, ideaId: string, questionId: string)one content question of a Scripe idea in full: text, why it is asked, status, assignment, every recipient with their status (pending / answered …, and when they were last reminded) and every answer.

organize_write

OperationSummary
create_label(workspaceId?: string, title: string, color?: string, description?: string, labelGroupId?: string)create a new label in the Scripe workspace, the same label the dashboard's Settings → Labels page creates.
update_label(workspaceId?: string, labelId: string, title?: string, color?: string, description?: string, labelGroupId?: string|null)rename, recolour or re-describe a Scripe label, or move it into (or out of, with labelGroupId: null) a label group.
update_post_labels(workspaceId?: string, postIds: string[], add?: string[], remove?: string[], replace?: string[])apply labels to Scripe posts or take them off, on ONE or MANY posts in one call (up to 50).
create_campaign(workspaceId?: string, title: string, emoji?: string, summary?: string, description?: string, status?: draft|active|completed|archived, startDate: string, endDate: string, profileIds?: string[], labelIds?: string[])create a campaign in the Scripe workspace: a title, start and end date, and optionally an emoji, a one-line summary, the brief (description — what the posts should say), a status (default draft), the profiles it is for (profileIds;…
update_campaign(workspaceId?: string, campaignId: string, title?: string, emoji?: string, summary?: string, description?: string, status?: draft|active|completed|archived, startDate?: string, endDate?: string, profileIds?: string[], labelIds?: string[])change a Scripe campaign: title, emoji, summary, brief (description), status, dates, the profiles it is narrowed to (profileIds REPLACES the set; [] = workspace-wide) or its labels (labelIds REPLACES the set).
set_post_campaign(workspaceId?: string, postIds: string[], campaignId: string|null)put one or many Scripe posts (up to 50) into a campaign, or take them out with campaignId: null.
create_content_question(projectId?: string, ideaId: string, question: string, why?: string, placeholder?: string, profileIds?: string[], respondentUserIds?: string[], addToCheckIn?: bool)add a content question to a Scripe idea: something the post needs from a person (a detail, a number, a story).
update_content_question(projectId?: string, ideaId: string, questionId: string, question?: string, why?: string|null, placeholder?: string|null, profileIds?: string[], respondentUserIds?: string[])edit a Scripe content question's text, why, placeholder, or who it is for (profileIds / respondentUserIds REPLACE the assignment).
send_content_question(projectId?: string, ideaId: string, questionId: string, when: now|next_check_in|at, sendAt?: datetime, timezone?: string, confirmationToken?: string)send a Scripe content question to the people it is assigned to: when: "next_check_in" adds it to the next content check-in, "at" schedules it (sendAt + timezone), "now" sends it immediately by the people's channels (app, email …).
nudge_content_question(projectId?: string, ideaId: string, questionId: string, recipientId: string)remind a person who has not answered a Scripe sent content question; the reminder re-sends their open check-in.
answer_content_question(projectId?: string, ideaId: string, questionId: string, answer: string, recipientId?: string)answer a Scripe content question that was sent to the signed-in user THEMSELF (only the respondent can answer; nobody answers on someone else's behalf).

organize_delete

OperationSummary
delete_label(workspaceId?: string, labelId: string, confirmationToken?: string)PERMANENTLY delete a Scripe label.
delete_campaign(workspaceId?: string, campaignId: string, confirmationToken?: string)PERMANENTLY delete a Scripe campaign with its attachments and comments.
delete_content_question(projectId?: string, ideaId: string, questionId: string, confirmationToken?: string)delete a content question from a Scripe idea.

community_read

OperationSummary
list_profile_lists(projectId?: string, includeArchived?: bool)returns the Scripe community profile lists of one brand — the named watchlists of LinkedIn people whose posts Scripe collects, shown under Community → Profiles in the Scripe dashboard.
get_profile_list(listId: string)returns one Scripe community profile list with the LinkedIn people on it — name, headline, profile URL, the note whoever added them left, and whether Scripe has collected any of their posts yet.

community_write

OperationSummary
add_profile_to_list(idempotencyKey?: string, listId: string, profile: string, note?: string|null)adds one LinkedIn person to a Scripe community profile list, so Scripe starts collecting their posts for the customer to read and engage with under Community → Profiles.