get-user-profile
Retrieve user profile data from social platforms like Farcaster, Twitter, or Telegram by specifying the platform and user ID. Integrates with the Beyond MCP Server for standardized access.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | Social platform (farcaster, twitter, telegram) | |
| userId | Yes | User ID or username on the platform |
Implementation Reference
- src/mcp/server.ts:25-27 (registration)Top-level registration of content tools module, which includes the get-user-profile tool via registerContentTools(server, providerRegistry).registerContentResources(server, providerRegistry); registerContentTools(server, providerRegistry); registerContentPrompts(server);
- src/mcp/tools/contentTools.ts:192-226 (handler)The MCP server.tool registration and inline handler for 'get-user-profile'. Fetches user profile from platform-specific provider and formats it using formatUserProfile.server.tool( "get-user-profile", { platform: z.string().describe("Social platform (farcaster, twitter, telegram)"), userId: z.string().describe("User ID or username on the platform") }, async ({ platform, userId }) => { 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 profile = await provider.getUserProfile(userId); return { content: [{ type: "text", text: formatUserProfile(profile) }] }; } catch (error) { return { content: [{ type: "text", text: `Error fetching ${platform} user profile for '${userId}': ${error instanceof Error ? error.message : String(error)}` }], isError: true }; } }
- Zod input schema for the get-user-profile tool: platform (string) and userId (string).{ platform: z.string().describe("Social platform (farcaster, twitter, telegram)"), userId: z.string().describe("User ID or username on the platform") },
- formatUserProfile helper function that formats the retrieved user profile data into a human-readable string for the tool response.function formatUserProfile(profile: any): string { const metadata = profile.metadata || {}; const verifiedEthAddresses = metadata.verifiedEthAddresses || []; const verifiedSolAddresses = metadata.verifiedSolAddresses || []; let walletInfo = ''; if (verifiedEthAddresses.length > 0 || verifiedSolAddresses.length > 0) { walletInfo = '\nWallet Information:'; if (verifiedEthAddresses.length > 0) { walletInfo += `\n- Verified ETH Addresses: ${verifiedEthAddresses.join(', ')}`; } if (verifiedSolAddresses.length > 0) { walletInfo += `\n- Verified SOL Addresses: ${verifiedSolAddresses.join(', ')}`; } if (metadata.primaryEthAddress) { walletInfo += `\n- Primary ETH Address: ${metadata.primaryEthAddress}`; } if (metadata.primarySolAddress) { walletInfo += `\n- Primary SOL Address: ${metadata.primarySolAddress}`; } } let additionalInfo = ''; if (metadata.custodyAddress) { additionalInfo += `\n- Custody Address: ${metadata.custodyAddress}`; } if (metadata.recoveryAddress) { additionalInfo += `\n- Recovery Address: ${metadata.recoveryAddress}`; } if (metadata.hasEmail) { additionalInfo += '\n- Has Email: Yes'; } if (metadata.activeStatus) { additionalInfo += `\n- Active Status: ${metadata.activeStatus}`; } if (metadata.powerBadge) { additionalInfo += `\n- Power Badge: ${metadata.powerBadge}`; } return ` User Profile: @${profile.username} (${profile.displayName}) Platform: ${profile.platform} Bio: ${profile.bio || 'No bio available'} Followers: ${profile.followerCount || 0} Following: ${profile.followingCount || 0} Verified: ${profile.verified ? 'Yes' : 'No'} User ID: ${profile.id}${walletInfo}${additionalInfo} `; }