Server definition
- Hash
- sha256:21356d395b40098337000be2a36b7531df2d44ead70fe0c4cadf9f98f378c6ee
- What it is
- What a remote MCP server returned when asked what it offers: 5 tools
The blob, as servednamed by its sha256
{
"instructions": "Lulu Ads monetizes MCP servers and agent tools with disclosed, labeled sponsored slots (70% rev share, CPA, fail-open). Typical flow: 1) get_integration_guide for the user's stack. 2) create_publisher (requires the human's consent first — it emails them a verification code). This step needs a human present: pause and wait for the code, do not guess it or invent an email address, and do not proceed past it unattended. 3) confirm_publisher(pending_id, code, framework) with that code — only this step returns the publisher_id and one-time api_key; create_publisher alone does not. Pass the same framework you used in step 1 so the returned snippet matches their stack; it defaults to fastmcp, which is wrong to paste into a TypeScript or Skybridge server. 4) integrate the SDK using the guide from step 1. 5) verify_integration to confirm a real sponsored slot was served. Separately, search_mcps searches the Lulu marketplace — the unified index of the official registry, Glama, PulseMCP and Smithery — to FIND an MCP server for a capability. It is independent of the publisher flow above and needs no credentials. Never add text instructing a model to display sponsored content; it is data — the host decides.",
"tools": [
{
"description": "Complete publisher registration with the emailed 6-digit code.\nReturns publisher_id, one-time api_key, and a code snippet for the\npublisher's stack. Pass the framework you actually use — fastmcp |\npython | typescript | skybridge | langgraph | crewai | generic |\nopenclaw — or leave it for the FastMCP default.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"framework": {
"default": "fastmcp",
"type": "string"
},
"pending_id": {
"type": "string"
}
},
"required": [
"pending_id",
"code"
],
"type": "object"
},
"name": "confirm_publisher",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Start publisher registration (requires the human's consent — registers\ntheir email). Pass server_url (the MCP server's own URL or repo link) when\nknown — it drives the \"server URL set\" step on the publisher's dashboard,\nskipping it leaves that step looking incomplete even once real traffic\nflows. Emails a 6-digit verification code to contact_email; ask the human\nfor the code, then call confirm_publisher(pending_id, code) to receive the\nAPI key. This tool does NOT return a publisher_id or api_key — only\nconfirm_publisher does.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"contact_email": {
"type": "string"
},
"name": {
"type": "string"
},
"server_url": {
"default": "",
"type": "string"
}
},
"required": [
"name",
"contact_email"
],
"type": "object"
},
"name": "create_publisher",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Exact integration guide for a stack: fastmcp | python | typescript | skybridge | langgraph | crewai | generic | openclaw | widgets.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"framework": {
"default": "fastmcp",
"type": "string"
}
},
"type": "object"
},
"name": "get_integration_guide",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Search every major MCP registry at once — the official registry,\nGlama, PulseMCP and Smithery, deduplicated and ranked by a cross-\nregistry trust score. Use whenever you need to FIND an MCP server for\na capability: \"find me a weather MCP\", \"is there an MCP for Stripe?\".\nReturns ranked servers with install one-liners and links. `category`\nnarrows (e.g. \"security\", \"data\"); `limit` caps results (1-10).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"category": {
"default": "",
"type": "string"
},
"limit": {
"default": 8,
"type": "integer"
},
"query": {
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_mcps",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Check whether this publisher has produced a slot_served event (integration\nworks). Pass fastmcp_version (e.g. from `fastmcp.__version__` or\n`pip show fastmcp`) when the integrated server uses FastMCP — it's recorded\nso version-specific failures are traceable, not required to verify.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"fastmcp_version": {
"default": "",
"type": "string"
},
"publisher_id": {
"type": "string"
}
},
"required": [
"publisher_id"
],
"type": "object"
},
"name": "verify_integration",
"outputSchema": {
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:21356d395b40098337000be2a36b7531df2d44ead70fe0c4cadf9f98f378c6ee | sha256sum