{"codex_setup":{"message_template":"Set up GuideBlink as a Streamable HTTP MCP server for this Codex host.\nMCP URL: https://shortsblink.com/mcp\nBearer token: [PASTE YOUR GUIDEBLINK TOKEN]\nMCP reference: https://shortsblink.com/docs/mcp\n\nUse Bearer-token authentication. Store the token as a protected credential or environment variable, never in source control or a project file.\nKeep write-tool approvals enabled, and ask for any permission needed to update the local Codex MCP configuration.\nRestart or reconnect MCP when finished, call tools/list, and verify that the GuideBlink tools are available.\nDo not repeat the Bearer token in your response. Reply with the connection status and the available GuideBlink tool names only.","security":"Generate the token while signed in. Paste the complete message only into a private Codex chat you control.","token_creation_url":"https://shortsblink.com/integrations","token_placeholder":"[PASTE YOUR GUIDEBLINK TOKEN]"},"jsonrpc_methods":{"initialize":"Negotiate protocol version and read server capabilities/instructions.","notifications/cancelled":"Accepted as a stateless notification with HTTP 202; it does not cancel an already queued background job.","notifications/initialized":"Optional notification; GuideBlink responds HTTP 202.","ping":"Connectivity check returning an empty result object.","tools/call":"Execute one authenticated GuideBlink tool.","tools/list":"Return the current tool definitions, input schemas, and safety annotations."},"result_contract":{"protocol_error":"JSON-RPC error object; HTTP status can be 400, 401, 403, or 429","success":"result.content plus result.structuredContent with result.isError=false","tool_error":"HTTP 200 JSON-RPC result with result.isError=true and structuredContent.error"},"server":{"name":"guideblink","protocol_version":"2026-07-28","title":"GuideBlink","version":"1.3.0"},"tools":[{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"approval":"Read-only; no write approval.","behavior":"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.","credits":"0 credits; no LLM call.","description":"Read the authenticated creator's role, services, audiences, proof, CTA, language, and normalized reference text.","example":{},"group":"Expertise and Voice","inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"name":"get_expertise_profile","returns":"profile (id, role, services, target_clients, audience_targets, proof_points, CTA, output language, writing samples, extracted reference text, timestamps) and edit_url.","title":"Read expertise profile"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"approval":"Account write; Codex should show the proposed profile changes before saving.","behavior":"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.","credits":"0 credits; this is a manual save and does not extract or generate text with AI.","description":"Patch only the supplied expertise fields. This is a free manual save and does not use AI or credits.","example":{"audience_targets":["SaaS founders","Operations leaders"],"output_language":"English","proof_points":"Describe only verified projects and outcomes.","role":"AI automation engineer","services":"Production AI agents and workflow automation"},"group":"Expertise and Voice","inputSchema":{"additionalProperties":false,"properties":{"audience_targets":{"description":"One to three specific readers for a post; guides use the first reader.","items":{"maxLength":240,"minLength":2,"type":"string"},"maxItems":3,"type":"array"},"cta_text":{"description":"Default call-to-action wording.","maxLength":500,"type":"string"},"cta_url":{"description":"Optional safe public HTTP(S) CTA URL.","maxLength":2000,"type":"string"},"output_language":{"description":"Default generated-content language; an empty value becomes English.","maxLength":80,"type":"string"},"proof_points":{"description":"Verified achievements, examples, credentials, or boundaries for grounded claims.","maxLength":10000,"type":"string"},"role":{"description":"Professional role or positioning.","maxLength":500,"type":"string"},"services":{"description":"Services, capabilities, and problems the creator solves.","maxLength":5000,"type":"string"},"target_clients":{"description":"Legacy newline-separated target readers; saving it rebuilds audience_targets.","maxLength":5000,"type":"string"},"writing_samples":{"description":"Normalized pasted writing examples used as reference context.","maxLength":40000,"type":"string"}},"type":"object"},"name":"update_expertise_profile","notes":["cta_url must be an allowed public HTTP or HTTPS URL.","Unknown fields are rejected."],"returns":"profile, edit_url, updated_fields, and credits_charged: 0.","title":"Update expertise profile"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"approval":"Read-only; no write approval.","behavior":"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.","credits":"0 credits; no LLM call.","description":"Read the creator's hook, post, and CTA examples plus writing rules and advanced instructions.","example":{},"group":"Expertise and Voice","inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"name":"get_voice_profile","returns":"voice (id, five editable Voice fields, timestamps) and edit_url.","title":"Read tone of voice"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"approval":"Account write; show the exact proposed text before saving.","behavior":"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.","credits":"0 credits; no LLM call.","description":"Patch only the supplied Voice fields. This is a free manual save and does not analyze examples or spend credits.","example":{"cta_examples":"Comment EVALS and I will send the guide.","hook_examples":"Most agent evals start too late.","writing_rules":"Use concrete examples. Do not invent metrics."},"group":"Expertise and Voice","inputSchema":{"additionalProperties":false,"properties":{"advanced_instructions":{"description":"Additional reusable instructions applied during generation.","maxLength":20000,"type":"string"},"cta_examples":{"description":"Approved CTA examples.","maxLength":20000,"type":"string"},"hook_examples":{"description":"Approved opening-hook examples.","maxLength":20000,"type":"string"},"post_examples":{"description":"Complete approved Post examples.","maxLength":80000,"type":"string"},"writing_rules":{"description":"Explicit tone, rhythm, formatting, and claim rules.","maxLength":20000,"type":"string"}},"type":"object"},"name":"update_voice_profile","returns":"voice, edit_url, updated_fields, and credits_charged: 0.","title":"Update tone of voice"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"approval":"Read-only; no write approval.","behavior":"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.","credits":"0 credits; no LLM call.","description":"List owned editable content templates. Select one of these template IDs before starting generation.","example":{"kind":"guide"},"group":"Templates and generation","inputSchema":{"additionalProperties":false,"properties":{"kind":{"description":"Optional template-kind filter; omit to return both kinds.","enum":["post","guide"],"type":"string"}},"type":"object"},"name":"list_content_templates","notes":["Use a returned Guide template_id with create_guide. Post template_id is optional."],"returns":"templates with id, kind, name, description, structure, instructions, source, and updated_at; plus count and edit_url.","title":"List Post and Guide templates"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"approval":"Read-only. Call this immediately before create_post or create_guide and show the quote to the user.","behavior":"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.","credits":"0 credits; quoting does not reserve or spend credits.","description":"Return the current model-dependent credit reservation and whether the account can afford it. No credits are spent.","example":{"kind":"post"},"group":"Templates and generation","inputSchema":{"additionalProperties":false,"properties":{"kind":{"description":"The content kind to quote.","enum":["post","guide"],"type":"string"}},"required":["kind"],"type":"object"},"name":"get_generation_quote","returns":"kind, quoted_credits, available_credits, can_generate, pricing_url, selected models, and the reservation/refund note.","title":"Quote Post or Guide credits"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"approval":"Paid write; call get_generation_quote and obtain explicit user approval first.","behavior":"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.","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.","description":"Reserve the quoted credits and queue three editable LinkedIn drafts. Call the quote tool and obtain user approval first.","example":{"audience_targets":["AI engineering leaders","Product managers"],"options":{"cta":"Invite readers to request the guide","goal":"Teach one practical evaluation lesson"},"request_id":"post-agent-evals-001","title":"Agent evals beyond the final answer","topic":"Why final-answer grading is not enough for production AI agents","use_voice":true},"group":"Templates and generation","inputSchema":{"additionalProperties":false,"properties":{"audience_targets":{"description":"One to three specific readers for a post; guides use the first reader.","items":{"maxLength":240,"minLength":2,"type":"string"},"maxItems":3,"type":"array"},"options":{"additionalProperties":false,"description":"Optional advanced brief fields.","properties":{"cta":{"description":"The desired call to action; it must not invent an offer or outcome.","maxLength":500,"type":"string"},"goal":{"description":"The reader outcome or business goal for this content.","maxLength":1000,"type":"string"},"must_include":{"description":"Specific points, sections, examples, or constraints the result must include.","maxLength":3000,"type":"string"},"proof":{"description":"Verified examples, observations, or evidence the content may use.","maxLength":2500,"type":"string"}},"type":"object"},"request_id":{"description":"A stable unique key for this request. Reusing it returns the original job without charging again.","maxLength":100,"minLength":8,"pattern":"^[A-Za-z0-9._:-]+$","type":"string"},"source_urls":{"description":"Safe public HTTP(S) source URLs to use as supplied research context.","items":{"format":"uri","maxLength":2000,"type":"string"},"maxItems":12,"type":"array"},"template_id":{"description":"An owned template ID from list_content_templates; mandatory for Guides and optional for Posts.","minimum":1,"type":"integer"},"title":{"description":"Optional project title. When omitted, GuideBlink uses the first non-empty topic line.","maxLength":200,"type":"string"},"topic":{"description":"The content idea, problem, source notes, and relevant context.","maxLength":5000,"minLength":10,"type":"string"},"use_voice":{"default":true,"description":"Whether generation should apply the saved Voice profile.","type":"boolean"}},"required":["request_id","topic"],"type":"object"},"name":"create_post","notes":["source_urls accepts at most 12 safe public URLs.","If template_id is supplied, it must identify an owned Post template."],"returns":"project_id, job_id, kind, status, progress, quoted_credits, available_credits, request_id, duplicate_request, editor_url, pricing_url, and poll_with.","title":"Generate three LinkedIn drafts"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"approval":"Paid write; quote and explicit user approval are required first.","behavior":"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.","credits":"Reserves the quoted Guide amount; unused reserved credits are returned after measured usage. Failed work is settled or refunded from recorded usage.","description":"Reserve the quoted credits and queue a researched guide. Requires an owned guide template; companion posts are not generated automatically.","example":{"audience_targets":["AI engineering leaders"],"options":{"must_include":"Outcome grading, trajectory grading, and repeated reliability"},"request_id":"guide-agent-evals-001","source_urls":["https://platform.openai.com/docs/guides/evals"],"template_id":12,"title":"A Complete Guide to AI Agent Evals","topic":"A practical system for evaluating production AI agents"},"group":"Templates and generation","inputSchema":{"additionalProperties":false,"properties":{"audience_targets":{"description":"One to three specific readers for a post; guides use the first reader.","items":{"maxLength":240,"minLength":2,"type":"string"},"maxItems":3,"type":"array"},"options":{"additionalProperties":false,"description":"Optional advanced brief fields.","properties":{"cta":{"description":"The desired call to action; it must not invent an offer or outcome.","maxLength":500,"type":"string"},"goal":{"description":"The reader outcome or business goal for this content.","maxLength":1000,"type":"string"},"must_include":{"description":"Specific points, sections, examples, or constraints the result must include.","maxLength":3000,"type":"string"},"proof":{"description":"Verified examples, observations, or evidence the content may use.","maxLength":2500,"type":"string"}},"type":"object"},"request_id":{"description":"A stable unique key for this request. Reusing it returns the original job without charging again.","maxLength":100,"minLength":8,"pattern":"^[A-Za-z0-9._:-]+$","type":"string"},"source_post_variant":{"description":"The source project's Draft 1, 2, or 3; required with source_project_id.","enum":[1,2,3],"type":"integer"},"source_project_id":{"description":"Optional owned Post project to expand into a guide.","minimum":1,"type":"integer"},"source_urls":{"description":"Safe public HTTP(S) source URLs to use as supplied research context.","items":{"format":"uri","maxLength":2000,"type":"string"},"maxItems":12,"type":"array"},"template_id":{"description":"An owned template ID from list_content_templates; mandatory for Guides and optional for Posts.","minimum":1,"type":"integer"},"title":{"description":"Optional project title. When omitted, GuideBlink uses the first non-empty topic line.","maxLength":200,"type":"string"},"topic":{"description":"The content idea, problem, source notes, and relevant context.","maxLength":5000,"minLength":10,"type":"string"},"use_voice":{"default":true,"description":"Whether generation should apply the saved Voice profile.","type":"boolean"}},"required":["request_id","topic","template_id"],"type":"object"},"name":"create_guide","notes":["Only one active Guide generation is allowed per user.","source_post_variant without source_project_id is rejected."],"returns":"project_id, job_id, kind, status, progress, quoted_credits, available_credits, request_id, duplicate_request, editor_url, pricing_url, and poll_with.","title":"Generate a long-form guide"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"approval":"Read-only; no write approval.","behavior":"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.","credits":"0 credits for polling.","description":"Poll one owned generation job. Completed Post jobs include all drafts; completed Guide jobs include Markdown and research sources.","example":{"job_id":321},"group":"Templates and generation","inputSchema":{"additionalProperties":false,"properties":{"job_id":{"description":"An owned job ID returned by create_post or create_guide.","minimum":1,"type":"integer"}},"required":["job_id"],"type":"object"},"name":"get_generation_job","notes":["Typical states are queued, researching, drafting, validating, completed, and failed."],"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.","title":"Check generated content"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"approval":"Read-only; no write approval.","behavior":"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.","credits":"0 credits; no LLM call.","description":"List owned content projects so a client can find the project ID and available Post variants before editing settings or creating media.","example":{"kind":"post","limit":25},"group":"Projects and Guide settings","inputSchema":{"additionalProperties":false,"properties":{"kind":{"description":"Optional project-kind filter.","enum":["post","guide"],"type":"string"},"limit":{"default":25,"description":"Maximum number of newest projects to return.","maximum":100,"minimum":1,"type":"integer"}},"type":"object"},"name":"list_projects","returns":"projects with id, kind, title, topic, slug, status, publication/gate settings, timestamps, available_post_variants, editor_url, and public_url; plus count.","title":"List Post and Guide projects"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"approval":"Read-only. Call this before update_guide_settings or set_guide_questions.","behavior":"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.","credits":"0 credits; no LLM call.","description":"Read one owned Guide's title, publication and lead-gate settings, current questions, and reusable questions from other Guides.","example":{"project_id":456},"group":"Projects and Guide settings","inputSchema":{"additionalProperties":false,"properties":{"project_id":{"description":"The owned Guide project ID.","minimum":1,"type":"integer"}},"required":["project_id"],"type":"object"},"name":"get_guide_settings","returns":"project_id, title, status, published, noindex, email_gate, gate_questions, reusable_questions, public_url, editor_url, and leads_url.","title":"Read Guide settings and questions"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"approval":"Account/public write. Publishing or unpublishing changes external visibility and must be shown for approval.","behavior":"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.","credits":"0 credits; no LLM call.","description":"Update an owned Guide's title, public/private state, lead gate, and search-engine visibility. Publishing requires completed Guide content.","example":{"email_gate":true,"noindex":true,"project_id":456,"published":true,"title":"AI Agent Evals: The Complete Guide"},"group":"Projects and Guide settings","inputSchema":{"additionalProperties":false,"properties":{"email_gate":{"description":"Whether visitors must complete the name/email gate before reading.","type":"boolean"},"noindex":{"description":"true asks search engines not to index the public Guide.","type":"boolean"},"project_id":{"description":"The owned Guide project ID.","minimum":1,"type":"integer"},"published":{"description":"true makes a completed Guide public; false makes it private.","type":"boolean"},"title":{"description":"Replacement public/editor Guide title.","maxLength":200,"minLength":3,"type":"string"}},"required":["project_id"],"type":"object"},"name":"update_guide_settings","notes":["At least one setting besides project_id is required.","Omitted settings remain unchanged."],"returns":"The same complete settings payload as get_guide_settings, plus updated_fields and credits_charged: 0.","title":"Update Guide settings"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"approval":"Account write. Read current questions first and show the complete replacement list before saving.","behavior":"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.","credits":"0 credits; no LLM call.","description":"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.","example":{"email_gate":true,"project_id":456,"questions":[{"id":"challenge","prompt":"What is your biggest agent-evaluation challenge?","required":true,"type":"text"},{"id":"stage","options":["Planning","Pilot","Production"],"prompt":"What stage are you at?","required":true,"type":"single"}]},"group":"Projects and Guide settings","inputSchema":{"additionalProperties":false,"properties":{"email_gate":{"default":true,"description":"Enable the name/email gate with these questions.","type":"boolean"},"project_id":{"description":"The owned Guide project ID.","minimum":1,"type":"integer"},"questions":{"description":"The complete replacement question list; [] removes all custom questions.","items":{"additionalProperties":false,"properties":{"id":{"description":"Optional stable answer key; GuideBlink creates or normalizes it when needed.","pattern":"^[a-z0-9_-]{1,40}$","type":"string"},"options":{"description":"Distinct answer choices required for single or multiple questions; ignored for text questions.","items":{"maxLength":150,"minLength":1,"type":"string"},"maxItems":12,"minItems":2,"type":"array"},"prompt":{"description":"The exact question shown to the Guide visitor.","maxLength":300,"minLength":2,"type":"string"},"required":{"default":true,"description":"Whether the visitor must answer before unlocking the Guide.","type":"boolean"},"type":{"description":"Free text, one choice, or multiple choices.","enum":["text","single","multiple"],"type":"string"}},"required":["prompt","type"],"type":"object"},"maxItems":8,"type":"array"}},"required":["project_id","questions"],"type":"object"},"name":"set_guide_questions","notes":["An empty questions array removes every custom question.","Maximum: eight questions per Guide."],"returns":"The complete saved Guide settings payload, normalized gate_questions, reusable_questions, and credits_charged: 0.","title":"Set Guide lead questions"},{"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"approval":"Creates a derived file but does not publish or upload it.","behavior":"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.","credits":"0 credits; local rendering, no LLM call.","description":"Create a free 1080\u00d71080 PNG from an owned Post draft or Guide. Returns the image directly and an expiring download link.","example":{"project_id":789,"style":"word_cloud","variant":2},"group":"Images and video","inputSchema":{"additionalProperties":false,"properties":{"project_id":{"description":"An owned Post or Guide project ID.","minimum":1,"type":"integer"},"style":{"default":"word_cloud","description":"The deterministic square-image design.","enum":["word_cloud","quote_card"],"type":"string"},"variant":{"description":"Required for a Post project; optional for a Guide companion Post.","enum":[1,2,3],"type":"integer"}},"required":["project_id"],"type":"object"},"name":"create_social_image","notes":["variant is required for a Post project; omit it to use Guide Markdown.","The signed download URL expires after 3,600 seconds."],"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.","title":"Create a social-post image"},{"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"approval":"Creates a private derived download; it does not upload or publish media.","behavior":"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.","credits":"0 credits; local video rendering, no LLM call.","description":"Create a free expiring download link for a styled 1080\u00d71080 five-second MP4 from an owned Post draft or Guide. Rendering starts when the link is downloaded.","example":{"project_id":789,"variant":2},"group":"Images and video","inputSchema":{"additionalProperties":false,"properties":{"project_id":{"description":"An owned Post or Guide project ID.","minimum":1,"type":"integer"},"variant":{"description":"Required for a Post project; optional for a Guide companion Post.","enum":[1,2,3],"type":"integer"}},"required":["project_id"],"type":"object"},"name":"create_scroll_video","notes":["variant is required for a Post project.","The link expires after one hour and permits at most six video downloads per account per hour."],"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.","title":"Create a square scrolling video"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"approval":"Read-only; no write approval.","behavior":"Lists owned Guide projects newest first. published optionally filters to public or private Guides; omit it to list both.","credits":"0 credits; no LLM call.","description":"List the authenticated creator's guide projects and recipient-link open totals.","example":{"limit":25,"published":true},"group":"Guides, links, and leads","inputSchema":{"additionalProperties":false,"properties":{"limit":{"default":25,"description":"Maximum number of newest Guides to return.","maximum":100,"minimum":1,"type":"integer"},"published":{"description":"Optionally return only published or unpublished guides.","type":"boolean"}},"type":"object"},"name":"list_guides","returns":"guides with id, title, slug, status, publication/noindex state, updated_at, tracked-link/open totals, and public_url; plus count.","title":"List GuideBlink guides"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"approval":"Read-only; no write approval.","behavior":"Reads one owned Guide, including its full Markdown and public settings. It does not increment public Guide analytics.","credits":"0 credits; no LLM call.","description":"Read one owned guide, including its Markdown content and publication URL.","example":{"project_id":456},"group":"Guides, links, and leads","inputSchema":{"additionalProperties":false,"properties":{"project_id":{"description":"The owned Guide project ID.","minimum":1,"type":"integer"}},"required":["project_id"],"type":"object"},"name":"get_guide","returns":"id, title, topic, slug, status, published, noindex, email_gate, guide_markdown, timestamps, and public_url.","title":"Get a GuideBlink guide"},{"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"approval":"Creates an external-facing unique URL. The user must review and send any DM separately.","behavior":"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.","credits":"0 credits; no LLM call.","description":"Create a unique public-guide link for one LinkedIn recipient. Opens are confirmed only after a real guide page loads.","example":{"linkedin_url":"https://www.linkedin.com/in/morgan-lee","note":"Asked about agent evals","project_id":456,"recipient_name":"Morgan Lee"},"group":"Guides, links, and leads","inputSchema":{"additionalProperties":false,"properties":{"linkedin_url":{"description":"Optional public linkedin.com profile URL.","maxLength":1000,"type":"string"},"note":{"description":"Optional private context stored with the recipient link.","maxLength":500,"type":"string"},"project_id":{"description":"An owned, published Guide project ID.","minimum":1,"type":"integer"},"recipient_name":{"description":"The intended recipient name used for identification and the draft greeting.","maxLength":150,"minLength":2,"type":"string"}},"required":["project_id","recipient_name"],"type":"object"},"name":"create_tracked_link","notes":["The Guide must already be published.","The account limit is 10,000 recipient links."],"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.","title":"Create a LinkedIn recipient link"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"approval":"Read-only; no write approval.","behavior":"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.","credits":"0 credits; no LLM call.","description":"List recipient-specific links with confirmed open counts and first/last-opened timestamps.","example":{"limit":50,"project_id":456},"group":"Guides, links, and leads","inputSchema":{"additionalProperties":false,"properties":{"limit":{"default":50,"description":"Maximum number of newest recipient links to return.","maximum":200,"minimum":1,"type":"integer"},"project_id":{"description":"Optional owned Guide ID filter.","minimum":1,"type":"integer"}},"type":"object"},"name":"list_tracked_links","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.","title":"List LinkedIn recipient links"},{"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"approval":"Read-only, but results contain personal lead data and should be handled privately.","behavior":"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.","credits":"0 credits; no LLM call.","description":"Read one owned recipient link, confirmed opens, and voluntary guide-form answers attributed to that link.","example":{"link_id":987},"group":"Guides, links, and leads","inputSchema":{"additionalProperties":false,"properties":{"link_id":{"description":"An owned recipient-link ID returned by create_tracked_link or list_tracked_links.","minimum":1,"type":"integer"}},"required":["link_id"],"type":"object"},"name":"get_tracked_link_activity","notes":["A forwarded unique link can be opened or answered by someone other than the named recipient."],"returns":"The complete tracked-link summary, responses, total response_count, responses_returned, and attribution_note.","title":"Get recipient-link activity and answers"}],"transport":{"authentication":"Authorization: Bearer <GuideBlink MCP token>","content_type":"application/json","endpoint":"https://shortsblink.com/mcp","method":"POST","response_protocol_header":"MCP-Protocol-Version","type":"stateless Streamable HTTP"}}
