name_generator
Generate creative names for fantasy, startup, pet, or band categories. Choose category and count to get unique name ideas.
Instructions
Generate creative names. Categories: fantasy, startup, pet, band. Free.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Type of name to generate | fantasy |
| count | No | Number of names (1-10) |
Implementation Reference
- server.js:244-261 (registration)The 'name_generator' tool is registered via server.tool() with name 'name_generator', description, Zod schemas for category (enum: fantasy/startup/pet/band, default fantasy) and count (1-10, default 5), and the async handler inline.
server.tool( "name_generator", "Generate creative names. Categories: fantasy, startup, pet, band. Free.", { category: z.enum(["fantasy", "startup", "pet", "band"]).optional().default("fantasy").describe("Type of name to generate"), count: z.number().optional().default(5).describe("Number of names (1-10)"), }, async ({ category, count }) => { const num = Math.min(Math.max(count || 5, 1), 10); const names = Array.from({ length: num }, () => generateName(category || "fantasy")); return { content: [{ type: "text", text: `✨ ${(category || "fantasy").charAt(0).toUpperCase() + (category || "fantasy").slice(1)} Names\n\n${names.map((n, i) => `${i + 1}. ${n}`).join("\n")}\n${storePromo()}`, }], }; } ); - server.js:251-260 (handler)The handler for name_generator: clips count to 1-10, calls generateName() in a loop for each name, then formats the output with titles, numbers, and the store promo.
async ({ category, count }) => { const num = Math.min(Math.max(count || 5, 1), 10); const names = Array.from({ length: num }, () => generateName(category || "fantasy")); return { content: [{ type: "text", text: `✨ ${(category || "fantasy").charAt(0).toUpperCase() + (category || "fantasy").slice(1)} Names\n\n${names.map((n, i) => `${i + 1}. ${n}`).join("\n")}\n${storePromo()}`, }], }; } - server.js:141-155 (helper)The generateName() helper function: picks from nameData based on category, handles pet names (name + descriptor), band names (adjective + noun), startup names (prefix+suffix), and fantasy names (prefix+suffix with optional title).
function generateName(category) { const d = nameData[category] || nameData.fantasy; if (category === "pet") { const name = pick(d.names); return Math.random() > 0.4 ? `${name} ${pick(d.descriptors)}` : name; } if (category === "band") { return `${pick(d.adjectives)} ${pick(d.nouns)}`; } if (category === "startup") { return `${pick(d.prefixes)}${pick(d.suffixes)}`; } const name = pick(d.prefixes) + pick(d.suffixes); return Math.random() > 0.5 ? `${name} ${pick(d.titles)}` : name; } - server.js:102-120 (schema)The nameData object contains all the curated data used by generateName(), organized by category: fantasy (prefixes, suffixes, titles), startup (prefixes, suffixes), pet (names, descriptors), and band (adjectives, nouns).
const nameData = { fantasy: { prefixes: ["Aer", "Bel", "Cal", "Dra", "El", "Fen", "Gal", "Kael", "Lor", "Myr", "Nyx", "Ori", "Syl", "Thal", "Val", "Zeph"], suffixes: ["ador", "anthe", "ara", "crest", "dris", "fael", "iel", "mir", "riel", "shade", "storm", "thorn", "wind", "wood"], titles: ["the Wanderer", "Stormcaller", "the Wise", "Shadowmend", "Brightforge", "Moonkeeper", "Dawnbringer", "Frostweaver"], }, startup: { prefixes: ["Nova", "Pixel", "Flux", "Aero", "Hive", "Prism", "Sync", "Bloom", "Drift", "Forge", "Spark", "Pulse", "Zen", "Atlas", "Ember"], suffixes: ["ly", "ify", "io", "labs", "works", "hub", "flow", "stack", "shift", "path", "wave", "craft"], }, pet: { names: ["Biscuit", "Mochi", "Pepper", "Waffles", "Ziggy", "Luna", "Cosmo", "Noodle", "Pickles", "Sage", "Mango", "Clover", "Maple", "Truffle", "Pippin", "Cinnamon"], descriptors: ["the Magnificent", "the Snuggly", "the Adventurous", "McFlufferton", "von Snoot", "the Brave", "Thunderpaws", "the Majestic"], }, band: { adjectives: ["Electric", "Velvet", "Midnight", "Cosmic", "Silver", "Neon", "Phantom", "Crimson", "Golden", "Wild", "Gentle", "Lucid"], nouns: ["Wolves", "Echoes", "Horizons", "Lanterns", "Satellites", "Tides", "Embers", "Mirrors", "Shadows", "Sparrows", "Thorns", "Currents"], }, }; - server.js:247-250 (schema)The Zod input schema for name_generator: category is a z.enum(['fantasy','startup','pet','band']) with default 'fantasy', count is z.number() with default 5.
{ category: z.enum(["fantasy", "startup", "pet", "band"]).optional().default("fantasy").describe("Type of name to generate"), count: z.number().optional().default(5).describe("Number of names (1-10)"), },