Find curated AI and MCP tools in the Tulimoa directory; submit yours free with a badge or for $5.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Slug of YOUR listing to edit (from submit_listing).
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.
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.
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.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| mcp | boolean | |
| url | string | |
| name | string | |
| slug* | string | Slug of YOUR listing to edit (from submit_listing). |
| tags | array | |
| ai_usage | string | 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. |
| category | string | |
| gdpr_dpa | boolean | |
| logo_url | string | 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. |
| mcp_auth | array | |
| x_handle | string | |
| data_region | string | 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. |
| launch_hook | string | |
| mcp_docs_url | string | |
| model_source | string | |
| pricing_model | string | |
| certifications | array | |
| mcp_server_url | string | |
| pricing_detail | string | |
| agent_interfaces | array | |
| hosting_provider | string | |
| founder_x_handles | array | |
| short_description | string | |
| trains_on_customer_data | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"mcp": {
"type": "boolean"
},
"url": {
"type": "string",
"format": "uri"
},
"name": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"slug": {
"type": "string",
"minLength": 1,
"description": "Slug of YOUR listing to edit (from submit_listing)."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"maxItems": 8
},
"ai_usage": {
"type": "string",
"maxLength": 600,
"minLength": 40,
"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."
},
"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"
},
"gdpr_dpa": {
"type": "boolean"
},
"logo_url": {
"type": "string",
"format": "uri",
"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."
},
"mcp_auth": {
"type": "array",
"items": {
"enum": [
"oauth",
"api"
],
"type": "string"
},
"maxItems": 2
},
"x_handle": {
"type": "string",
"maxLength": 40
},
"data_region": {
"enum": [
"eu",
"eu-option",
"non-eu",
"self-hosted"
],
"type": "string",
"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."
},
"launch_hook": {
"type": "string",
"maxLength": 140
},
"mcp_docs_url": {
"type": "string",
"format": "uri"
},
"model_source": {
"enum": [
"own",
"open-weight",
"provider",
"mixed",
"none"
],
"type": "string"
},
"pricing_model": {
"enum": [
"free",
"freemium",
"paid",
"lifetime"
],
"type": "string"
},
"certifications": {
"type": "array",
"items": {
"enum": [
"soc2",
"iso27001",
"hipaa"
],
"type": "string"
},
"maxItems": 3
},
"mcp_server_url": {
"type": "string",
"format": "uri"
},
"pricing_detail": {
"type": "string",
"maxLength": 400
},
"agent_interfaces": {
"type": "array",
"items": {
"enum": [
"api",
"cli",
"sdk",
"webhooks"
],
"type": "string"
},
"maxItems": 4
},
"hosting_provider": {
"type": "string",
"maxLength": 60
},
"founder_x_handles": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 4
},
"short_description": {
"type": "string",
"maxLength": 300,
"minLength": 1
},
"trains_on_customer_data": {
"enum": [
"no",
"opt-out",
"yes"
],
"type": "string"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The listing's URL slug, e.g. 'acme-crm'. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "The listing's URL slug, e.g. 'acme-crm'."
}
}
}List the category ids and labels used to classify Tulimoa listings. Call this first when you need a valid `category` value for search_listings.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| mcp | boolean | true = only tools that expose their own MCP server. |
| sort | string | Result order. Default: popular. |
| limit | integer | Max results (1-50, default 20). |
| query | string | Free-text terms matched against the listing name and short description. |
| eu_only | boolean | true = only tools whose company country is in the EU. |
| category | string | Restrict to one category id. Call list_categories for valid ids. |
| pricing_model | string | Restrict to a pricing model. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"mcp": {
"type": "boolean",
"description": "true = only tools that expose their own MCP server."
},
"sort": {
"enum": [
"new",
"popular",
"viewed"
],
"type": "string",
"description": "Result order. Default: popular."
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Max results (1-50, default 20)."
},
"query": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Free-text terms matched against the listing name and short description."
},
"eu_only": {
"type": "boolean",
"description": "true = only tools whose company country is in the EU."
},
"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",
"description": "Restrict to one category id. Call list_categories for valid ids."
},
"pricing_model": {
"enum": [
"free",
"freemium",
"paid",
"lifetime"
],
"type": "string",
"description": "Restrict to a pricing model."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| mcp* | boolean | true = this tool exposes its own MCP server. |
| url* | string | Public homepage URL (https). |
| name* | string | Product/company name (max 60 chars). |
| tags | array | Optional descriptive tags (max 8). |
| country* | string | ISO-3166-1 alpha-2 country code of the company, e.g. DE. |
| ai_usage* | string | 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. |
| category* | string | One category id. Call list_categories for valid ids. |
| gdpr_dpa | boolean | Optional: a GDPR data processing agreement (DPA) is available. |
| logo_url* | string | 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. |
| mcp_auth | array | Only if mcp is true: how agents connect (oauth, api). Empty = no auth. |
| x_handle | string | Optional company X handle, e.g. @acme. |
| visibility* | string | 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. |
| data_region | string | 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. |
| launch_hook | string | Launch package with welcome post: one sentence why the tool matters (max 140 chars, English). |
| mcp_docs_url | string | Only if mcp is true: link to the MCP docs. |
| model_source | string | Optional: which AI models (own, open-weight, provider, mixed, none). |
| pricing_model* | string | Pricing model (required): free | freemium | paid | lifetime. |
| x_post_opt_in | boolean | Launch package only: a free welcome post from @gettulimoa on X after approval. Needs launch_hook and at least one X handle. |
| certifications | array | Optional: soc2, iso27001, hipaa. |
| mcp_server_url | string | Only if mcp is true: endpoint URL of the MCP server. |
| pricing_detail | string | Optional price detail, e.g. 'from $10/month'. |
| agent_interfaces | array | Optional: other ways agents can use it. |
| hosting_provider | string | Optional hosting provider and location, e.g. 'Hetzner, Falkenstein'. |
| founder_x_handles | array | Optional founder X handles (max 4). |
| short_description* | string | One-line pitch (max 300 chars). |
| withdrawal_consent | boolean | 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. |
| trains_on_customer_data | string | Optional: trains on customer data (no, opt-out, yes). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name",
"url",
"short_description",
"country",
"category",
"mcp",
"pricing_model",
"logo_url",
"ai_usage",
"visibility"
],
"properties": {
"mcp": {
"type": "boolean",
"description": "true = this tool exposes its own MCP server."
},
"url": {
"type": "string",
"format": "uri",
"description": "Public homepage URL (https)."
},
"name": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "Product/company name (max 60 chars)."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"maxItems": 8,
"description": "Optional descriptive tags (max 8)."
},
"country": {
"type": "string",
"pattern": "^[A-Z]{2}$",
"description": "ISO-3166-1 alpha-2 country code of the company, e.g. DE."
},
"ai_usage": {
"type": "string",
"maxLength": 600,
"minLength": 40,
"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."
},
"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",
"description": "One category id. Call list_categories for valid ids."
},
"gdpr_dpa": {
"type": "boolean",
"description": "Optional: a GDPR data processing agreement (DPA) is available."
},
"logo_url": {
"type": "string",
"format": "uri",
"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."
},
"mcp_auth": {
"type": "array",
"items": {
"enum": [
"oauth",
"api"
],
"type": "string"
},
"maxItems": 2,
"description": "Only if mcp is true: how agents connect (oauth, api). Empty = no auth."
},
"x_handle": {
"type": "string",
"maxLength": 40,
"description": "Optional company X handle, e.g. @acme."
},
"visibility": {
"enum": [
"badge",
"launch"
],
"type": "string",
"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."
},
"data_region": {
"enum": [
"eu",
"eu-option",
"non-eu",
"self-hosted"
],
"type": "string",
"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."
},
"launch_hook": {
"type": "string",
"maxLength": 140,
"description": "Launch package with welcome post: one sentence why the tool matters (max 140 chars, English)."
},
"mcp_docs_url": {
"type": "string",
"format": "uri",
"description": "Only if mcp is true: link to the MCP docs."
},
"model_source": {
"enum": [
"own",
"open-weight",
"provider",
"mixed",
"none"
],
"type": "string",
"description": "Optional: which AI models (own, open-weight, provider, mixed, none)."
},
"pricing_model": {
"enum": [
"free",
"freemium",
"paid",
"lifetime"
],
"type": "string",
"description": "Pricing model (required): free | freemium | paid | lifetime."
},
"x_post_opt_in": {
"type": "boolean",
"description": "Launch package only: a free welcome post from @gettulimoa on X after approval. Needs launch_hook and at least one X handle."
},
"certifications": {
"type": "array",
"items": {
"enum": [
"soc2",
"iso27001",
"hipaa"
],
"type": "string"
},
"maxItems": 3,
"description": "Optional: soc2, iso27001, hipaa."
},
"mcp_server_url": {
"type": "string",
"format": "uri",
"description": "Only if mcp is true: endpoint URL of the MCP server."
},
"pricing_detail": {
"type": "string",
"maxLength": 400,
"description": "Optional price detail, e.g. 'from $10/month'."
},
"agent_interfaces": {
"type": "array",
"items": {
"enum": [
"api",
"cli",
"sdk",
"webhooks"
],
"type": "string"
},
"maxItems": 4,
"description": "Optional: other ways agents can use it."
},
"hosting_provider": {
"type": "string",
"maxLength": 60,
"description": "Optional hosting provider and location, e.g. 'Hetzner, Falkenstein'."
},
"founder_x_handles": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 4,
"description": "Optional founder X handles (max 4)."
},
"short_description": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "One-line pitch (max 300 chars)."
},
"withdrawal_consent": {
"type": "boolean",
"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."
},
"trains_on_customer_data": {
"enum": [
"no",
"opt-out",
"yes"
],
"type": "string",
"description": "Optional: trains on customer data (no, opt-out, yes)."
}
}
}