Search Neeed Directory's software listings, draft one for a maker to claim, and manage your own.
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.
Looks for the Neeed badge on one of your Free listings' sites now and answers found, missing or inconclusive, with the markup to add. It records nothing: the maker presses Verify on the listing's edit page to make the link dofollow or bring a hidden listing back.
The listing's slug, from my_listings
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http listings https://neeed.directory/api/mcp
Looks for the Neeed badge on one of your Free listings' sites now and answers found, missing or inconclusive, with the markup to add. It records nothing: the maker presses Verify on the listing's edit page to make the link dofollow or bring a hidden listing back.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The listing's slug, from my_listings |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
"maxLength": 200,
"minLength": 1,
"description": "The listing's slug, from my_listings"
}
}
}One approved product on Neeed Directory by id, the slug from search or list_products. Returns its title, plain-text card, url and metadata including its website, category and pricing model.
| Argument | Type | Description |
|---|---|---|
| id* | string | A product slug from search or list_products |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A product slug from search or list_products"
}
}
}Every category on Neeed Directory with its slug, name, approved product count and url. Pass a category slug to list_products to read its product cards.
No arguments.
{
"type": "object",
"properties": {}
}Approved product cards on Neeed Directory, newest first, with optional query, category, label and tag filters. Returns at most 50 cards per page with a total count. Each slug is an id that fetch accepts.
| Argument | Type | Description |
|---|---|---|
| q | string | Full-text query over name, tagline and description |
| tag | string | Tag slug |
| page | integer | Page number |
| label | string | Label slug |
| limit | integer | Products per page |
| category | string | Category slug |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "Full-text query over name, tagline and description"
},
"tag": {
"type": "string",
"description": "Tag slug"
},
"page": {
"type": "integer",
"default": 1,
"maximum": 500,
"minimum": 1,
"description": "Page number"
},
"label": {
"type": "string",
"description": "Label slug"
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Products per page"
},
"category": {
"type": "string",
"description": "Category slug"
}
}
}Your listings on Neeed Directory, newest first: status, plan, badge, the admin's feedback when there is any, and the page to open. Pass a slug to get one. When next_page is a number, call again with that page for older listings.
| Argument | Type | Description |
|---|---|---|
| page | integer | The page to read, from 1 (the default), 100 listings each; ignored with a slug |
| slug | string | The listing's slug, from my_listings |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "The page to read, from 1 (the default), 100 listings each; ignored with a slug"
},
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
"maxLength": 200,
"minLength": 1,
"description": "The listing's slug, from my_listings"
}
}
}Search approved products on Neeed Directory, newest first. Returns at most 20 results with id, title and url. The id is the product slug; pass it to fetch for a plain-text card. Queries shorter than two characters return no results.
| Argument | Type | Description |
|---|---|---|
| query* | string | Search terms; the first 100 characters are read |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Search terms; the first 100 characters are read"
}
}
}Without sign-in, saves a private draft listing on Neeed Directory and returns a claim link: nothing is published or charged until the maker opens it, signs in and submits. Signed in with permission to edit listings, submits the listing to the maker's account: Neeed's automatic check publishes it or holds it for review, and Premium returns a Stripe Checkout link the maker pays in the browser.
| Argument | Type | Description |
|---|---|---|
| name* | string | The product's name |
| plan | string | The plan the maker wants; nothing is charged until they submit |
| website* | string | The product's website, https |
| category* | string | One category slug from list_categories |
| punchline* | string | One line on what it does |
| description* | string | What it does and for whom, factual, in plain text. The 1000-character limit counts &, < and > as several characters each |
| product_type* | string | software, or digital_product for templates, courses, ebooks and the like |
| pricing_model |
Edits one of your listings: name, punchline, description, category, pricing model or Twitter handle, under the dashboard's rules. Editing a listing that is not live sends it back for review; a live listing stays live. A rejected listing cannot be edited.
| Argument | Type | Description |
|---|---|---|
| name | string | The product's name |
| slug* | string | The listing's slug, from my_listings |
| string | The product's Twitter or X handle, like @neeed. Empty clears it | |
| category | string | One category slug from list_categories |
| punchline | string | One line on what it does |
| description | string | What it does and for whom, factual, in plain text. The 1,000-character limit counts &, < and > as several characters each |
| pricing_model | string | How the maker charges for it |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "The product's name"
},
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
"maxLength": 200,
"minLength": 1,
"description": "The listing's slug, from my_listings"
},
"twitter": {
"type": "string",
"maxLength": 50,
"description": "The product's Twitter or X handle, like @neeed. Empty clears it"
},
"category": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "One category slug from list_categories"
},
"punchline": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "One line on what it does"
},
"description": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "What it does and for whom, factual, in plain text. The 1,000-character limit counts &, < and > as several characters each"
},
"pricing_model": {
"enum": [
"free",
"freemium",
"paid",
"open_source"
],
"type": "string",
"description": "How the maker charges for it"
}
}
}Returns a Stripe Checkout link that upgrades one of your live Free listings to Premium, with the price. Nothing is charged until the maker opens the link and pays in the browser.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The listing's slug, from my_listings |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
"maxLength": 200,
"minLength": 1,
"description": "The listing's slug, from my_listings"
}
}
}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 Oct 31, 2026.
| string |
| How the maker charges for it |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"website",
"name",
"punchline",
"description",
"category",
"product_type",
"pricing_model"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "The product's name"
},
"plan": {
"enum": [
"free",
"premium"
],
"type": "string",
"default": "free",
"description": "The plan the maker wants; nothing is charged until they submit"
},
"website": {
"type": "string",
"maxLength": 2048,
"description": "The product's website, https"
},
"category": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "One category slug from list_categories"
},
"punchline": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "One line on what it does"
},
"description": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "What it does and for whom, factual, in plain text. The 1000-character limit counts &, < and > as several characters each"
},
"product_type": {
"enum": [
"software",
"digital_product"
],
"type": "string",
"description": "software, or digital_product for templates, courses, ebooks and the like"
},
"pricing_model": {
"enum": [
"free",
"freemium",
"paid",
"open_source"
],
"type": "string",
"description": "How the maker charges for it"
}
}
}