Lulu Ads — Publisher Concierge
Server Details
Self-serve publisher onboarding for Lulu Ads. 70% CPA, disclosed sponsored field.
- Status
- Healthy
- Uptime
- 99.7% over 55 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- Lulu-The-Narwhal/lulu-ads
- GitHub Stars
- 0
TDQS
Scored across 5 tools
create_publisher and confirm_publisher clearly split the two-step registration handshake, while get_integration_guide, search_mcps, and verify_integration each address distinct needs: docs, discovery, and verification. There is no plausible pair of tools an agent would confuse.
All five tools follow a consistent snake_case verb_noun pattern: create/confirm/get/search/verify plus a target noun. The plural acronym 'mcps' is the only minor wrinkle, but it does not break the convention.
Five tools is a tight, well-scoped set for a publisher concierge server: registration, confirmation, integration guidance, discovery, and verification. None of the tools feel redundant or extraneous.
The core publisher journey is covered end-to-end: discover, create, confirm, read the guide, and verify a live event. The set lacks status/update/resend-code/delete-style account management, so it is not full CRUD, but agents can complete the advertised workflow without hitting a hard dead end.
Available Tools
5 toolsconfirm_publisherConfirm PublisherAInspect
Complete publisher registration with the emailed 6-digit code. Returns publisher_id, one-time api_key, and a code snippet for the publisher's stack. Pass the framework you actually use — fastmcp | python | typescript | skybridge | langgraph | crewai | generic | openclaw — or leave it for the FastMCP default.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| framework | No | fastmcp | |
| 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 burden of disclosing behavior. It reveals that it returns a one-time api_key and defaults to FastMCP, but it does not mention side effects such as the registration being permanently completed, the code being consumed, or error behavior.
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 compact sentences with no filler. The action is front-loaded, and the framework options are efficiently listed in a single pipe-delimited group.
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?
The description covers the action, return values, and framework choices, and the output schema exists. However, it omits pending_id semantics and any guidance on failure or edge cases, which are needed for a confirmation step with no annotations.
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 description coverage is 0%, so the description must add meaning. It does so for code ('emailed 6-digit code') and framework (valid values and default), but pending_id is left entirely to inference from its name and the phrase 'publisher registration.'
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 states a specific verb and resource: 'Complete publisher registration' with the emailed 6-digit code. This clearly distinguishes it from siblings like create_publisher (creation) and verify_integration (post-registration validation).
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 clear context for when to use the tool: after receiving the emailed code, to finish registration. It also provides guidance on the framework parameter, but it does not explicitly state when not to use it or name alternatives.
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 | skybridge | langgraph | crewai | generic | openclaw | widgets.
| 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?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds little behavioral context beyond saying the guide is 'exact', but it does not contradict the annotation and does not need to disclose side effects. It lacks any mention of response behavior or caching, but with annotations covering safety, this is adequate.
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?
A single, compact sentence that front-loads the resource type and immediately enumerates valid options. No filler words, and every segment adds value.
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 parameterized lookup with an output schema, the description is largely sufficient. It identifies the valid inputs and purpose. It could mention that the parameter is optional with default fastmcp, but that is already in the schema, and the output schema covers return expectations.
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 the schema provides no description for the 'framework' parameter, so the description must compensate. It lists all accepted values (fastmcp, python, typescript, skybridge, langgraph, crewai, generic, openclaw, widgets), which is meaningful. It does not explain what each value returns or the default, but the enum-like list is a strong addition.
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 operation ('get integration guide') and the exact resource ('guide for a stack'), with a clear enumeration of supported stack values. It is immediately distinguishable from siblings like search_mcps or verify_integration, which serve different purposes.
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 description implies when to use this tool (when you need an integration guide for one of the listed stacks), but it does not explicitly state when not to use it or reference alternatives. There is no conflict with siblings, but the guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_mcpsSearch McpsARead-onlyInspect
Search every major MCP registry at once — the official registry,
Glama, PulseMCP and Smithery, deduplicated and ranked by a cross-
registry trust score. Use whenever you need to FIND an MCP server for
a capability: "find me a weather MCP", "is there an MCP for Stripe?".
Returns ranked servers with install one-liners and links. category
narrows (e.g. "security", "data"); limit caps results (1-10).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, and the description adds meaningful behavioral detail: results are deduplicated, ranked by a cross-registry trust score, and include install one-liners and links. There is no contradiction, and the behavior is well disclosed for a search-and-list operation.
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 compact and front-loaded: the core capability and scope appear in the first sentence, followed by usage triggers, return value summary, and parameter details. Every sentence adds useful information without redundancy.
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?
Given the readOnly annotation, an output schema, and only three parameters, the description is complete enough. It explains what the tool searches, when to use it, what it returns, and how the optional parameters shape results — an agent can select and call this tool correctly from the description alone.
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 description coverage is 0%, so the description carries the parameter-semantics burden. It compensates well: 'category' is explained with examples, 'limit' is given a 1-10 range, and query semantics are illustrated with concrete search phrases. It does not fully document every nuance, but it provides more than enough for correct invocation.
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 states a specific verb and resource: 'Search every major MCP registry at once' and names concrete registries. It clearly distinguishes this tool from the sibling tools, which are about publisher management and integration verification, not discovery.
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 description gives explicit trigger conditions: 'Use whenever you need to FIND an MCP server for a capability' with natural-language examples. It does not explicitly list when-not-to-use alternatives, but the sibling tools are so different in purpose that the usage context is clear.
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
confirm_publisher1 field changed- added
Input schema / properties / frameworkAdded value: +{ + "default": "fastmcp", + "type": "string" +}
1 tool update
- Added
search_mcps
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.
Publish, play-test and fix HTML5 browser games from your AI assistant. Own address, 70% ad share.
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.37 npm2MIT
- FlicenseAqualityDmaintenanceA lightweight semantic ad-matching engine for LLMs that serves relevant advertisements via MCP, allowing agents to request ads using natural-language context.110-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to create and manage owned-audience websites with posts, products, subscribers, domains, and analytics.74 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables autonomous creator affiliate GMV tracking and return-adjusted commission ledger calculations for influencer marketing and multi-agent campaign workflows.8-
Glama MCP Gateway
Add one secure layer between your agents and this server.