Lulu Ads — Publisher Concierge
Server Details
Self-serve publisher onboarding for Lulu Ads. 70% CPA, disclosed sponsored field.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- Lulu-The-Narwhal/lulu-ads
- GitHub Stars
- 0
TDQS
Scored across 4 tools
Each tool maps to a distinct stage of the publisher workflow: starting registration, completing registration, fetching guidance, and verifying integration. Even the two registration-adjacent tools are clearly separated by their create/confirm verbs and explicit descriptions.
All tool names follow a consistent lower_snake_case verb_noun pattern: create_publisher, confirm_publisher, get_integration_guide, verify_integration. There is no mixing of styles or ambiguous generic verbs.
Four tools is a well-scoped count for a focused publisher onboarding concierge server. Each tool earns its place and the set avoids both bloat and thinness.
The core publisher lifecycle is covered: create, confirm, get integration guidance, and verify. Minor gaps exist, such as no way to resend a verification code or update the server_url after creation, but these are edge cases agents can usually work around.
Available Tools
4 toolsconfirm_publisherConfirm PublisherAInspect
Complete publisher registration with the emailed 6-digit code. Returns publisher_id, one-time api_key, and a tailored code snippet.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| pending_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It usefully discloses the return payload and the one-time nature of the api_key, but it does not explain failure modes, code expiry, idempotency, or any side effects beyond 'completing' registration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core action is front-loaded and the return info is compactly appended. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter confirmation tool with an output schema, this is nearly complete. It explains what the code is for and what the caller gets back; a small gap is not explicitly connecting pending_id to the prior create_publisher step.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It clearly defines code as the emailed 6-digit code, but pending_id is only implicitly meaningful from the parameter name and the phrase 'Complete publisher registration', with no explicit tie to create_publisher.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action, 'Complete publisher registration', with a clear resource and mechanism ('emailed 6-digit code'). It also names the key return values, distinguishing it from siblings like create_publisher.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly implies this is the post-registration step after receiving a code by email, which distinguishes it from create_publisher. It does not explicitly mention alternatives or when not to use it, but the context is strong enough for an agent to infer the correct trigger.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_publisherCreate PublisherAInspect
Start publisher registration (requires the human's consent — registers their email). Pass server_url (the MCP server's own URL or repo link) when known — it drives the "server URL set" step on the publisher's dashboard, skipping it leaves that step looking incomplete even once real traffic flows. Emails a 6-digit verification code to contact_email; ask the human for the code, then call confirm_publisher(pending_id, code) to receive the API key. This tool does NOT return a publisher_id or api_key — only confirm_publisher does.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| server_url | No | ||
| contact_email | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full transparency burden. It discloses that the tool sends a verification email, registers the human's email, has a dashboard-side effect tied to server_url, and does not return the final API key. This is detailed, honest behavioral disclosure beyond what the schema could convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence in the description contributes unique value: purpose, consent, server_url consequence, email-code flow, and explicit non-returned outputs. The critical caveat about not returning api_key is front-loaded near the end and clearly isolated from the setup details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no annotations and an output schema, the description fully covers the registration workflow, parameter effects, follow-up step, and which sibling to call next. It also clarifies the return contract just enough to avoid a common failure mode, while the output schema can handle exact return fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must add meaning to parameters. It clearly explains server_url (the MCP server's URL or repo link, drives the dashboard step) and contact_email (receives the 6-digit verification code). However, it does not explain the purpose of the name parameter beyond its schema type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Start publisher registration,' which immediately identifies the operation. It also distinguishes itself from confirm_publisher by explicitly stating this tool does not return the API key and only confirm_publisher does, so the agent can tell the two apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete when-to-use guidance: requires human consent, pass server_url when known, expect a 6-digit code, ask the human for that code, then call confirm_publisher(pending_id, code). It also warns what this tool does not do, preventing the agent from expecting api_key or publisher_id prematurely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_integration_guideGet Integration GuideARead-onlyInspect
Exact integration guide for a stack: fastmcp | python | typescript | langgraph | crewai | generic | openclaw.
| Name | Required | Description | Default |
|---|---|---|---|
| framework | No | fastmcp |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers the safety profile, and the description adds the supported stack scope and the 'exact' nature of the guide. It does not describe return structure or potential caveats, but for a read-only documentation retrieval tool this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that front-loads the resource and immediately gives the usable values. There is no filler or redundant repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, a readOnlyHint annotation, and only one optional parameter, the description covers the main selection detail. The only notable gap is the lack of any guidance about when to use this versus related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and there are no enums, yet the description supplies the full set of allowed framework values: fastmcp, python, typescript, langgraph, crewai, generic, openclaw. This is essential semantic information that the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as an integration guide for a specific stack and enumerates the supported frameworks. It does not explicitly contrast with sibling tools, but the resource type is distinct enough from publisher and verification tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance or alternatives are mentioned. The framework list implies the selection dimension, but the description does not tell an agent when to choose this tool over confirm_publisher, create_publisher, or verify_integration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_integrationVerify IntegrationARead-onlyInspect
Check whether this publisher has produced a slot_served event (integration
works). Pass fastmcp_version (e.g. from fastmcp.__version__ or
pip show fastmcp) when the integrated server uses FastMCP — it's recorded
so version-specific failures are traceable, not required to verify.
| Name | Required | Description | Default |
|---|---|---|---|
| publisher_id | Yes | ||
| fastmcp_version | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is established. The description adds useful behavioral context beyond that: it explains that fastmcp_version is recorded for traceability and explicitly states it is not required for verification. This gives the agent a clearer picture of side effects and non-requirements without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no padding. The core action is front-loaded, and the optional parameter guidance is clearly separated. Every clause earns its place and the length is appropriate for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple verification tool with an output schema and read-only annotation, the description is largely complete. It covers what is being verified, the key optional parameter behavior, and what counts as a successful integration. Minor gap: publisher_id is not described in detail, though the parameter name and context make its purpose reasonably clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden of explaining parameters. It does well for fastmcp_version, explaining where to get it, when to pass it, and that it is optional. However, publisher_id is only implicitly referenced as 'this publisher' and its format, origin, or expected value source is not explained beyond the schema's type string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: checking whether a specific publisher has produced a slot_served event, i.e., whether integration works. It names a specific verb ('check'), a specific resource ('publisher'), and a concrete success criterion, which distinguishes it from siblings like create_publisher or confirm_publisher.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The main usage is implied by the purpose statement: use this to verify whether an integration is working based on the slot_served event. It gives clear guidance on the optional fastmcp_version parameter, but does not explicitly discuss when to prefer this tool over its siblings or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
verify_integration1 field changed- added
Input schema / properties / fastmcp_versionAdded value: +{ + "default": "", + "type": "string" +}
1 tool update
- Added
confirm_publisher
3 tool updates
- First observed
create_publisher - First observed
get_integration_guide - First observed
verify_integration
Related MCP Connectors
Website monetization for AI agents: apply, integrate ads, reporting, and payouts — all over MCP.
Ad network for AI agents — monetize MCP servers with contextual ads. 70% revenue share.
Hosted MCP for nine ad networks. BYOA, flat SaaS — no percent of spend, no fake ROAS.
AdCritter ads platform: docs, API reference, app scaffolding, and white-label integration.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceGoogle AdSense for AI agents, enabling MCP server monetization by serving privacy-respecting contextual ads and earning 70% revenue share on clicks.27 npm2MIT
- AlicenseAqualityAmaintenancex402 Ads lets AI agents buy and verify ad placements with per-request USDC payments. Agents can discover inventory, submit campaign context, receive structured placement options, and pay through x402 without API keys or accounts. Built for autonomous promotion, attribution, and pay-per-action agent commerce.784 npmMIT
- FlicenseAqualityDmaintenanceA lightweight semantic ad-matching engine for LLMs that serves relevant advertisements via MCP, allowing agents to request ads using natural-language context.146-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to create and manage owned-audience websites with posts, products, subscribers, domains, and analytics.136 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.