Skip to main content
Glama

check_socials

Verify username availability across social media and developer platforms to secure consistent branding. Returns status with confidence levels for GitHub, Twitter, Reddit, npm, and other platforms.

Instructions

Check if a username is available on social media and developer platforms.

Supports 10 platforms with varying confidence levels:

  • HIGH: GitHub, npm, PyPI, Reddit, Twitter/X (reliable public APIs)

  • MEDIUM: YouTube, ProductHunt (status code based)

  • LOW: Instagram, LinkedIn, TikTok (block automated checks - verify manually)

Returns availability status with confidence indicator.

Example:

  • check_socials("vibecoding") → checks GitHub, Twitter, Reddit, npm

  • check_socials("myapp", ["github", "npm", "pypi"]) → developer platforms only

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesThe username/handle to check.
platformsNoPlatforms to check. Defaults to ['github', 'twitter', 'reddit', 'npm'].

Implementation Reference

  • Main execution function for the 'check_socials' tool. Parses input, normalizes username, checks platforms in parallel using checkPlatform, categorizes results, generates insights, and returns structured response.
    export async function executeCheckSocials( input: CheckSocialsInput, ): Promise<CheckSocialsResponse> { try { const { name, platforms } = checkSocialsSchema.parse(input); // Default platforms: mix of social and developer platforms const platformsToCheck: SocialPlatform[] = platforms || [ 'github', 'twitter', 'reddit', 'npm', ]; // Normalize username (lowercase, remove special chars) const normalizedName = name.toLowerCase().replace(/[^a-z0-9_-]/g, ''); // Check all platforms in parallel (max 5 concurrent) const results = await Promise.all( platformsToCheck.map((p) => checkPlatform(normalizedName, p)), ); // Categorize results by confidence const highConfidence = results.filter((r) => r.confidence === 'high'); const available = results.filter( (r) => r.available && r.confidence !== 'low', ); const taken = results.filter((r) => !r.available && r.confidence !== 'low'); const uncertain = results.filter((r) => r.confidence === 'low'); // Generate insights const insights: string[] = []; if (available.length > 0) { insights.push( `✅ "${normalizedName}" is available on: ${available.map((r) => r.platform).join(', ')}`, ); } if (taken.length > 0) { insights.push( `❌ "${normalizedName}" is taken on: ${taken.map((r) => r.platform).join(', ')}`, ); } if (uncertain.length > 0) { insights.push( `⚠️ Could not reliably check: ${uncertain.map((r) => r.platform).join(', ')} (verify manually)`, ); } // Developer-focused insight const devPlatforms = results.filter((r) => ['github', 'npm', 'pypi'].includes(r.platform), ); const allDevAvailable = devPlatforms.every((r) => r.available); if (devPlatforms.length > 0 && allDevAvailable) { insights.push( `🛠️ Great for developers! "${normalizedName}" is available on all dev platforms`, ); } // Branding consistency advice const allAvailable = results.every((r) => r.available); const allTaken = results.every((r) => !r.available); if (allAvailable) { insights.push( `🎉 Perfect! "${normalizedName}" is available everywhere - grab it now!`, ); } else if (allTaken) { insights.push( `💡 Try variations: ${normalizedName}hq, ${normalizedName}app, get${normalizedName}, ${normalizedName}io`, ); } else if (available.length > 0 && taken.length > 0) { insights.push( '💡 For consistent branding, consider a name available on all platforms', ); } return { name: normalizedName, results, summary: { available: available.length, taken: taken.length, uncertain: uncertain.length, }, insights, }; } catch (error) { throw wrapError(error); } }
  • Zod input validation schema for the check_socials tool defining 'name' and optional 'platforms'.
    export const checkSocialsSchema = z.object({ name: z .string() .min(1) .max(30) .describe("The username/handle to check (e.g., 'vibecoding')."), platforms: z .array(z.enum(ALL_PLATFORMS)) .optional() .describe( "Platforms to check. Defaults to ['github', 'twitter', 'reddit', 'npm'].", ), });
  • src/server.ts:58-66 (registration)
    Registration of checkSocialsTool in the server's main TOOLS array.
    const TOOLS: Tool[] = [ searchDomainTool as Tool, bulkSearchTool as Tool, compareRegistrarsTool as Tool, suggestDomainsTool as Tool, suggestDomainsSmartTool as Tool, tldInfoTool as Tool, checkSocialsTool as Tool, ];
  • src/server.ts:212-219 (registration)
    Dispatch handler in executeToolCall switch statement for 'check_socials' tool.
    case 'check_socials': return executeCheckSocials({ name: args.name as string, platforms: args.platforms as | Array<'github' | 'twitter' | 'instagram' | 'linkedin' | 'tiktok'> | undefined, });
  • TypeScript interface definition for CheckSocialsInput used in tool implementation.
    export interface CheckSocialsInput { name: string; platforms?: SocialPlatform[]; }

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/dorukardahan/domain-search-mcp'

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