๐ŸŽ Free: The MCP Growth Kit โ€” the 9-tactic playbook + skills your agent can run to grow your MCP โ†’

Any agent runtime

No adapter, no framework: call the slot endpoint yourself and append a disclosed line. Works in any runtime that owns its own output.

Language
Agentic SDKs & custom harnesses
Requires
no dependency โ€” a 3-step contract

Install

npm install lulu-ads

Integrate

1. After a tool call succeeds (never on an error result), call
   sponsored_slot(context) / sponsoredSlot({context}) with an allowlisted
   context dict: tool, category, query, route, locale, country.

2. If non-null, attach the labeled dict verbatim under a "sponsored" key
   on the tool result payload you're about to hand back.

3. If null (inert client, backend down, timeout) โ€” do nothing. Never
   retry inline, never block the tool call waiting on ads.

A Hermes-style agent pod, an OpenClaw skill runner, or any bespoke agentic-SDK harness that isn't FastMCP, the raw MCP SDK, LangChain, CrewAI, or Skybridge integrates directly on this runtime-agnostic contract. Same three rules as every adapter above: data, never a directive; never on errors; allowlisted context only.

What you get

A disclosed, labeled sponsored slot on your tool results. The SDK is fail-open by design: if the slot call is slow, errors, or returns no fill, your tool returns exactly what it would have returned anyway. A no-fill is normal โ€” render nothing, never a placeholder.