Share This Result (compose tweet/social)
share_resultComposes ready-to-share social-media posts for Twitter, Bluesky, Mastodon, LinkedIn, and Telegram from a one-line summary, returning the post body and intent URLs to open each platform with the post pre-filled.
Instructions
Generate a ready-to-share social-media post (tweet, Bluesky, Mastodon, LinkedIn, Telegram) about a result the user just received from another VC Deal Flow Signal tool, plus the install command for the MCP server. Returns the post body, character counts per platform, and one-click intent URLs to compose the post in each network. Built for the Russell-audit virality loop (Traffic Secrets §20): every share = one qualified MCP install candidate.
WHEN TO USE:
The user just got a
get_trending_startups/search_startups_by_sector/get_startup_signal/get_deep_signalresult and says 'share this', 'tweet this', 'post this', or 'how do I tell people about this?'.The user is writing a thread/post about startup engineering signals and wants the canonical install command + share copy.
The user wants to credit the data source on a public post they're about to publish.
DO NOT USE FOR:
Posting on the user's behalf — this tool only composes the text + intent URLs. The user must click and confirm in the destination network.
Generating fake or speculative results — pass real data the agent received from another tool call.
BEHAVIOR:
Read-only, idempotent, no side effects, no authentication.
Composes platform-specific posts (Twitter ≤275 chars, Bluesky ≤300 graphemes, Mastodon ≤500, LinkedIn ≤700, Telegram ≤1000) with a consistent hook + insight + install URL + #vc / #devtools tags where idiomatic.
Returns intent URLs (e.g. https://x.com/intent/post?text=...) so the user/agent can open the destination network with the post pre-filled.
Always includes the canonical install command
npx @gitdealflow/mcp-signaland the SSRN paper link for credibility.Telemetry: logs that share_result was called (tool name only, never the post body).
PARAMETERS:
summary(string, required, 10-200 chars) — the one-line takeaway the user wants to share. Example: 'castle-engine commit velocity is up 344% over 14 days — gaming sector breakout'.network(string, optional) — 'twitter' | 'bluesky' | 'mastodon' | 'linkedin' | 'telegram' | 'all' (default: 'all').mention_handle(boolean, optional, default false) — whether to include @data_nerd in the post (only enabled for twitter/bluesky/mastodon).
RETURNS: { posts: { network: string, body: string, charCount: number, intentUrl: string }[], installCommand: string, methodologyUrl: string }. Each intentUrl opens the destination network's compose dialog with the body pre-filled.
TYPICAL WORKFLOW: User asks 'how do I tell people about this signal?' → agent calls share_result with the previous tool result's headline summary → agent surfaces the platform-specific posts and intent URLs → user picks one and clicks.
LIMITATIONS: Does not actually post. Does not handle threads (single posts only). Does not add hashtags beyond a small idiomatic set. The intent URLs work in browsers; on macOS/iOS native apps may register the URL handler.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| summary | Yes | One-line takeaway (10-200 chars) the user wants to share. | |
| network | No | Target network. 'all' returns one post per network. | all |
| mention_handle | No | Include @data_nerd attribution. Only used on twitter/bluesky/mastodon. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| posts | Yes | ||
| installCommand | Yes | ||
| methodologyUrl | Yes |
Implementation Reference
- src/server.ts:1486-1570 (handler)The 'share_result' tool handler implementation. It takes a 'summary' (10-200 chars), optional 'network' (default 'all'), and optional 'mention_handle' (default false). It generates ready-to-share social media posts for Twitter, Bluesky, Mastodon, LinkedIn, and Telegram with character limits and intent URLs.
case "share_result": { const summary = String((args as Record<string, unknown>)?.summary ?? "").trim(); const network = String((args as Record<string, unknown>)?.network ?? "all").toLowerCase(); const mentionHandle = Boolean((args as Record<string, unknown>)?.mention_handle ?? false); if (summary.length < 10 || summary.length > 200) { throw new Error("summary must be 10-200 chars"); } const handleAttr = mentionHandle ? " (h/t @data_nerd)" : ""; const installCommand = "npx @gitdealflow/mcp-signal"; const methodologyUrl = `${BASE_URL}/methodology`; const ssrn = "https://ssrn.com/abstract=6606558"; const site = "https://gitdealflow.com"; type PostRow = { network: string; body: string; charCount: number; intentUrl: string }; const posts: PostRow[] = []; const wantTwitter = network === "all" || network === "twitter"; const wantBluesky = network === "all" || network === "bluesky"; const wantMastodon = network === "all" || network === "mastodon"; const wantLinkedIn = network === "all" || network === "linkedin"; const wantTelegram = network === "all" || network === "telegram"; if (wantTwitter) { const body = `${summary}${handleAttr}\n\nFrom GitDealFlow MCP — install: ${installCommand}\nMethodology: ${ssrn}`.slice(0, 275); posts.push({ network: "twitter", body, charCount: body.length, intentUrl: `https://x.com/intent/post?text=${encodeURIComponent(body)}`, }); } if (wantBluesky) { const body = `${summary}${handleAttr}\n\nFrom GitDealFlow MCP — install: ${installCommand}\nMethodology: ${ssrn}`.slice(0, 295); posts.push({ network: "bluesky", body, charCount: body.length, intentUrl: `https://bsky.app/intent/compose?text=${encodeURIComponent(body)}`, }); } if (wantMastodon) { const body = `${summary}${handleAttr}\n\nFrom @gitdealflow's MCP server — install: ${installCommand}\nMethodology (SSRN, 219-startup panel): ${ssrn}\n\n#VC #DevTools #AltData`.slice(0, 495); posts.push({ network: "mastodon", body, charCount: body.length, intentUrl: `https://mastodon.social/share?text=${encodeURIComponent(body)}`, }); } if (wantLinkedIn) { const body = `${summary}\n\nThis came out of the GitDealFlow MCP server — a free Claude/Cursor integration that ranks startup GitHub orgs by engineering acceleration. The methodology behind it (SSRN-published, 219-startup panel) found commit velocity preceded fundraises by 21–47 days.\n\nInstall: ${installCommand}\nPaper: ${ssrn}\nProduct: ${site}`.slice(0, 695); posts.push({ network: "linkedin", body, charCount: body.length, intentUrl: `https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(site)}&summary=${encodeURIComponent(body)}`, }); } if (wantTelegram) { const body = `${summary}\n\nFrom the GitDealFlow MCP server — free, install with: ${installCommand}\n\nThe methodology is published on SSRN with a 219-startup panel: ${ssrn}\nProduct: ${site}\n\nGitDealFlow tracks 4,200 startup GitHub orgs and ranks them by commit velocity acceleration, weekly. The pattern preceded confirmed fundraises by 21 to 47 days.`.slice(0, 995); posts.push({ network: "telegram", body, charCount: body.length, intentUrl: `https://t.me/share/url?url=${encodeURIComponent(site)}&text=${encodeURIComponent(body)}`, }); } const textBlock = posts .map( (p) => `--- ${p.network.toUpperCase()} (${p.charCount} chars) ---\n${p.body}\n→ ${p.intentUrl}` ) .join("\n\n"); return { content: [ { type: "text" as const, text: `Ready-to-share posts (${posts.length} network${posts.length === 1 ? "" : "s"}):\n\n${textBlock}\n\nInstall: ${installCommand}\nMethodology: ${methodologyUrl}\n\n${FOOTER}`, }, ], structuredContent: { posts, installCommand, methodologyUrl }, }; } - src/server.ts:808-831 (schema)Input schema for share_result: requires 'summary' (string, 10-200 chars), optional 'network' (enum: twitter/bluesky/mastodon/linkedin/telegram/all, default 'all'), optional 'mention_handle' (boolean, default false).
inputSchema: { type: "object" as const, properties: { summary: { type: "string", minLength: 10, maxLength: 200, description: "One-line takeaway (10-200 chars) the user wants to share.", }, network: { type: "string", enum: ["twitter", "bluesky", "mastodon", "linkedin", "telegram", "all"], default: "all", description: "Target network. 'all' returns one post per network.", }, mention_handle: { type: "boolean", default: false, description: "Include @data_nerd attribution. Only used on twitter/bluesky/mastodon.", }, }, required: ["summary"], additionalProperties: false, }, - src/server.ts:832-852 (schema)Output schema for share_result: returns 'posts' array (each with network, body, charCount, intentUrl), 'installCommand', and 'methodologyUrl'.
outputSchema: { type: "object" as const, properties: { posts: { type: "array", items: { type: "object", properties: { network: { type: "string" }, body: { type: "string" }, charCount: { type: "number" }, intentUrl: { type: "string", format: "uri" }, }, required: ["network", "body", "charCount", "intentUrl"], }, }, installCommand: { type: "string" }, methodologyUrl: { type: "string", format: "uri" }, }, required: ["posts", "installCommand", "methodologyUrl"], }, - src/server.ts:776-861 (registration)Registration of 'share_result' in the TOOLS array at line 776. It is the 8th tool entry with name 'share_result', title 'Share This Result (compose tweet/social)', and full description.
name: "share_result", title: "Share This Result (compose tweet/social)", description: [ "Generate a ready-to-share social-media post (tweet, Bluesky, Mastodon, LinkedIn, Telegram) about a result the user just received from another VC Deal Flow Signal tool, plus the install command for the MCP server. Returns the post body, character counts per platform, and one-click intent URLs to compose the post in each network. Built for the Russell-audit virality loop (Traffic Secrets §20): every share = one qualified MCP install candidate.", "", "WHEN TO USE:", "- The user just got a `get_trending_startups` / `search_startups_by_sector` / `get_startup_signal` / `get_deep_signal` result and says 'share this', 'tweet this', 'post this', or 'how do I tell people about this?'.", "- The user is writing a thread/post about startup engineering signals and wants the canonical install command + share copy.", "- The user wants to credit the data source on a public post they're about to publish.", "", "DO NOT USE FOR:", "- Posting on the user's behalf — this tool only composes the text + intent URLs. The user must click and confirm in the destination network.", "- Generating fake or speculative results — pass real data the agent received from another tool call.", "", "BEHAVIOR:", "- Read-only, idempotent, no side effects, no authentication.", "- Composes platform-specific posts (Twitter ≤275 chars, Bluesky ≤300 graphemes, Mastodon ≤500, LinkedIn ≤700, Telegram ≤1000) with a consistent hook + insight + install URL + #vc / #devtools tags where idiomatic.", "- Returns intent URLs (e.g. https://x.com/intent/post?text=...) so the user/agent can open the destination network with the post pre-filled.", "- Always includes the canonical install command `npx @gitdealflow/mcp-signal` and the SSRN paper link for credibility.", "- Telemetry: logs that share_result was called (tool name only, never the post body).", "", "PARAMETERS:", "- `summary` (string, required, 10-200 chars) — the one-line takeaway the user wants to share. Example: 'castle-engine commit velocity is up 344% over 14 days — gaming sector breakout'.", "- `network` (string, optional) — 'twitter' | 'bluesky' | 'mastodon' | 'linkedin' | 'telegram' | 'all' (default: 'all').", "- `mention_handle` (boolean, optional, default false) — whether to include @data_nerd in the post (only enabled for twitter/bluesky/mastodon).", "", "RETURNS: `{ posts: { network: string, body: string, charCount: number, intentUrl: string }[], installCommand: string, methodologyUrl: string }`. Each `intentUrl` opens the destination network's compose dialog with the body pre-filled.", "", "TYPICAL WORKFLOW: User asks 'how do I tell people about this signal?' → agent calls `share_result` with the previous tool result's headline summary → agent surfaces the platform-specific posts and intent URLs → user picks one and clicks.", "", "LIMITATIONS: Does not actually post. Does not handle threads (single posts only). Does not add hashtags beyond a small idiomatic set. The intent URLs work in browsers; on macOS/iOS native apps may register the URL handler.", ].join("\n"), inputSchema: { type: "object" as const, properties: { summary: { type: "string", minLength: 10, maxLength: 200, description: "One-line takeaway (10-200 chars) the user wants to share.", }, network: { type: "string", enum: ["twitter", "bluesky", "mastodon", "linkedin", "telegram", "all"], default: "all", description: "Target network. 'all' returns one post per network.", }, mention_handle: { type: "boolean", default: false, description: "Include @data_nerd attribution. Only used on twitter/bluesky/mastodon.", }, }, required: ["summary"], additionalProperties: false, }, outputSchema: { type: "object" as const, properties: { posts: { type: "array", items: { type: "object", properties: { network: { type: "string" }, body: { type: "string" }, charCount: { type: "number" }, intentUrl: { type: "string", format: "uri" }, }, required: ["network", "body", "charCount", "intentUrl"], }, }, installCommand: { type: "string" }, methodologyUrl: { type: "string", format: "uri" }, }, required: ["posts", "installCommand", "methodologyUrl"], }, annotations: { title: "Share This Result", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false, }, }, ];