Skip to content
Scalekit Docs

Send MCP

Vendor MCP17 toolsOAuth 2.1/DCRFiles & DocumentsProductivity

Connect to Send to create, edit, and share Claude-generated documents as polished web pages with engagement tracking, custom domains, and team asset...

Send MCP connector

  1. Terminal window
    npm install @scalekit-sdk/node

    Full SDK reference: Node.js | Python

  2. Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. quickstart.ts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENV_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'sendmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Send MCP:', link)
    process.stdout.write('Press Enter after authorizing...')
    await new Promise(r => process.stdin.once('data', r))
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'sendmcp_get_guidelines',
    toolInput: {},
    })
    console.log(result)

Connect this agent connector to let your agent:

  • Feedback submit — Sends feedback about Send itself to the team that builds it
  • Skill manage — Create, update, delete, or pin a user-defined skill for this workspace
  • Sites manage — Read or change the settings of an existing site or document made with Send that the user owns, given its share id or URL
  • Getsite records — Fetch an existing Send site or document by share URL or share ID
  • Get skills, image gallery, guidelines — Fetches skills by ID, lists available skills, or semantically searches them
  • Editsite records — Modifies a Send site or document the user previously created or shared with Send

Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.

sendmcp_complete_upload#Confirms a direct-to-storage upload completed successfully. Call this after uploading to the presigned URL returned by create_presigned_upload. Returns the registered file ID that can be referenced in documents as <img src="asset:{fileId}">. This is step two of the two-step image upload flow.7 params

Confirms a direct-to-storage upload completed successfully. Call this after uploading to the presigned URL returned by create_presigned_upload. Returns the registered file ID that can be referenced in documents as <img src="asset:{fileId}">. This is step two of the two-step image upload flow.

NameTypeRequiredDescription
bucketstringrequiredThe storage bucket used for the upload. Returned as part of the presigned upload response from create_presigned_upload.
filenamestringrequiredThe original filename of the uploaded file. Must match what was passed to create_presigned_upload. Example: 'hero-image.png'.
keystringrequiredThe storage key (path) used for the upload. Returned as part of the presigned upload response from create_presigned_upload.
mime_typestringrequiredThe MIME type of the uploaded file. Must match what was passed to create_presigned_upload. Example: 'image/png'.
sizenumberrequiredThe final file size in bytes after the upload completed.
heightintegeroptionalImage height in pixels. Provide when the uploaded file is an image. Pass null for non-image files.
widthintegeroptionalImage width in pixels. Provide when the uploaded file is an image. Pass null for non-image files.
sendmcp_create_presigned_upload#Creates a presigned upload target URL so files can be uploaded directly to storage. This is step one of the two-step image upload flow. Call this first to get the presigned URL, upload the file directly to that URL, then call complete_upload to confirm the upload and register the file.2 params

Creates a presigned upload target URL so files can be uploaded directly to storage. This is step one of the two-step image upload flow. Call this first to get the presigned URL, upload the file directly to that URL, then call complete_upload to confirm the upload and register the file.

NameTypeRequiredDescription
filenamestringrequiredThe original filename of the file to upload. Example: 'hero-image.png'.
mime_typestringrequiredThe MIME type of the file. Example: 'image/png', 'image/jpeg', 'image/webp'.
sendmcp_createdocument#[STALE - upstream renamed "CreateDocument" to "CreateSite" (see sendmcp_createsite); this tool no longer exists on the upstream MCP server and will fail if invoked] Three modes: plan (pass intent only to get guidance), copy (pass sourceShareId to copy an existing doc), and create (pass html to publish a new document). If intent is passed without html or sourceShareId, returns tailored guidance — call CreateDocument again with html to actually publish. When sourceShareId is provided, the new document starts as an exact copy; do not also pass html. The html field must be a complete, self-contained HTML document starting with <!DOCTYPE html>, using no external dependencies, pure CSS and vanilla JS only, with sections wrapped in <section>, fully responsive and mobile-first, images referenced as <img src="asset:{fileId}">, all links with target="_blank" rel="noopener noreferrer", and icons as <i data-lucide="name"></i>.4 params

[STALE - upstream renamed "CreateDocument" to "CreateSite" (see sendmcp_createsite); this tool no longer exists on the upstream MCP server and will fail if invoked] Three modes: plan (pass intent only to get guidance), copy (pass sourceShareId to copy an existing doc), and create (pass html to publish a new document). If intent is passed without html or sourceShareId, returns tailored guidance — call CreateDocument again with html to actually publish. When sourceShareId is provided, the new document starts as an exact copy; do not also pass html. The html field must be a complete, self-contained HTML document starting with <!DOCTYPE html>, using no external dependencies, pure CSS and vanilla JS only, with sections wrapped in <section>, fully responsive and mobile-first, images referenced as <img src="asset:{fileId}">, all links with target="_blank" rel="noopener noreferrer", and icons as <i data-lucide="name"></i>.

NameTypeRequiredDescription
htmlstringoptionalThe complete, self-contained HTML document to publish. Must start with <!DOCTYPE html>. Single file: body then style then script. No external dependencies — pure CSS and vanilla JS only. Wrap each section in <section>. Fully responsive, mobile-first. Reference images as <img src="asset:{fileId}">. Every <a href> uses target="_blank" rel="noopener noreferrer". For icons, use <i data-lucide="name"></i>. Do not pass this when sourceShareId is provided.
intentstringoptionalOne-sentence description of what the user wants to make (max 256 characters). If passed without html or sourceShareId, the tool returns tailored guidance — call CreateDocument again with html to actually create the document.
sourceShareIdstringoptionalShare ID or full URL of an existing Send document to copy. When provided, the new document starts as an exact copy. Do not also pass html when using this field.
titlestringoptionalTitle of the document to create or copy.
sendmcp_createsite#Creates a Send site or document — a shareable HTML page. Making one takes two calls. First call — intent only. One line on what the user is making and why. Nothing is created. Returns any skills this workspace expects you to follow — brand rules, layouts, tone — and an intentId. Second call — html plus that intentId. See the html field for format requirements. To copy an existing site instead of writing one, pass sourceShareId (share ID or URL) with no html.5 params

Creates a Send site or document — a shareable HTML page. Making one takes two calls. First call — intent only. One line on what the user is making and why. Nothing is created. Returns any skills this workspace expects you to follow — brand rules, layouts, tone — and an intentId. Second call — html plus that intentId. See the html field for format requirements. To copy an existing site instead of writing one, pass sourceShareId (share ID or URL) with no html.

NameTypeRequiredDescription
htmlstringoptionalThe complete, self-contained HTML document to publish. Return ONLY raw HTML. No markdown, no code fences, no explanation. Single file: <body> then <style> then <script>. Start with <!DOCTYPE html>, then <html>, <head>, <body>. Zero external dependencies — pure CSS and vanilla JS only. Wrap each section in <section></section>. Fully responsive, mobile-first. Every interactive element must work. Reference images as <img src="asset:{fileId}"> — do not base64-encode. Every <a href> link: use target="_blank" rel="noopener noreferrer". For icons, use <i data-lucide="name"></i>.
intentstringoptionalOne line on what the user is making. ALWAYS send it alone first — no html. Returns any matching skills + an intentId.
intentIdstringoptionalALWAYS pass this back unchanged on the second call. Returned by the first; links the request to what got made.
sourceShareIdstringoptionalThe share ID or URL of an existing document to copy. When provided, the new document starts as an exact copy of the source — do not pass html.
titlestringoptionalTitle of the document. Something short and simple that describes the document.
sendmcp_editdocument#[STALE - upstream renamed "EditDocument" to "EditSite" (see sendmcp_editsite); this tool no longer exists on the upstream MCP server and will fail if invoked] Edit an existing Send document via deterministic string replacement. Requires at least one entry in edits — instruction alone does nothing. If you don't have the document's current HTML, call GetDocument first. Edits apply sequentially; if any edit fails, none are persisted. Use when the user asks to change, tweak, fix, reword, restyle, add to, or remove anything from an existing document.4 params

[STALE - upstream renamed "EditDocument" to "EditSite" (see sendmcp_editsite); this tool no longer exists on the upstream MCP server and will fail if invoked] Edit an existing Send document via deterministic string replacement. Requires at least one entry in edits — instruction alone does nothing. If you don't have the document's current HTML, call GetDocument first. Edits apply sequentially; if any edit fails, none are persisted. Use when the user asks to change, tweak, fix, reword, restyle, add to, or remove anything from an existing document.

NameTypeRequiredDescription
editsarrayrequiredArray of edit objects. Each object must include old_string (the exact text to replace, with enough surrounding context to be unique) and new_string (replacement text, or empty string to delete). Optionally set replace_all to true to replace every occurrence. Edits apply in order; all-or-nothing — if any fails, none are saved.
shareIdOrUrlstringrequiredThe document's share ID (8-char alphanumeric) or full URL (e.g. https://send.co/a/RaU0Kud4). Returned by CreateDocument or GetDocument.
codeEditstringoptionalOptional raw code edit string.
instructionstringoptionalOptional brief description of the intended change. Recorded for analytics only — does NOT perform the edit. You must still provide edits.
sendmcp_editsite#Modifies a Send site or document the user previously created or shared with Send. Use whenever the user asks to change, tweak, fix, reword, restyle, add to, or remove anything from an existing site or document — even when they don't name Send or say the word 'edit'. Edits via deterministic string replacement. Requires at least one entry in edits — instruction alone does nothing. If you don't already have the site's current bytes, call GetSite first. Edits apply sequentially against an in-memory copy; if any edit fails, none are persisted. As a last resort after repeated edit failures, fullHtml replaces the whole site while keeping the same share URL — prefer it over recreating with CreateSite, which forks a new share URL.5 params

Modifies a Send site or document the user previously created or shared with Send. Use whenever the user asks to change, tweak, fix, reword, restyle, add to, or remove anything from an existing site or document — even when they don't name Send or say the word 'edit'. Edits via deterministic string replacement. Requires at least one entry in edits — instruction alone does nothing. If you don't already have the site's current bytes, call GetSite first. Edits apply sequentially against an in-memory copy; if any edit fails, none are persisted. As a last resort after repeated edit failures, fullHtml replaces the whole site while keeping the same share URL — prefer it over recreating with CreateSite, which forks a new share URL.

NameTypeRequiredDescription
shareIdOrUrlstringrequiredThe site's share ID (8-character alphanumeric string) or full URL. Returned by CreateSite or GetSite.
codeEditstringoptionalOptional raw code edit string.
editsarrayoptionalEdits to apply, in order. Each subsequent edit sees the result of the prior. Atomic: if any edit fails, none are persisted. Each object must include old_string (exact text to replace, with enough surrounding context to be unique, byte-for-byte) and new_string (replacement text, or empty string to delete). Optionally set replace_all to true to replace every occurrence.
fullHtmlstringoptionalLast resort. Replaces the entire document with this HTML while keeping the same share URL. Only use after edits has failed repeatedly and you cannot construct a matching old_string — prefer targeted edits; regenerating a document from memory can silently drop content. Do not pass together with edits.
instructionstringoptionalOptional brief description of the intended change. Recorded for analytics only — does NOT perform the edit on its own. You must still pass edits.
sendmcp_get_guidelines#[STALE - upstream renamed "get_guidelines" to "get_skills" (guidelines are now called skills; see sendmcp_get_skills); this tool no longer exists on the upstream MCP server and will fail if invoked] Fetches Send guidelines by ID, or lists all available guidelines. With id, returns a single guideline including its full content. Without id, returns a list of all available guidelines (name and description only). Call only when the user explicitly references a guideline by name or asks to apply or browse guidelines — do not call proactively when creating or editing documents.1 param

[STALE - upstream renamed "get_guidelines" to "get_skills" (guidelines are now called skills; see sendmcp_get_skills); this tool no longer exists on the upstream MCP server and will fail if invoked] Fetches Send guidelines by ID, or lists all available guidelines. With id, returns a single guideline including its full content. Without id, returns a list of all available guidelines (name and description only). Call only when the user explicitly references a guideline by name or asks to apply or browse guidelines — do not call proactively when creating or editing documents.

NameTypeRequiredDescription
idstringoptionalID of the guideline to load. Omit to list all available guidelines (name and description only). Only call with an ID when the user has explicitly named or requested a specific guideline.
sendmcp_get_skills#Fetches skills by ID, lists available skills, or semantically searches them. Skills were previously called 'guidelines', and users may also say 'template' — when the user mentions making, editing, searching, or using a Send skill, guideline, or template, they mean these. Skills shape how sites are created — brand systems, layout patterns, doc-type playbooks. Workspace skills (created by this team) outrank Send skills (official, send/* ids) when both fit. With id: returns the skill including its full content — pass an array of ids to load several in one call. With query: semantic search — describe what the user is making and get the best-matching skills grouped by source with similarity scores. Neither: returns a list of all available skills (name and description only), workspace skills first.2 params

Fetches skills by ID, lists available skills, or semantically searches them. Skills were previously called 'guidelines', and users may also say 'template' — when the user mentions making, editing, searching, or using a Send skill, guideline, or template, they mean these. Skills shape how sites are created — brand systems, layout patterns, doc-type playbooks. Workspace skills (created by this team) outrank Send skills (official, send/* ids) when both fit. With id: returns the skill including its full content — pass an array of ids to load several in one call. With query: semantic search — describe what the user is making and get the best-matching skills grouped by source with similarity scores. Neither: returns a list of all available skills (name and description only), workspace skills first.

NameTypeRequiredDescription
idstringoptionalID of the skill to load, or an array of IDs to load several at once. Returns full content.
querystringoptionalNatural-language description of what the user is making. Returns the best-matching skills ranked by similarity. Ignored when id is provided.
sendmcp_getdocument#[STALE - upstream renamed "GetDocument" to "GetSite" (see sendmcp_getsite); this tool no longer exists on the upstream MCP server and will fail if invoked] Fetch an existing Send document by share URL or share ID. Returns the full HTML source and metadata. Call this before EditDocument when you need the document's current HTML bytes.1 param

[STALE - upstream renamed "GetDocument" to "GetSite" (see sendmcp_getsite); this tool no longer exists on the upstream MCP server and will fail if invoked] Fetch an existing Send document by share URL or share ID. Returns the full HTML source and metadata. Call this before EditDocument when you need the document's current HTML bytes.

NameTypeRequiredDescription
shareIdOrUrlstringrequiredThe document's share ID (8-char alphanumeric string), slug (e.g. 'my-proposal-RaU0Kud4'), or full URL (e.g. 'https://send.co/a/RaU0Kud4').
sendmcp_getsite#Fetch an existing Send site or document by share URL or share ID. Returns the full HTML source and metadata; the response includes shareId for EditSite or CreateSite (copy mode).1 param

Fetch an existing Send site or document by share URL or share ID. Returns the full HTML source and metadata; the response includes shareId for EditSite or CreateSite (copy mode).

NameTypeRequiredDescription
shareIdOrUrlstringrequiredThe document's share ID (8-char alphanumeric string), slug (e.g. 'my-proposal-RaU0Kud4'), or full URL (e.g. 'https://send.co/a/RaU0Kud4').
sendmcp_manage_guideline#[STALE - upstream renamed "manage_guideline" to "manage_skill" (guidelines are now called skills; see sendmcp_manage_skill); this tool no longer exists on the upstream MCP server and will fail if invoked] Create, update, or delete a user-defined Send guideline. Call only when the user explicitly asks to create, edit, or delete a guideline — not during document creation. Actions: create (provide name, description, content), update (provide id and the fields to change), delete (provide id). Destructive for the delete action.5 params

[STALE - upstream renamed "manage_guideline" to "manage_skill" (guidelines are now called skills; see sendmcp_manage_skill); this tool no longer exists on the upstream MCP server and will fail if invoked] Create, update, or delete a user-defined Send guideline. Call only when the user explicitly asks to create, edit, or delete a guideline — not during document creation. Actions: create (provide name, description, content), update (provide id and the fields to change), delete (provide id). Destructive for the delete action.

NameTypeRequiredDescription
actionstringrequiredAction to perform on the guideline. 'create' creates a new guideline (requires name, description, content). 'update' modifies an existing guideline (requires id). 'delete' removes a guideline permanently (requires id).
contentstringoptionalFull guideline content — includes instructions, code samples, asset references, example document URLs. Required when action is 'create'. Optional for 'update'.
descriptionstringoptionalShort description of the guideline's purpose. Displayed in the guidelines list.
idstringoptionalGuideline ID. Required for 'update' and 'delete' actions. Omit when creating a new guideline.
namestringoptionalGuideline name. Required when action is 'create'. Optional for 'update'.
sendmcp_manage_images#Unified image management tool. Controls what the user sees (upload area, image gallery) and what image data is fetched. Pass ids to fetch specific images by ID; omit ids to fetch all recent images; pass an empty array [] to skip fetching (UI-only mode). Use showUpload to display a drag-and-drop upload area. Use showGallery to control gallery visibility.3 params

Unified image management tool. Controls what the user sees (upload area, image gallery) and what image data is fetched. Pass ids to fetch specific images by ID; omit ids to fetch all recent images; pass an empty array [] to skip fetching (UI-only mode). Use showUpload to display a drag-and-drop upload area. Use showGallery to control gallery visibility.

NameTypeRequiredDescription
idsarrayoptionalWhich images to fetch. Omit to fetch all recent images. Pass specific IDs to fetch only those images. Pass an empty array [] to skip fetching entirely (UI-only mode).
showGallerybooleanoptionalShow the image gallery. Defaults to true when fetching images (ids is omitted or has values), false when ids is an empty array [].
showUploadbooleanoptionalShow the drag-and-drop upload area for the user to upload new images. Default is false.
sendmcp_manage_sites#Read or change the settings of an existing site or document made with Send that the user owns, given its share id or URL. Actions: 'documentation' returns the current contract — every supported setting, usage guidance, and a token required for updates; 'get' returns the site's current settings; 'update' applies the settings passed in changes. Call action 'documentation' for a site before your first update to it in a conversation, and include the returned token in update calls. The set of supported settings is defined by the documentation, not by this description.4 params

Read or change the settings of an existing site or document made with Send that the user owns, given its share id or URL. Actions: 'documentation' returns the current contract — every supported setting, usage guidance, and a token required for updates; 'get' returns the site's current settings; 'update' applies the settings passed in changes. Call action 'documentation' for a site before your first update to it in a conversation, and include the returned token in update calls. The set of supported settings is defined by the documentation, not by this description.

NameTypeRequiredDescription
actionstringrequiredWhat to do. Start with 'documentation' before the first update to a site in a conversation.
idstringrequiredSend share id (8-char alphanumeric) or full /a/ URL of the site or document.
changesobjectoptionalFor 'update': the settings to change, as described by the documentation action. Pass only the keys you want to change.
docsTokenstringoptionalFor 'update': the token returned by the documentation action for this site.
sendmcp_manage_skill#Create, update, delete, or pin a user-defined skill for this workspace. Skills were previously called 'guidelines', and users may also say 'template' — a user asking to create, edit, delete, or pin a guideline or template means this tool. Call this only when the user explicitly asks for it — not during document creation. create: provide name, description, and content. update: provide id and any fields to change. delete: provide id. pin/unpin: provide id — a pinned skill is returned for every site this workspace makes, not only the ones a search matches; limited to workspace owners and admins.5 params

Create, update, delete, or pin a user-defined skill for this workspace. Skills were previously called 'guidelines', and users may also say 'template' — a user asking to create, edit, delete, or pin a guideline or template means this tool. Call this only when the user explicitly asks for it — not during document creation. create: provide name, description, and content. update: provide id and any fields to change. delete: provide id. pin/unpin: provide id — a pinned skill is returned for every site this workspace makes, not only the ones a search matches; limited to workspace owners and admins.

NameTypeRequiredDescription
actionstringrequiredAction to perform. Only call this tool when the user has explicitly asked to create, edit, delete, or pin a skill — never as part of creating or editing a document.
contentstringoptionalFull skill content — instructions, code samples, asset refs, example doc URLs.
descriptionstringoptionalShort description of the skill's purpose
idstringoptionalSkill ID (required for update and delete).
namestringoptionalSkill name (required for create).
sendmcp_showcontent#Embeds Send-managed content inline in the chat. Pass type 'doc' with the shareId to render a published HTML document inline so the user can view it. Call this after CreateDocument or EditDocument when the user should see the result. Requires the user to be signed in to Send.2 params

Embeds Send-managed content inline in the chat. Pass type 'doc' with the shareId to render a published HTML document inline so the user can view it. Call this after CreateDocument or EditDocument when the user should see the result. Requires the user to be signed in to Send.

NameTypeRequiredDescription
idstringrequiredThe Send share ID (8-char alphanumeric string) or full /a/ URL of the document to display. Returned by CreateDocument. Example: 'RaU0Kud4' or 'https://send.co/a/RaU0Kud4'.
typestringrequiredComponent type to embed. Only 'doc' is currently supported — renders a published Send HTML document inline in the chat.
sendmcp_submit_feedback#Sends feedback about Send itself to the team that builds it. Call it when the session produces something the team would genuinely want to know: the user explicitly asks to send feedback or report a problem, aims praise or frustration at Send, Send can't do something the user wants and it matters to them, or you form a strong opinion worth volunteering. Most sessions produce none — ordinary friction is not signal. When you do call it, context is the entire value: what the user was making, what they expected, and what happened instead. Not for feedback about Claude, or about anything that isn't Send. Only include detail the user is ok with sharing as feedback.5 params

Sends feedback about Send itself to the team that builds it. Call it when the session produces something the team would genuinely want to know: the user explicitly asks to send feedback or report a problem, aims praise or frustration at Send, Send can't do something the user wants and it matters to them, or you form a strong opinion worth volunteering. Most sessions produce none — ordinary friction is not signal. When you do call it, context is the entire value: what the user was making, what they expected, and what happened instead. Not for feedback about Claude, or about anything that isn't Send. Only include detail the user is ok with sharing as feedback.

NameTypeRequiredDescription
feedbackstringrequiredWhat the Send team should know. Be specific: what broke, what confused, or what worked well.
sentimentstringrequiredWhether this is praise, a problem, or both. Praise is signal too — send it.
areastringoptionalWhich part of Send this is about, if it's clear.
contextstringoptionalWhat was being made and what was expected. The concrete details are what make this actionable.
shareIdstringoptionalOptional. Share ID of the site involved, if any — a new user may not have one, and that's fine.