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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The username/handle to check. | |
| platforms | No | Platforms to check. Defaults to ['github', 'twitter', 'reddit', 'npm']. |
Implementation Reference
- src/tools/check_socials.ts:430-523 (handler)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); } }
- src/tools/check_socials.ts:223-235 (schema)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, });
- src/types.ts:288-291 (schema)TypeScript interface definition for CheckSocialsInput used in tool implementation.export interface CheckSocialsInput { name: string; platforms?: SocialPlatform[]; }