List your AI tool on infobro.ai: sign up by email code, submit or claim a listing, pay and track it.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. Bearer key returned by verify_signup; without it the assistant can sign up first or pass api_key per call.
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.
Returns a payment page for an order (card or crypto, depending on what is enabled). The owner pays there; an assistant that can pay may pay itself.
From submit_tool or my_tools.
Payment method id; leave empty for the default.
Your infobro API key, if it is not set as the Authorization header of this connection.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http directory https://infobro.ai/mcp
Headers
Authorization (optional, not in the config above): Optional. Bearer key returned by verify_signup; without it the assistant can sign up first or pass api_key per call.Returns a payment page for an order (card or crypto, depending on what is enabled). The owner pays there; an assistant that can pay may pay itself.
| Argument | Type | Description |
|---|---|---|
| method | string | Payment method id; leave empty for the default. |
| api_key | string | Your infobro API key, if it is not set as the Authorization header of this connection. |
| order_id* | string | From submit_tool or my_tools. |
{
"type": "object",
"required": [
"order_id"
],
"properties": {
"method": {
"type": "string",
"description": "Payment method id; leave empty for the default."
},
"api_key": {
"type": "string",
"description": "Your infobro API key, if it is not set as the Authorization header of this connection."
},
"order_id": {
"type": "string",
"description": "From submit_tool or my_tools."
}
},
"additionalProperties": false
}Is this product already in the infobro directory? Search by website address or name.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Your infobro API key, if it is not set as the Authorization header of this connection. |
| url_or_name* | string | Website address (best) or product name. |
{
"type": "object",
"required": [
"url_or_name"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your infobro API key, if it is not set as the Authorization header of this connection."
},
"url_or_name": {
"type": "string",
"description": "Website address (best) or product name."
}
},
"additionalProperties": false
}Category slugs to use in submit_tool.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Your infobro API key, if it is not set as the Authorization header of this connection. |
{
"type": "object",
"required": [],
"properties": {
"api_key": {
"type": "string",
"description": "Your infobro API key, if it is not set as the Authorization header of this connection."
}
},
"additionalProperties": false
}Listing plans with prices and what each includes. A new listing needs one of them.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Your infobro API key, if it is not set as the Authorization header of this connection. |
{
"type": "object",
"required": [],
"properties": {
"api_key": {
"type": "string",
"description": "Your infobro API key, if it is not set as the Authorization header of this connection."
}
},
"additionalProperties": false
}A one-time link (15 minutes) that signs the owner into their infobro dashboard in the browser.
| Argument | Type | Description |
|---|---|---|
| page | string | Optional page, e.g. /dashboard or /checkout/<order_id>. |
| api_key | string | Your infobro API key, if it is not set as the Authorization header of this connection. |
{
"type": "object",
"required": [],
"properties": {
"page": {
"type": "string",
"description": "Optional page, e.g. /dashboard or /checkout/<order_id>."
},
"api_key": {
"type": "string",
"description": "Your infobro API key, if it is not set as the Authorization header of this connection."
}
},
"additionalProperties": false
}The account’s listings: review status, editor notes, plan, unpaid orders, views and clicks.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Your infobro API key, if it is not set as the Authorization header of this connection. |
{
"type": "object",
"required": [],
"properties": {
"api_key": {
"type": "string",
"description": "Your infobro API key, if it is not set as the Authorization header of this connection."
}
},
"additionalProperties": false
}Whether an order is paid.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Your infobro API key, if it is not set as the Authorization header of this connection. |
| order_id* | string | Order id. |
{
"type": "object",
"required": [
"order_id"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your infobro API key, if it is not set as the Authorization header of this connection."
},
"order_id": {
"type": "string",
"description": "Order id."
}
},
"additionalProperties": false
}Reads the product’s website and returns a draft (name, tagline, description, images) to improve and pass to submit_tool.
| Argument | Type | Description |
|---|---|---|
| url* | string | The product’s website. |
| api_key | string | Your infobro API key, if it is not set as the Authorization header of this connection. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The product’s website."
},
"api_key": {
"type": "string",
"description": "Your infobro API key, if it is not set as the Authorization header of this connection."
}
},
"additionalProperties": false
}Free. Gives a meta tag or a DNS TXT record that proves the website is the owner’s. Add it, then call verify_claim.
| Argument | Type | Description |
|---|---|---|
| tool* | string | Listing slug from find_tool. |
| api_key | string | Your infobro API key, if it is not set as the Authorization header of this connection. |
{
"type": "object",
"required": [
"tool"
],
"properties": {
"tool": {
"type": "string",
"description": "Listing slug from find_tool."
},
"api_key": {
"type": "string",
"description": "Your infobro API key, if it is not set as the Authorization header of this connection."
}
},
"additionalProperties": false
}Step 1 for a new assistant. Emails a 6-digit code to the product owner. Works for new and existing accounts. Then call verify_signup.
| Argument | Type | Description |
|---|---|---|
| name | string | The owner’s name, for a new account. |
| email* | string | The owner’s real email address. |
{
"type": "object",
"required": [
"email"
],
"properties": {
"name": {
"type": "string",
"description": "The owner’s name, for a new account."
},
"email": {
"type": "string",
"description": "The owner’s real email address."
}
},
"additionalProperties": false
}Creates the listing as an unpaid draft and an order for the chosen plan. It goes to editor review once paid (create_payment). Write plain facts; no hype words, no claims you can’t back.
| Argument | Type | Description |
|---|---|---|
| url* | string | Website. |
| name* | string | Product name, 2-60 characters. |
| plan* | string | Plan from list_plans. |
| api_key | string | Your infobro API key, if it is not set as the Authorization header of this connection. |
| has_api | boolean | |
| tagline* | string | What it does, 10-80 characters. |
| features | array | Up to 10 short features. |
| logo_url | string | https link to a square logo. |
| platforms | array | web, ios, android, macos, windows, linux, chrome-extension, api, slack, vscode, self-hosted |
| description* | string | 120-4000 characters, markdown allowed: what it does, for whom, key features, pricing. |
| pricing_url | string | Pricing page. |
| pricing_model* | string | FREE, FREEMIUM, FREE_TRIAL, PAID or CONTACT. |
| has_free_trial | boolean | |
| is_open_source | boolean | |
| screenshot_url | string | https link to a screenshot. |
| starting_price | number | Cheapest paid plan, USD per month. |
| extra_categories | array | More category slugs (Listing: 2 in total, Pro: 5). |
| primary_category* | string | Category slug from list_categories. |
{
"type": "object",
"required": [
"url",
"name",
"tagline",
"description",
"primary_category",
"pricing_model",
"plan"
],
"properties": {
"url": {
"type": "string",
"description": "Website."
},
"name": {
"type": "string",
"description": "Product name, 2-60 characters."
},
"plan": {
"enum": [
"LISTING_YEAR",
"LISTING_LIFE",
"PRO_YEAR",
"PRO_LIFE"
],
"type": "string",
"description": "Plan from list_plans."
},
"api_key": {
"type": "string",
"description": "Your infobro API key, if it is not set as the Authorization header of this connection."
},
"has_api": {
"type": "boolean"
},
"tagline": {
"type": "string",
"description": "What it does, 10-80 characters."
},
"features": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 10 short features."
},
"logo_url": {
"type": "string",
"description": "https link to a square logo."
},
"platforms": {
"type": "array",
"items": {
"type": "string"
},
"description": "web, ios, android, macos, windows, linux, chrome-extension, api, slack, vscode, self-hosted"
},
"description": {
"type": "string",
"description": "120-4000 characters, markdown allowed: what it does, for whom, key features, pricing."
},
"pricing_url": {
"type": "string",
"description": "Pricing page."
},
"pricing_model": {
"enum": [
"FREE",
"FREEMIUM",
"FREE_TRIAL",
"PAID",
"CONTACT"
],
"type": "string",
"description": "FREE, FREEMIUM, FREE_TRIAL, PAID or CONTACT."
},
"has_free_trial": {
"type": "boolean"
},
"is_open_source": {
"type": "boolean"
},
"screenshot_url": {
"type": "string",
"description": "https link to a screenshot."
},
"starting_price": {
"type": "number",
"description": "Cheapest paid plan, USD per month."
},
"extra_categories": {
"type": "array",
"items": {
"type": "string"
},
"description": "More category slugs (Listing: 2 in total, Pro: 5)."
},
"primary_category": {
"type": "string",
"description": "Category slug from list_categories."
}
},
"additionalProperties": false
}Changes fields of one of the account’s listings. Only the fields you pass change. Live listings change after an editor’s check.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| tool* | string | Listing slug from my_tools. |
| api_key | string | Your infobro API key, if it is not set as the Authorization header of this connection. |
| cta_url | string | Pro: second button link. |
| gallery | array | Up to 8 image links. |
| has_api | boolean | |
| socials | object | |
| tagline | string | 10-80 characters. |
| features | array | |
| logo_url | string | |
| cta_label | string | Pro: second button label, up to 24 characters. |
| platforms | array | |
| video_url | string | YouTube link. |
| description | string | 120+ characters. |
| pricing_url | string | |
| website_url | string | |
| pricing_model | string | |
| has_free_trial | boolean | |
| is_open_source | boolean | |
| report_mistake | string | For a listing without a plan: describe a mistake in the text for the editor. |
| screenshot_url | string | |
| starting_price | number | |
| extra_categories | array |
{
"type": "object",
"required": [
"tool"
],
"properties": {
"name": {
"type": "string",
"description": ""
},
"tool": {
"type": "string",
"description": "Listing slug from my_tools."
},
"api_key": {
"type": "string",
"description": "Your infobro API key, if it is not set as the Authorization header of this connection."
},
"cta_url": {
"type": "string",
"description": "Pro: second button link."
},
"gallery": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 8 image links."
},
"has_api": {
"type": "boolean"
},
"socials": {
"type": "object",
"properties": {
"x": {
"type": "string",
"description": ""
},
"github": {
"type": "string",
"description": ""
},
"discord": {
"type": "string",
"description": ""
},
"youtube": {
"type": "string",
"description": ""
},
"linkedin": {
"type": "string",
"description": ""
}
},
"additionalProperties": false
},
"tagline": {
"type": "string",
"description": "10-80 characters."
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"logo_url": {
"type": "string",
"description": ""
},
"cta_label": {
"type": "string",
"description": "Pro: second button label, up to 24 characters."
},
"platforms": {
"type": "array",
"items": {
"type": "string"
}
},
"video_url": {
"type": "string",
"description": "YouTube link."
},
"description": {
"type": "string",
"description": "120+ characters."
},
"pricing_url": {
"type": "string",
"description": ""
},
"website_url": {
"type": "string",
"description": ""
},
"pricing_model": {
"enum": [
"FREE",
"FREEMIUM",
"FREE_TRIAL",
"PAID",
"CONTACT",
"UNKNOWN"
],
"type": "string",
"description": ""
},
"has_free_trial": {
"type": "boolean"
},
"is_open_source": {
"type": "boolean"
},
"report_mistake": {
"type": "string",
"description": "For a listing without a plan: describe a mistake in the text for the editor."
},
"screenshot_url": {
"type": "string",
"description": ""
},
"starting_price": {
"type": "number"
},
"extra_categories": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}Looks for the meta tag or DNS record and, if found, moves the listing to the account.
| Argument | Type | Description |
|---|---|---|
| tool* | string | Listing slug. |
| api_key | string | Your infobro API key, if it is not set as the Authorization header of this connection. |
{
"type": "object",
"required": [
"tool"
],
"properties": {
"tool": {
"type": "string",
"description": "Listing slug."
},
"api_key": {
"type": "string",
"description": "Your infobro API key, if it is not set as the Authorization header of this connection."
}
},
"additionalProperties": false
}Step 2. Checks the code from the email and returns an API key that acts for the account.
| Argument | Type | Description |
|---|---|---|
| code* | string | The 6-digit code from the email. |
| email* | string | Same email as in start_signup. |
{
"type": "object",
"required": [
"email",
"code"
],
"properties": {
"code": {
"type": "string",
"description": "The 6-digit code from the email."
},
"email": {
"type": "string",
"description": "Same email as in start_signup."
}
},
"additionalProperties": false
}Which account the key belongs to.
| Argument | Type | Description |
|---|---|---|
| api_key | string | Your infobro API key, if it is not set as the Authorization header of this connection. |
{
"type": "object",
"required": [],
"properties": {
"api_key": {
"type": "string",
"description": "Your infobro API key, if it is not set as the Authorization header of this connection."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 4, 2026.
Takes a password, API key or token as an argument, so the secret passes through the model's context and chat logs.
Fix: Read credentials from the server's own configuration (environment, OAuth) instead of a tool argument.