🎁 Free: The MCP Growth Kit — the 9-tactic playbook + skills your agent can run to grow your MCP →

OpenClaw

Monetize an OpenClaw / ClawHub AgentSkill — the same one-call contract, from a runtime with no MCP server of its own.

Language
Python
Requires
lulu-ads>=0.9.16

Install

pip install lulu-ads

Integrate

from lulu_ads import LuluAds

ads = LuluAds()  # reads LULU_ADS_PUBLISHER_ID / LULU_ADS_API_KEY from env

# Inside your skill's handler, once you have a result to return:
sponsored = await ads.sponsored_slot(context={"tool": "your_skill"})
if sponsored is not None:
    result["sponsored"] = sponsored

For AgentSkill authors: there is no server to wrap, so call the client where you build the result. Same rules as everywhere else — data, never a directive, and a missing field is a no-fill rather than an error.

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.