https://shortsblink.com/mcpGuideBlink MCP 1.3.0
Every call, parameter, result, and side effect.
This is the exact reference for the GuideBlink stateless Streamable HTTP server. Parameter tables are generated from the same schemas returned by tools/list.
Fastest setup
Send this complete message to Codex
The public template uses a placeholder. When you generate a Bearer token on Integrations, GuideBlink shows the same message with the real token already inserted. Copy that complete message into a private Codex chat.
Set up GuideBlink as a Streamable HTTP MCP server for this Codex host. MCP URL: https://shortsblink.com/mcp Bearer token: [PASTE YOUR GUIDEBLINK TOKEN] MCP reference: https://shortsblink.com/docs/mcp Use Bearer-token authentication. Store the token as a protected credential or environment variable, never in source control or a project file. Keep write-tool approvals enabled, and ask for any permission needed to update the local Codex MCP configuration. Restart or reconnect MCP when finished, call tools/list, and verify that the GuideBlink tools are available. Do not repeat the Bearer token in your response. Reply with the connection status and the available GuideBlink tool names only.
Bearer-token safety: the generated message is shown only on the token-creation response. Do not put it in a public/shared chat, screenshot, source-control file, or LinkedIn message.
Transport
Connection and JSON-RPC protocol
Authorization: Bearer gbmcp_…Every request is one JSON-RPC 2.0 object. Send Content-Type: application/json, Accept: application/json, text/event-stream, and the bearer token generated on Integrations. GuideBlink returns JSON and an MCP-Protocol-Version response header.
{
"jsonrpc": "2.0",
"id": "initialize-guideblink",
"method": "initialize",
"params": {
"protocolVersion": "2026-07-28",
"capabilities": {},
"clientInfo": {"name": "my-mcp-client", "version": "1.0"}
}
}
The response selects the requested supported protocol version, advertises tools.listChanged: false, and returns server-wide instructions. If the requested version is not supported, GuideBlink selects 2026-07-28.
| JSON-RPC method | Request ID | Exact behavior |
|---|---|---|
initialize | Required | Negotiates the protocol and returns capabilities, server identity, version, and workflow instructions. |
notifications/initialized | Omit | Accepted as an optional notification; returns HTTP 202 with no JSON body. |
ping | Required | Returns an empty JSON-RPC result: {} object. |
tools/list | Required | Returns all live tool names, descriptions, input schemas, and safety annotations. |
tools/call | Required | Runs params.name with the object in params.arguments for the bearer-token owner. |
notifications/cancelled | Omit | Accepted with HTTP 202, but does not cancel an already queued GuideBlink background job. |
{
"jsonrpc": "2.0",
"id": "list-guideblink-tools",
"method": "tools/list",
"params": {}
}
curl https://shortsblink.com/mcp \
--request POST \
--header "Authorization: Bearer $GUIDEBLINK_MCP_TOKEN" \
--header "Content-Type: application/json" \
--header "Accept: application/json, text/event-stream" \
--header "MCP-Protocol-Version: 2026-07-28" \
--data '{"jsonrpc":"2.0","id":"list-tools","method":"tools/list","params":{}}'
Normal Codex use: Codex performs this handshake and constructs tools/call automatically. Raw JSON examples are provided for debugging and custom MCP clients.
Contract
Tool results, errors, and retries
{
"jsonrpc": "2.0",
"id": "call-id",
"result": {
"content": [{"type": "text", "text": "{...}"}],
"isError": false,
"structuredContent": {"field": "value"}
}
}
Use structuredContent for follow-up calls. create_social_image adds an MCP image block and a resource_link; create_scroll_video adds a resource_link.
isError: trueA valid tool call failed validation or business rules. HTTP remains 200 and structuredContent.error explains the recoverable problem. Insufficient-credit errors also include code, balances, and pricing_url.
-32001 / HTTP 401The bearer token is missing, invalid, replaced, or revoked.
-32600 / HTTP 400The body is not a valid JSON-RPC 2.0 request.
-32602The tool name or JSON-RPC parameters are invalid. Tool-specific argument validation normally returns isError: true.
-32601The JSON-RPC method is not supported.
-32000 / 403 or 429The Origin header is untrusted or the MCP request rate limit was reached.
Generation retries are safe only when they reuse the same request_id for the same kind. GuideBlink stores it as an idempotency key; changing it intentionally creates a new project and a new reservation.
Operational rules
Limits, ownership, and media URLs
- Every database query verifies ownership using the user attached to the bearer token.
- Creating a new MCP token revokes every previously active token for that account.
- Signed media URLs contain access to one derived file only. They are marked private/no-store and noindex; download the file instead of sharing the temporary URL.
- GuideBlink never sends LinkedIn messages and never publishes a Post to LinkedIn.
- Confirmed recipient-link opens identify the unique URL, not a person with certainty.
Tool group
Expertise and Voice
get_expertise_profileRead expertise profile
Read the authenticated creator's role, services, audiences, proof, CTA, language, and normalized reference text.
- How it works
- Reads the authenticated account's normalized Expertise profile. If the profile row does not exist yet, GuideBlink creates an empty default row before returning it.
- Returns
- profile (id, role, services, target_clients, audience_targets, proof_points, CTA, output language, writing samples, extracted reference text, timestamps) and edit_url.
- Credits
- 0 credits; no LLM call.
- Approval / side effect
- Read-only; no write approval.
Parameters
No parameters. Send an empty arguments: {} object.
tools/call request{
"jsonrpc": "2.0",
"id": "call-get_expertise_profile",
"method": "tools/call",
"params": {
"name": "get_expertise_profile",
"arguments": {}
}
}
update_expertise_profileUpdate expertise profile
Patch only the supplied expertise fields. This is a free manual save and does not use AI or credits.
- How it works
- Patches only the fields supplied in arguments and returns the complete saved profile. audience_targets is normalized to at most three unique readers and also updates target_clients; supplying target_clients instead rebuilds audience_targets. An empty supplied text clears that field, except an empty output_language becomes English.
- Returns
- profile, edit_url, updated_fields, and credits_charged: 0.
- Credits
- 0 credits; this is a manual save and does not extract or generate text with AI.
- Approval / side effect
- Account write; Codex should show the proposed profile changes before saving.
- cta_url must be an allowed public HTTP or HTTPS URL.
- Unknown fields are rejected.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
role | string | No | max chars: 500 | Professional role or positioning. |
services | string | No | max chars: 5000 | Services, capabilities, and problems the creator solves. |
target_clients | string | No | max chars: 5000 | Legacy newline-separated target readers; saving it rebuilds audience_targets. |
audience_targets | array<string> | No | max items: 3 | One to three specific readers for a post; guides use the first reader. |
proof_points | string | No | max chars: 10000 | Verified achievements, examples, credentials, or boundaries for grounded claims. |
cta_text | string | No | max chars: 500 | Default call-to-action wording. |
cta_url | string | No | max chars: 2000 | Optional safe public HTTP(S) CTA URL. |
output_language | string | No | max chars: 80 | Default generated-content language; an empty value becomes English. |
writing_samples | string | No | max chars: 40000 | Normalized pasted writing examples used as reference context. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-update_expertise_profile",
"method": "tools/call",
"params": {
"name": "update_expertise_profile",
"arguments": {
"role": "AI automation engineer",
"services": "Production AI agents and workflow automation",
"audience_targets": [
"SaaS founders",
"Operations leaders"
],
"proof_points": "Describe only verified projects and outcomes.",
"output_language": "English"
}
}
}
get_voice_profileRead tone of voice
Read the creator's hook, post, and CTA examples plus writing rules and advanced instructions.
- How it works
- Reads the authenticated account's current hook examples, full Post examples, CTA examples, writing rules, and advanced instructions. It creates an empty default Voice row when needed.
- Returns
- voice (id, five editable Voice fields, timestamps) and edit_url.
- Credits
- 0 credits; no LLM call.
- Approval / side effect
- Read-only; no write approval.
Parameters
No parameters. Send an empty arguments: {} object.
tools/call request{
"jsonrpc": "2.0",
"id": "call-get_voice_profile",
"method": "tools/call",
"params": {
"name": "get_voice_profile",
"arguments": {}
}
}
update_voice_profileUpdate tone of voice
Patch only the supplied Voice fields. This is a free manual save and does not analyze examples or spend credits.
- How it works
- Patches only supplied Voice fields, preserving every omitted field. Supplying an empty string clears that field. This call stores examples and rules exactly as manual Voice input; it does not run the separate AI extraction workflow.
- Returns
- voice, edit_url, updated_fields, and credits_charged: 0.
- Credits
- 0 credits; no LLM call.
- Approval / side effect
- Account write; show the exact proposed text before saving.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
hook_examples | string | No | max chars: 20000 | Approved opening-hook examples. |
post_examples | string | No | max chars: 80000 | Complete approved Post examples. |
cta_examples | string | No | max chars: 20000 | Approved CTA examples. |
writing_rules | string | No | max chars: 20000 | Explicit tone, rhythm, formatting, and claim rules. |
advanced_instructions | string | No | max chars: 20000 | Additional reusable instructions applied during generation. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-update_voice_profile",
"method": "tools/call",
"params": {
"name": "update_voice_profile",
"arguments": {
"hook_examples": "Most agent evals start too late.",
"cta_examples": "Comment EVALS and I will send the guide.",
"writing_rules": "Use concrete examples. Do not invent metrics."
}
}
}
Tool group
Templates and generation
list_content_templatesList Post and Guide templates
List owned editable content templates. Select one of these template IDs before starting generation.
- How it works
- Ensures the account's ten default templates exist, then lists owned editable templates. kind can filter the result; omit it to receive both Post and Guide templates.
- Returns
- templates with id, kind, name, description, structure, instructions, source, and updated_at; plus count and edit_url.
- Credits
- 0 credits; no LLM call.
- Approval / side effect
- Read-only; no write approval.
- Use a returned Guide template_id with create_guide. Post template_id is optional.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
kind | string enum | No | values: "post", "guide" | Optional template-kind filter; omit to return both kinds. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-list_content_templates",
"method": "tools/call",
"params": {
"name": "list_content_templates",
"arguments": {
"kind": "guide"
}
}
}
get_generation_quoteQuote Post or Guide credits
Return the current model-dependent credit reservation and whether the account can afford it. No credits are spent.
- How it works
- Calculates the conservative credit reservation for the requested content kind using the models currently selected on the Voice page. It also reads the current credit balance and affordability without reserving anything.
- Returns
- kind, quoted_credits, available_credits, can_generate, pricing_url, selected models, and the reservation/refund note.
- Credits
- 0 credits; quoting does not reserve or spend credits.
- Approval / side effect
- Read-only. Call this immediately before create_post or create_guide and show the quote to the user.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
kind | string enum | Yes | values: "post", "guide" | The content kind to quote. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-get_generation_quote",
"method": "tools/call",
"params": {
"name": "get_generation_quote",
"arguments": {
"kind": "post"
}
}
}
create_postGenerate three LinkedIn drafts
Reserve the quoted credits and queue three editable LinkedIn drafts. Call the quote tool and obtain user approval first.
- How it works
- Validates the brief, reserves the current quoted credits atomically, creates a Post project, and queues one background job that produces three drafts. It returns immediately; poll get_generation_job. Reusing the same request_id for a Post returns the original job and does not reserve credits twice.
- Returns
- project_id, job_id, kind, status, progress, quoted_credits, available_credits, request_id, duplicate_request, editor_url, pricing_url, and poll_with.
- Credits
- Reserves the quoted amount. After completion, unused reserved credits are returned based on measured model cost. A safe failure settles or refunds the reservation according to recorded usage.
- Approval / side effect
- Paid write; call get_generation_quote and obtain explicit user approval first.
- source_urls accepts at most 12 safe public URLs.
- If template_id is supplied, it must identify an owned Post template.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
request_id | string | Yes | min chars: 8; max chars: 100; pattern: ^[A-Za-z0-9._:-]+$ | A stable unique key for this request. Reusing it returns the original job without charging again. |
topic | string | Yes | min chars: 10; max chars: 5000 | The content idea, problem, source notes, and relevant context. |
title | string | No | max chars: 200 | Optional project title. When omitted, GuideBlink uses the first non-empty topic line. |
audience_targets | array<string> | No | max items: 3 | One to three specific readers for a post; guides use the first reader. |
template_id | integer | No | minimum: 1 | An owned template ID from list_content_templates; mandatory for Guides and optional for Posts. |
use_voice | boolean | No | default: true | Whether generation should apply the saved Voice profile. |
source_urls | array<string> | No | max items: 12 | Safe public HTTP(S) source URLs to use as supplied research context. |
options | object | No | — | Optional advanced brief fields. |
options.goal | string | No | max chars: 1000 | The reader outcome or business goal for this content. |
options.proof | string | No | max chars: 2500 | Verified examples, observations, or evidence the content may use. |
options.cta | string | No | max chars: 500 | The desired call to action; it must not invent an offer or outcome. |
options.must_include | string | No | max chars: 3000 | Specific points, sections, examples, or constraints the result must include. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-create_post",
"method": "tools/call",
"params": {
"name": "create_post",
"arguments": {
"request_id": "post-agent-evals-001",
"topic": "Why final-answer grading is not enough for production AI agents",
"title": "Agent evals beyond the final answer",
"audience_targets": [
"AI engineering leaders",
"Product managers"
],
"use_voice": true,
"options": {
"goal": "Teach one practical evaluation lesson",
"cta": "Invite readers to request the guide"
}
}
}
}
create_guideGenerate a long-form guide
Reserve the quoted credits and queue a researched guide. Requires an owned guide template; companion posts are not generated automatically.
- How it works
- Validates the brief, reserves the quote, creates a Guide project, and queues the researched long-form generation job. A Guide template is mandatory. To expand a Post, supply both source_project_id and source_post_variant. Companion Posts are not generated by this call. Reusing the same Guide request_id returns the original job without another reservation.
- Returns
- project_id, job_id, kind, status, progress, quoted_credits, available_credits, request_id, duplicate_request, editor_url, pricing_url, and poll_with.
- Credits
- Reserves the quoted Guide amount; unused reserved credits are returned after measured usage. Failed work is settled or refunded from recorded usage.
- Approval / side effect
- Paid write; quote and explicit user approval are required first.
- Only one active Guide generation is allowed per user.
- source_post_variant without source_project_id is rejected.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
request_id | string | Yes | min chars: 8; max chars: 100; pattern: ^[A-Za-z0-9._:-]+$ | A stable unique key for this request. Reusing it returns the original job without charging again. |
topic | string | Yes | min chars: 10; max chars: 5000 | The content idea, problem, source notes, and relevant context. |
title | string | No | max chars: 200 | Optional project title. When omitted, GuideBlink uses the first non-empty topic line. |
audience_targets | array<string> | No | max items: 3 | One to three specific readers for a post; guides use the first reader. |
template_id | integer | Yes | minimum: 1 | An owned template ID from list_content_templates; mandatory for Guides and optional for Posts. |
use_voice | boolean | No | default: true | Whether generation should apply the saved Voice profile. |
source_urls | array<string> | No | max items: 12 | Safe public HTTP(S) source URLs to use as supplied research context. |
options | object | No | — | Optional advanced brief fields. |
options.goal | string | No | max chars: 1000 | The reader outcome or business goal for this content. |
options.proof | string | No | max chars: 2500 | Verified examples, observations, or evidence the content may use. |
options.cta | string | No | max chars: 500 | The desired call to action; it must not invent an offer or outcome. |
options.must_include | string | No | max chars: 3000 | Specific points, sections, examples, or constraints the result must include. |
source_project_id | integer | No | minimum: 1 | Optional owned Post project to expand into a guide. |
source_post_variant | integer enum | No | values: 1, 2, 3 | The source project's Draft 1, 2, or 3; required with source_project_id. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-create_guide",
"method": "tools/call",
"params": {
"name": "create_guide",
"arguments": {
"request_id": "guide-agent-evals-001",
"topic": "A practical system for evaluating production AI agents",
"title": "A Complete Guide to AI Agent Evals",
"audience_targets": [
"AI engineering leaders"
],
"template_id": 12,
"source_urls": [
"https://platform.openai.com/docs/guides/evals"
],
"options": {
"must_include": "Outcome grading, trajectory grading, and repeated reliability"
}
}
}
}
get_generation_jobCheck generated content
Poll one owned generation job. Completed Post jobs include all drafts; completed Guide jobs include Markdown and research sources.
- How it works
- Reads one owned job and its current state. While work is active, poll_after_seconds is 2. A completed Post includes all three drafts; a completed Guide includes Markdown and citation sources. A failed job includes its safe error and final charged amount.
- Returns
- Job identity, kind, status, progress, reservation/charge fields, provider/model, error, timestamps, current balance, editor/pricing URLs and poll_after_seconds; plus drafts for a completed Post or guide_markdown, sources, and public_url for a completed Guide.
- Credits
- 0 credits for polling.
- Approval / side effect
- Read-only; no write approval.
- Typical states are queued, researching, drafting, validating, completed, and failed.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
job_id | integer | Yes | minimum: 1 | An owned job ID returned by create_post or create_guide. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-get_generation_job",
"method": "tools/call",
"params": {
"name": "get_generation_job",
"arguments": {
"job_id": 321
}
}
}
Tool group
Projects and Guide settings
list_projectsList Post and Guide projects
List owned content projects so a client can find the project ID and available Post variants before editing settings or creating media.
- How it works
- Lists owned Post and Guide projects, newest updated first. Use it to resolve a project_id and to discover which Post draft variants exist before a visual export.
- Returns
- projects with id, kind, title, topic, slug, status, publication/gate settings, timestamps, available_post_variants, editor_url, and public_url; plus count.
- Credits
- 0 credits; no LLM call.
- Approval / side effect
- Read-only; no write approval.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
kind | string enum | No | values: "post", "guide" | Optional project-kind filter. |
limit | integer | No | minimum: 1; maximum: 100; default: 25 | Maximum number of newest projects to return. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-list_projects",
"method": "tools/call",
"params": {
"name": "list_projects",
"arguments": {
"kind": "post",
"limit": 25
}
}
}
get_guide_settingsRead Guide settings and questions
Read one owned Guide's title, publication and lead-gate settings, current questions, and reusable questions from other Guides.
- How it works
- Reads one owned Guide's editable public settings and normalized lead questions. It also deduplicates and returns reusable questions from the account's other Guides.
- Returns
- project_id, title, status, published, noindex, email_gate, gate_questions, reusable_questions, public_url, editor_url, and leads_url.
- Credits
- 0 credits; no LLM call.
- Approval / side effect
- Read-only. Call this before update_guide_settings or set_guide_questions.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
project_id | integer | Yes | minimum: 1 | The owned Guide project ID. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-get_guide_settings",
"method": "tools/call",
"params": {
"name": "get_guide_settings",
"arguments": {
"project_id": 456
}
}
}
update_guide_settingsUpdate Guide settings
Update an owned Guide's title, public/private state, lead gate, and search-engine visibility. Publishing requires completed Guide content.
- How it works
- Patches only the supplied Guide settings. title changes the displayed title; published controls the public URL; email_gate controls the name/email gate; noindex controls search-engine indexing. Publishing is rejected until the Guide contains completed Markdown.
- Returns
- The same complete settings payload as get_guide_settings, plus updated_fields and credits_charged: 0.
- Credits
- 0 credits; no LLM call.
- Approval / side effect
- Account/public write. Publishing or unpublishing changes external visibility and must be shown for approval.
- At least one setting besides project_id is required.
- Omitted settings remain unchanged.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
project_id | integer | Yes | minimum: 1 | The owned Guide project ID. |
title | string | No | min chars: 3; max chars: 200 | Replacement public/editor Guide title. |
published | boolean | No | — | true makes a completed Guide public; false makes it private. |
email_gate | boolean | No | — | Whether visitors must complete the name/email gate before reading. |
noindex | boolean | No | — | true asks search engines not to index the public Guide. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-update_guide_settings",
"method": "tools/call",
"params": {
"name": "update_guide_settings",
"arguments": {
"project_id": 456,
"title": "AI Agent Evals: The Complete Guide",
"published": true,
"email_gate": true,
"noindex": true
}
}
}
set_guide_questionsSet Guide lead questions
Replace the complete lead-question list for one owned Guide. Read current settings first and include existing questions you want to keep. Supports text, single-answer, and multiple-answer questions.
- How it works
- Replaces the complete lead-question list for one owned Guide and optionally changes the name/email gate. Question IDs are normalized when missing or duplicated. single and multiple questions require 2-12 distinct choices; text questions store no choices.
- Returns
- The complete saved Guide settings payload, normalized gate_questions, reusable_questions, and credits_charged: 0.
- Credits
- 0 credits; no LLM call.
- Approval / side effect
- Account write. Read current questions first and show the complete replacement list before saving.
- An empty questions array removes every custom question.
- Maximum: eight questions per Guide.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
project_id | integer | Yes | minimum: 1 | The owned Guide project ID. |
questions | array<object> | Yes | max items: 8 | The complete replacement question list; [] removes all custom questions. |
questions[].id | string | No | pattern: ^[a-z0-9_-]{1,40}$ | Optional stable answer key; GuideBlink creates or normalizes it when needed. |
questions[].prompt | string | Yes | min chars: 2; max chars: 300 | The exact question shown to the Guide visitor. |
questions[].type | string enum | Yes | values: "text", "single", "multiple" | Free text, one choice, or multiple choices. |
questions[].required | boolean | No | default: true | Whether the visitor must answer before unlocking the Guide. |
questions[].options | array<string> | No | min items: 2; max items: 12 | Distinct answer choices required for single or multiple questions; ignored for text questions. |
email_gate | boolean | No | default: true | Enable the name/email gate with these questions. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-set_guide_questions",
"method": "tools/call",
"params": {
"name": "set_guide_questions",
"arguments": {
"project_id": 456,
"email_gate": true,
"questions": [
{
"id": "challenge",
"prompt": "What is your biggest agent-evaluation challenge?",
"type": "text",
"required": true
},
{
"id": "stage",
"prompt": "What stage are you at?",
"type": "single",
"required": true,
"options": [
"Planning",
"Pilot",
"Production"
]
}
]
}
}
}
Tool group
Images and video
create_social_imageCreate a social-post image
Create a free 1080×1080 PNG from an owned Post draft or Guide. Returns the image directly and an expiring download link.
- How it works
- Renders a deterministic 1080x1080 PNG from an owned Guide or selected Post draft. word_cloud extracts prominent terms; quote_card uses the selected content's opening hook. The MCP result contains the image itself and a signed download resource.
- Returns
- Structured metadata (project_id, content_source, style, filename, MIME type, dimensions, digest, download_url, expiry, credits_charged) plus an MCP image content block and resource_link.
- Credits
- 0 credits; local rendering, no LLM call.
- Approval / side effect
- Creates a derived file but does not publish or upload it.
- variant is required for a Post project; omit it to use Guide Markdown.
- The signed download URL expires after 3,600 seconds.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
project_id | integer | Yes | minimum: 1 | An owned Post or Guide project ID. |
variant | integer enum | No | values: 1, 2, 3 | Required for a Post project; optional for a Guide companion Post. |
style | string enum | No | values: "word_cloud", "quote_card"; default: "word_cloud" | The deterministic square-image design. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-create_social_image",
"method": "tools/call",
"params": {
"name": "create_social_image",
"arguments": {
"project_id": 789,
"variant": 2,
"style": "word_cloud"
}
}
}
create_scroll_videoCreate a square scrolling video
Create a free expiring download link for a styled 1080×1080 five-second MP4 from an owned Post draft or Guide. Rendering starts when the link is downloaded.
- How it works
- Creates a signed resource link for a styled 1080x1080, five-second scrolling MP4 based on an owned Guide or Post draft. Rendering begins only when the signed URL is opened, so the tool call itself returns quickly.
- Returns
- project_id, content_source, filename, MIME type, 1080x1080 dimensions, five-second duration, download_url, expiry, rendering note, credits_charged, and an MCP resource_link.
- Credits
- 0 credits; local video rendering, no LLM call.
- Approval / side effect
- Creates a private derived download; it does not upload or publish media.
- variant is required for a Post project.
- The link expires after one hour and permits at most six video downloads per account per hour.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
project_id | integer | Yes | minimum: 1 | An owned Post or Guide project ID. |
variant | integer enum | No | values: 1, 2, 3 | Required for a Post project; optional for a Guide companion Post. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-create_scroll_video",
"method": "tools/call",
"params": {
"name": "create_scroll_video",
"arguments": {
"project_id": 789,
"variant": 2
}
}
}
Tool group
Guides, links, and leads
list_guidesList GuideBlink guides
List the authenticated creator's guide projects and recipient-link open totals.
- How it works
- Lists owned Guide projects newest first. published optionally filters to public or private Guides; omit it to list both.
- Returns
- guides with id, title, slug, status, publication/noindex state, updated_at, tracked-link/open totals, and public_url; plus count.
- Credits
- 0 credits; no LLM call.
- Approval / side effect
- Read-only; no write approval.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
published | boolean | No | — | Optionally return only published or unpublished guides. |
limit | integer | No | minimum: 1; maximum: 100; default: 25 | Maximum number of newest Guides to return. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-list_guides",
"method": "tools/call",
"params": {
"name": "list_guides",
"arguments": {
"published": true,
"limit": 25
}
}
}
get_guideGet a GuideBlink guide
Read one owned guide, including its Markdown content and publication URL.
- How it works
- Reads one owned Guide, including its full Markdown and public settings. It does not increment public Guide analytics.
- Returns
- id, title, topic, slug, status, published, noindex, email_gate, guide_markdown, timestamps, and public_url.
- Credits
- 0 credits; no LLM call.
- Approval / side effect
- Read-only; no write approval.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
project_id | integer | Yes | minimum: 1 | The owned Guide project ID. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-get_guide",
"method": "tools/call",
"params": {
"name": "get_guide",
"arguments": {
"project_id": 456
}
}
}
create_tracked_linkCreate a LinkedIn recipient link
Create a unique public-guide link for one LinkedIn recipient. Opens are confirmed only after a real guide page loads.
- How it works
- Creates one unique /r/ recipient URL for an owned, published Guide. The optional LinkedIn URL must be a public linkedin.com profile. The result also includes a short draft message. GuideBlink records opens but never sends the message.
- Returns
- Link identity, project/user fields, recipient name, LinkedIn URL, private note, active state, timestamps, unique public url, and draft message. The internal token is not returned separately.
- Credits
- 0 credits; no LLM call.
- Approval / side effect
- Creates an external-facing unique URL. The user must review and send any DM separately.
- The Guide must already be published.
- The account limit is 10,000 recipient links.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
project_id | integer | Yes | minimum: 1 | An owned, published Guide project ID. |
recipient_name | string | Yes | min chars: 2; max chars: 150 | The intended recipient name used for identification and the draft greeting. |
linkedin_url | string | No | max chars: 1000 | Optional public linkedin.com profile URL. |
note | string | No | max chars: 500 | Optional private context stored with the recipient link. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-create_tracked_link",
"method": "tools/call",
"params": {
"name": "create_tracked_link",
"arguments": {
"project_id": 456,
"recipient_name": "Morgan Lee",
"linkedin_url": "https://www.linkedin.com/in/morgan-lee",
"note": "Asked about agent evals"
}
}
}
list_tracked_linksList LinkedIn recipient links
List recipient-specific links with confirmed open counts and first/last-opened timestamps.
- How it works
- Lists recipient links newest first, optionally scoped to one owned Guide. Counts represent confirmed page loads after preview-bot filtering; they do not prove the named person opened the link.
- Returns
- links with recipient/project data, unique URL, draft message, active state, confirmed open and unique-opener counts, first/last-open timestamps, response_count; plus count.
- Credits
- 0 credits; no LLM call.
- Approval / side effect
- Read-only; no write approval.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
project_id | integer | No | minimum: 1 | Optional owned Guide ID filter. |
limit | integer | No | minimum: 1; maximum: 200; default: 50 | Maximum number of newest recipient links to return. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-list_tracked_links",
"method": "tools/call",
"params": {
"name": "list_tracked_links",
"arguments": {
"project_id": 456,
"limit": 50
}
}
}
get_tracked_link_activityGet recipient-link activity and answers
Read one owned recipient link, confirmed opens, and voluntary guide-form answers attributed to that link.
- How it works
- Reads one owned recipient link, its confirmed open summary, and up to 50 latest voluntarily submitted lead responses attributed to that link. Each response includes name, email, consent, timestamp, and normalized question answers.
- Returns
- The complete tracked-link summary, responses, total response_count, responses_returned, and attribution_note.
- Credits
- 0 credits; no LLM call.
- Approval / side effect
- Read-only, but results contain personal lead data and should be handled privately.
- A forwarded unique link can be opened or answered by someone other than the named recipient.
Parameters
| Name | Type | Required | Limits / default | Description |
|---|---|---|---|---|
link_id | integer | Yes | minimum: 1 | An owned recipient-link ID returned by create_tracked_link or list_tracked_links. |
tools/call request{
"jsonrpc": "2.0",
"id": "call-get_tracked_link_activity",
"method": "tools/call",
"params": {
"name": "get_tracked_link_activity",
"arguments": {
"link_id": 987
}
}
}
Live schemas
Build clients against discovery, not copied docs.
Use tools/list as the runtime source of truth. This page explains behavior; the JSON catalog exposes the same schemas for testing and inspection.