Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,561Letters: 14Defects: 1,336counted 1 min ago
teppi

Server definition

Hash
sha256:b9fecfc3117ee40fc538f05dfb60fed57858e3781cbc4c7ed6e55101cfde8c5e
What it is
What a remote MCP server returned when asked what it offers: 5 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "Update fields of a listing you own (by slug). You cannot change ownership or set review status. Any edit sends the listing back to admin review (status: pending) and it reappears publicly only after re-approval. Every listing needs a logo: pass logo_url to replace it (required if the listing has none yet). Requires a write-scoped Tulimoa login.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "agent_interfaces": { "items": { "enum": [ "api", "cli", "sdk", "webhooks" ], "type": "string" }, "maxItems": 4, "type": "array" }, "ai_usage": { "description": "40 to 600 characters, ideally in English: how the software uses AI, or what agents can do with it. Be concrete, not salesy. Submissions without a clear AI or agent angle are rejected.", "maxLength": 600, "minLength": 40, "type": "string" }, "category": { "enum": [ "developer-tools", "ai-infra", "sales-crm", "marketing", "productivity", "data-analytics", "finance-accounting", "customer-support", "hr-recruiting", "design-creative", "security-privacy", "communication", "commerce-payments", "automation-nocode", "other" ], "type": "string" }, "certifications": { "items": { "enum": [ "soc2", "iso27001", "hipaa" ], "type": "string" }, "maxItems": 3, "type": "array" }, "data_region": { "description": "Where customer data is hosted: eu (in the EU by default), eu-option (an EU region can be selected), non-eu, self-hosted (runs at the customer). Listings with EU hosting also appear on tulimoa.com/mcp-eu.", "enum": [ "eu", "eu-option", "non-eu", "self-hosted" ], "type": "string" }, "founder_x_handles": { "items": { "maxLength": 40, "type": "string" }, "maxItems": 4, "type": "array" }, "gdpr_dpa": { "type": "boolean" }, "hosting_provider": { "maxLength": 60, "type": "string" }, "launch_hook": { "maxLength": 140, "type": "string" }, "logo_url": { "description": "New logo. Public https URL of the company logo: PNG, JPEG, WebP, GIF or AVIF, at least 64 px, max 5 MB. A square icon works best. Tulimoa downloads it, scales it to max 512 px and stores it as WebP. Required if the listing has no logo yet.", "format": "uri", "type": "string" }, "mcp": { "type": "boolean" }, "mcp_auth": { "items": { "enum": [ "oauth", "api" ], "type": "string" }, "maxItems": 2, "type": "array" }, "mcp_docs_url": { "format": "uri", "type": "string" }, "mcp_server_url": { "format": "uri", "type": "string" }, "model_source": { "enum": [ "own", "open-weight", "provider", "mixed", "none" ], "type": "string" }, "name": { "maxLength": 60, "minLength": 1, "type": "string" }, "pricing_detail": { "maxLength": 400, "type": "string" }, "pricing_model": { "enum": [ "free", "freemium", "paid", "lifetime" ], "type": "string" }, "short_description": { "maxLength": 300, "minLength": 1, "type": "string" }, "slug": { "description": "Slug of YOUR listing to edit (from submit_listing).", "minLength": 1, "type": "string" }, "tags": { "items": { "maxLength": 40, "minLength": 1, "type": "string" }, "maxItems": 8, "type": "array" }, "trains_on_customer_data": { "enum": [ "no", "opt-out", "yes" ], "type": "string" }, "url": { "format": "uri", "type": "string" }, "x_handle": { "maxLength": 40, "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "edit_listing", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "id": { "description": "Listing id.", "type": "string" }, "slug": { "type": "string" }, "status": { "const": "pending", "type": "string" } }, "required": [ "id", "slug", "status" ], "type": "object" } }, { "description": "Fetch full detail of a single Tulimoa listing by its slug: long description, how it uses AI (ai_usage), features, use cases, integrations, pricing detail, data region and EU hosting, model source, certifications, and links. Use after search_listings when the user wants depth on a specific tool.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "slug": { "description": "The listing's URL slug, e.g. 'acme-crm'.", "maxLength": 120, "minLength": 1, "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_listing", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "listing": { "additionalProperties": {}, "description": "Full listing row (detail projection, see DETAIL_SELECT).", "properties": { "name": { "type": "string" }, "slug": { "type": "string" } }, "required": [ "slug", "name" ], "type": "object" } }, "required": [ "listing" ], "type": "object" } }, { "description": "List the category ids and labels used to classify Tulimoa listings. Call this first when you need a valid `category` value for search_listings.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {}, "type": "object" }, "name": "list_categories", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "categories": { "items": { "additionalProperties": false, "properties": { "id": { "type": "string" }, "label": { "type": "string" }, "labelDe": { "type": "string" } }, "required": [ "id", "label", "labelDe" ], "type": "object" }, "type": "array" } }, "required": [ "categories" ], "type": "object" } }, { "description": "Find SaaS tools in the Tulimoa directory that an AI agent or team can plug into. Discover tools by topic, category, pricing, MCP support, or EU hosting. Returns only approved, published listings. Use this for any 'find/recommend a tool for X' request, then call get_listing for full detail on a specific result.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "category": { "description": "Restrict to one category id. Call list_categories for valid ids.", "enum": [ "developer-tools", "ai-infra", "sales-crm", "marketing", "productivity", "data-analytics", "finance-accounting", "customer-support", "hr-recruiting", "design-creative", "security-privacy", "communication", "commerce-payments", "automation-nocode", "other" ], "type": "string" }, "eu_only": { "description": "true = only tools whose company country is in the EU.", "type": "boolean" }, "limit": { "description": "Max results (1-50, default 20).", "maximum": 50, "minimum": 1, "type": "integer" }, "mcp": { "description": "true = only tools that expose their own MCP server.", "type": "boolean" }, "pricing_model": { "description": "Restrict to a pricing model.", "enum": [ "free", "freemium", "paid", "lifetime" ], "type": "string" }, "query": { "description": "Free-text terms matched against the listing name and short description.", "maxLength": 100, "minLength": 1, "type": "string" }, "sort": { "description": "Result order. Default: popular.", "enum": [ "new", "popular", "viewed" ], "type": "string" } }, "type": "object" }, "name": "search_listings", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "count": { "description": "Number of results returned.", "maximum": 9007199254740991, "minimum": -9007199254740991, "type": "integer" }, "results": { "description": "Lean listing rows; call get_listing(slug) for full detail.", "items": { "additionalProperties": {}, "properties": { "category": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "country": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "mcp": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ] }, "name": { "type": "string" }, "pricing_model": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "short_description": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "slug": { "type": "string" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "slug", "name" ], "type": "object" }, "type": "array" } }, "required": [ "count", "results" ], "type": "object" } }, { "description": "Create a new listing in the Tulimoa directory (AI and MCP software with its own website) on behalf of the authenticated user. It starts as 'pending' and is reviewed by hand. Required: logo_url (a public image URL, e.g. the company's square icon) and ai_usage (how the software uses AI or what agents can do with it). Choose how it goes live with `visibility`: 'badge' (free, Tulimoa badge on the website, reviewed within 7 days) or 'launch' ($5 one-time, no badge, reviewed first, refunded if rejected). For 'launch' ask the user for consent and pass withdrawal_consent: true; the result has a checkout_url the user opens to pay. For 'badge' the result has the badge HTML to embed. A website that is already listed cannot be submitted again. Use list_categories first to pick a valid category id. Requires a write-scoped Tulimoa login.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "agent_interfaces": { "description": "Optional: other ways agents can use it.", "items": { "enum": [ "api", "cli", "sdk", "webhooks" ], "type": "string" }, "maxItems": 4, "type": "array" }, "ai_usage": { "description": "Required, 40 to 600 characters, ideally in English: how the software uses AI, or what agents can do with it. Be concrete, not salesy. Submissions without a clear AI or agent angle are rejected.", "maxLength": 600, "minLength": 40, "type": "string" }, "category": { "description": "One category id. Call list_categories for valid ids.", "enum": [ "developer-tools", "ai-infra", "sales-crm", "marketing", "productivity", "data-analytics", "finance-accounting", "customer-support", "hr-recruiting", "design-creative", "security-privacy", "communication", "commerce-payments", "automation-nocode", "other" ], "type": "string" }, "certifications": { "description": "Optional: soc2, iso27001, hipaa.", "items": { "enum": [ "soc2", "iso27001", "hipaa" ], "type": "string" }, "maxItems": 3, "type": "array" }, "country": { "description": "ISO-3166-1 alpha-2 country code of the company, e.g. DE.", "pattern": "^[A-Z]{2}$", "type": "string" }, "data_region": { "description": "Optional. Where customer data is hosted: eu (in the EU by default), eu-option (an EU region can be selected), non-eu, self-hosted (runs at the customer). Listings with EU hosting also appear on tulimoa.com/mcp-eu.", "enum": [ "eu", "eu-option", "non-eu", "self-hosted" ], "type": "string" }, "founder_x_handles": { "description": "Optional founder X handles (max 4).", "items": { "maxLength": 40, "type": "string" }, "maxItems": 4, "type": "array" }, "gdpr_dpa": { "description": "Optional: a GDPR data processing agreement (DPA) is available.", "type": "boolean" }, "hosting_provider": { "description": "Optional hosting provider and location, e.g. 'Hetzner, Falkenstein'.", "maxLength": 60, "type": "string" }, "launch_hook": { "description": "Launch package with welcome post: one sentence why the tool matters (max 140 chars, English).", "maxLength": 140, "type": "string" }, "logo_url": { "description": "Required. Public https URL of the company logo: PNG, JPEG, WebP, GIF or AVIF, at least 64 px, max 5 MB. A square icon works best. Tulimoa downloads it, scales it to max 512 px and stores it as WebP.", "format": "uri", "type": "string" }, "mcp": { "description": "true = this tool exposes its own MCP server.", "type": "boolean" }, "mcp_auth": { "description": "Only if mcp is true: how agents connect (oauth, api). Empty = no auth.", "items": { "enum": [ "oauth", "api" ], "type": "string" }, "maxItems": 2, "type": "array" }, "mcp_docs_url": { "description": "Only if mcp is true: link to the MCP docs.", "format": "uri", "type": "string" }, "mcp_server_url": { "description": "Only if mcp is true: endpoint URL of the MCP server.", "format": "uri", "type": "string" }, "model_source": { "description": "Optional: which AI models (own, open-weight, provider, mixed, none).", "enum": [ "own", "open-weight", "provider", "mixed", "none" ], "type": "string" }, "name": { "description": "Product/company name (max 60 chars).", "maxLength": 60, "minLength": 1, "type": "string" }, "pricing_detail": { "description": "Optional price detail, e.g. 'from $10/month'.", "maxLength": 400, "type": "string" }, "pricing_model": { "description": "Pricing model (required): free | freemium | paid | lifetime.", "enum": [ "free", "freemium", "paid", "lifetime" ], "type": "string" }, "short_description": { "description": "One-line pitch (max 300 chars).", "maxLength": 300, "minLength": 1, "type": "string" }, "tags": { "description": "Optional descriptive tags (max 8).", "items": { "maxLength": 40, "minLength": 1, "type": "string" }, "maxItems": 8, "type": "array" }, "trains_on_customer_data": { "description": "Optional: trains on customer data (no, opt-out, yes).", "enum": [ "no", "opt-out", "yes" ], "type": "string" }, "url": { "description": "Public homepage URL (https).", "format": "uri", "type": "string" }, "visibility": { "description": "How the listing goes live (required). 'badge' = free: embed the Tulimoa badge on the product website, reviewed within 7 days; if the badge is missing for 14 days the listing goes offline again. 'launch' = $5 one-time launch package: no badge needed, reviewed first, optional welcome post from @gettulimoa on X, refunded automatically if rejected. Ask the user which one they want.", "enum": [ "badge", "launch" ], "type": "string" }, "withdrawal_consent": { "description": "Required (true) for visibility 'launch'. Only set it after the user agrees: Tulimoa starts the review right away, the right of withdrawal ends once the listing is live, and a rejected listing gets the $5 back automatically.", "type": "boolean" }, "x_handle": { "description": "Optional company X handle, e.g. @acme.", "maxLength": 40, "type": "string" }, "x_post_opt_in": { "description": "Launch package only: a free welcome post from @gettulimoa on X after approval. Needs launch_hook and at least one X handle.", "type": "boolean" } }, "required": [ "name", "url", "short_description", "country", "category", "mcp", "pricing_model", "logo_url", "ai_usage", "visibility" ], "type": "object" }, "name": "submit_listing", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "badge_html": { "additionalProperties": false, "description": "Badge only: HTML for dark backgrounds (light) or light backgrounds (dark).", "properties": { "dark": { "type": "string" }, "light": { "type": "string" } }, "required": [ "light", "dark" ], "type": "object" }, "checkout_url": { "description": "Launch package only: opens the Polar checkout (Tulimoa login needed).", "type": "string" }, "id": { "description": "Listing id.", "type": "string" }, "manage_url": { "description": "Dashboard page for status, badge check and payment.", "type": "string" }, "next_step": { "description": "What the user has to do now.", "type": "string" }, "slug": { "description": "Final slug (may carry a conflict suffix).", "type": "string" }, "status": { "const": "pending", "type": "string" }, "visibility": { "enum": [ "badge", "launch" ], "type": "string" } }, "required": [ "id", "slug", "status", "visibility", "next_step", "manage_url" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:b9fecfc3117ee40fc538f05dfb60fed57858e3781cbc4c7ed6e55101cfde8c5e | sha256sum