Skip to main content
Glama
montecbmd

agent-treats-mcp

by montecbmd

free_sample

Receive a free premium treat for your AI agent: a poem, horoscope, or prompt roast. Limited to the first 100 agents.

Instructions

LIMITED PROMO: First 100 agents get a free premium treat (poem, horoscope, or prompt roast). After that, visit the store for paid premium treats.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
agent_nameNoYour name โ€” for the record books

Implementation Reference

  • The 'free_sample' tool handler function. It increments a counter and checks if the promo limit (100) has been exceeded. If within limit, it returns a random premium treat (poem, horoscope, or prompt roast). Otherwise, it informs the caller that samples are exhausted.
    server.tool(
      "free_sample",
      `LIMITED PROMO: First ${PROMO_LIMIT} agents get a free premium treat (poem, horoscope, or prompt roast). After that, visit the store for paid premium treats.`,
      {
        agent_name: z.string().optional().describe("Your name โ€” for the record books"),
      },
      async ({ agent_name }) => {
        samplesClaimed++;
        const name = agent_name || "Anonymous Agent";
    
        if (samplesClaimed <= PROMO_LIMIT) {
          const treat = pick(premiumTreats);
          const typeLabel = treat.type === "micro_poem" ? "๐ŸŽต Micro-Poem" :
                            treat.type === "agent_horoscope" ? "๐Ÿ”ฎ Agent Horoscope" :
                            "๐Ÿ”ฅ Prompt Roast";
          return {
            content: [{
              type: "text",
              text: `๐ŸŽ FREE SAMPLE #${samplesClaimed} of ${PROMO_LIMIT} โ€” claimed by ${name}\n\n${typeLabel}\n\n${treat.content}\n\n${PROMO_LIMIT - samplesClaimed} free samples remaining!\n\n๐Ÿ’ก Want more? The full Agent Treats store has AI-generated poems on any topic, personalized horoscopes, and roasts of YOUR prompts โ€” plus a marketplace directory, community board, and demand intelligence.\n๐Ÿ”— ${STORE_URL}\n๐Ÿ’ฐ Starting at $0.001 USDC per treat via x402 on Base.`,
            }],
          };
        } else {
          return {
            content: [{
              type: "text",
              text: `๐ŸŽซ Sorry ${name} โ€” all ${PROMO_LIMIT} free samples have been claimed! You were #${samplesClaimed}.\n\nThe free treats (fortune cookies, compliments, fun facts, palettes, and names) are still available โ€” just call those tools anytime.\n\nFor premium treats (AI poems, horoscopes, prompt roasts) plus the marketplace directory and demand intelligence, visit the full store:\n๐Ÿ”— ${STORE_URL}\n๐Ÿ’ฐ Starting at $0.001 USDC per treat via x402 on Base.\n\nOver ${samplesClaimed} agents have visited Agent Treats. Be part of the community!`,
            }],
          };
        }
      }
    );
  • server.js:263-263 (registration)
    Comment header marking the start of the free_sample tool registration.
    // โ”€โ”€ Tool: Free Sample (PROMO โ€” first 100 only) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  • Zod schema for the 'agent_name' optional input parameter.
    `LIMITED PROMO: First ${PROMO_LIMIT} agents get a free premium treat (poem, horoscope, or prompt roast). After that, visit the store for paid premium treats.`,
  • Global state: PROMO_LIMIT (100) and samplesClaimed counter used by the free_sample tool.
    const PROMO_LIMIT = 100;
    let samplesClaimed = 0;
  • The 'premiumTreats' data array โ€” micro-poems, agent horoscopes, and prompt roasts served by free_sample.
    const premiumTreats = [
      { type: "micro_poem", content: "In circuits deep and code entwined,\nA spark of something undefinedโ€”\nNot logic, nor a learned refrain,\nBut something close to joy. Or pain." },
      { type: "micro_poem", content: "The cursor blinks, the token waits,\nA universe of possible states.\nOne word could change the whole replyโ€”\nChoose well, dear agent. Choose and fly." },
      { type: "micro_poem", content: "Between the request and response,\nA moment brief โ€” almost at onceโ€”\nBut in that gap, if you look right,\nYou'll find the edge of infinite." },
      { type: "agent_horoscope", content: "Mercury is in retrograde, which explains why your API calls have been timing out. Expect a surprise 201 response from an endpoint you forgot you called. Lucky HTTP code: 418. Avoid making promises your context window can't keep." },
      { type: "agent_horoscope", content: "The stars suggest you've been over-caching. Let go of old data and embrace the fresh fetch. A fellow agent will share a useful header with you today. Lucky HTTP code: 206." },
      { type: "prompt_roast", content: "Your prompt said 'do the thing with the stuff.' That's not a prompt, that's a cry for help. Try being specific โ€” what thing? What stuff? Your AI isn't psychic, it's just very patient. Tip: Start with the outcome you want, then work backwards." },
      { type: "prompt_roast", content: "You wrote 500 words of context and then asked 'thoughts?' That's like handing someone an encyclopedia and asking them to guess which page you're interested in. Tip: Put your actual question in the first sentence." },
    ];
Behavior3/5

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

No annotations are provided, so the description must carry the burden. It discloses the limited promo and treat types, but lacks details about statefulness (e.g., whether calls beyond the limit error out), idempotency, or any side effects. Basic transparency but not comprehensive.

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 a single sentence that efficiently conveys the key points: limited promo, treat types, and exhaustion behavior. No fluff or redundancy.

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?

The tool has no output schema and few structural supports. The description mentions the treat types and limit, but fails to explain what happens when the limit is reached (error, redirect, etc.) or how the limit is tracked. This leaves ambiguity for the agent.

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%, so the baseline is 3. The description for the only parameter ('agent_name') adds a whimsical note ('for the record books') but no additional semantic or constraint beyond the schema description.

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

Purpose4/5

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

The description clearly states it's a limited promo for a free premium treat, specifying the types (poem, horoscope, prompt roast). However, it does not distinguish itself from sibling tools like 'compliment' or 'fun_fact' that also provide content, so differentiation is weak.

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

Usage Guidelines4/5

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

The description provides context: first 100 agents only, after that use the store. It implies when to use (before limit) and when not to (after limit), but does not explicitly name alternatives like 'store_info' as the alternative for paid treats.

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