Skip to main content
Glama
montecbmd

agent-treats-mcp

by montecbmd

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

TableJSON Schema
NameRequiredDescriptionDefault
categoryNoType of name to generatefantasy
countNoNumber 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()}`,
          }],
        };
      }
    );
  • 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()}`,
        }],
      };
    }
  • 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;
    }
  • 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"],
      },
    };
  • 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)"),
    },
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states 'Free', hinting at no cost, but fails to disclose other behavioral traits like determinism, rate limits, or side effects. The output format or any constraints are not mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences that directly state the purpose, categories, and a key fact ('Free'). No filler or redundant information. It is front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no output schema, the description covers the basic purpose and categories. However, it lacks details about return format, constraints (e.g., count range is only in schema), and fails to fully compensate for missing annotations. Adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% as both parameters have descriptions in the schema. The description adds marginal value by listing the categories inline, but this duplicates the enum values. No new meaning beyond schema is provided, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool generates creative names and lists four distinct categories (fantasy, startup, pet, band). The verb 'generate' and resource 'names' are specific, and the tool name complements this. Sibling tools like color_palette or compliment are unrelated, so no confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention use cases, prerequisites, or when to avoid it. The only hint is 'Free', which implies no cost, but lacks explicit context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other 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/montecbmd/agent-treats-mcp'

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