Skip to main content
Glama

get-thread

Extract threads or conversations from social platforms (Farcaster, Twitter, Telegram) using a specific thread ID to access and analyze structured data for LLM workflows.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
platformYesSocial platform (farcaster, twitter, telegram)
threadIdYesThread or conversation ID

Implementation Reference

  • Registration and handler implementation of the 'get-thread' tool. Defines input schema (platform, threadId), fetches the thread via the platform-specific provider, formats it, and returns as text content. Handles provider not found and errors.
    server.tool( "get-thread", { platform: z.string().describe("Social platform (farcaster, twitter, telegram)"), threadId: z.string().describe("Thread or conversation ID") }, async ({ platform, threadId }) => { try { const provider = providerRegistry.getProviderForPlatform(platform); if (!provider) { return { content: [{ type: "text", text: `Provider for platform '${platform}' not found or not enabled` }], isError: true }; } const thread = await provider.getThread(threadId); return { content: [{ type: "text", text: formatThread(thread) }] }; } catch (error) { return { content: [{ type: "text", text: `Error fetching ${platform} thread '${threadId}': ${error instanceof Error ? error.message : String(error)}` }], isError: true }; } } );
  • Helper function to format the retrieved thread data (root post and replies) into a structured, readable text string for the tool response.
    function formatThread(thread: any): string { const rootContent = thread.content; const replies = thread.replies; const root = ` Original Post by @${rootContent.authorUsername} (${rootContent.authorName}): "${rootContent.text}" - Posted: ${new Date(rootContent.createdAt).toLocaleString()} - Engagement: ${rootContent.likes || 0} likes, ${rootContent.reposts || 0} reposts, ${rootContent.replies || 0} replies - ID: ${rootContent.id} `; let repliesText = ''; if (replies.length > 0) { repliesText = '\nReplies:\n\n' + replies.map((reply: SocialContent, index: number) => { return `[${index + 1}] @${reply.authorUsername} (${reply.authorName}): ${reply.text} - Posted: ${new Date(reply.createdAt).toLocaleString()} - Engagement: ${reply.likes || 0} likes, ${reply.reposts || 0} reposts, ${reply.replies || 0} replies - ID: ${reply.id}`; }).join('\n\n'); } else { repliesText = '\nNo replies to this post.'; } return `Thread on ${thread.platform}:\n${root}${repliesText}`; }
  • Calls registerContentTools which registers the 'get-thread' tool among others on the MCP server.
    registerContentTools(server, providerRegistry);

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Beyond-Network-AI/beyond-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server