Neeed Directory

Search Neeed Directory's software listings, draft one for a maker to claim, and manage your own.

使うべきか

品質と安全性

A
説明の品質
98%
スキーマの完全性
90%
命名の品質
96%
ポイズニングのリスク
100%
権限の一致
90%
プロトコルへの準拠
100%

検出事項(1)

  • LOWTool 'fetch' suggests web access but openWorldHint=falsefetch 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~4,189トークン数(ツール定義)
~4.3 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 3.27%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "listings": {
      "url": "https://neeed.directory/api/mcp"
    }
  }
}

リモートエンドポイント

https://neeed.directory/api/mcpstreamable-http

できること

ツール一覧

ツール(9)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢search(query)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search terms; the first 100 characters are read"
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "id",
          "title",
          "url"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "results"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢fetch(id)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "A product slug from search or list_products"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "text": {
      "type": "string"
    },
    "url": {
      "type": "string",
      "format": "uri"
    },
    "metadata": {
      "type": "object",
      "properties": {
        "website": {
          "type": "string"
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "pricing_model": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "free",
                "freemium",
                "paid",
                "open_source"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "product_type": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "software",
                "digital_product"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "featured": {
          "type": "boolean"
        },
        "listed_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "website",
        "category",
        "pricing_model",
        "product_type",
        "featured",
        "listed_at"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "id",
    "title",
    "text",
    "url",
    "metadata"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_categories

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.

入力スキーマ

{
  "type": "object",
  "properties": {}
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "categories": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "description": "Live listings in the category"
          }
        },
        "required": [
          "slug",
          "name",
          "url",
          "count"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "categories"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_products(q, category, label, tag, page, ...)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "q": {
      "description": "Full-text query over name, tagline and description",
      "type": "string",
      "minLength": 2,
      "maxLength": 100
    },
    "category": {
      "description": "Category slug",
      "type": "string"
    },
    "label": {
      "description": "Label slug",
      "type": "string"
    },
    "tag": {
      "description": "Tag slug",
      "type": "string"
    },
    "page": {
      "default": 1,
      "description": "Page number",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "limit": {
      "default": 20,
      "description": "Products per page",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "products": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ProductCard"
      }
    },
    "total": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Matches across every page"
    },
    "page": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "limit": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "products",
    "total",
    "page",
    "limit"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "$defs": {
    "ProductCard": {
      "type": "object",
      "properties": {
        "slug": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "punchline": {
          "type": "string",
          "description": "The one-line tagline"
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "The listing on Neeed Directory"
        },
        "website": {
          "type": "string",
          "description": "The product's own site"
        },
        "logo": {
          "anyOf": [
            {
              "type": "string",
              "format": "uri"
            },
            {
              "type": "null"
            }
          ]
        },
        "category": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Category slug"
        },
        "pricing_model": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "free",
                "freemium",
                "paid",
                "open_source"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "product_type": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "software",
                "digital_product"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "featured": {
          "type": "boolean"
        },
        "description": {
          "type": "string",
          "description": "A plain-text description"
        }
      },
      "required": [
        "slug",
        "name",
        "punchline",
        "url",
        "website",
        "logo",
        "category",
        "pricing_model",
        "product_type",
        "featured",
        "description"
      ],
      "additionalProperties": false
    }
  }
}
🟡submit_product(website, name, punchline, description, category, ...)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "website": {
      "description": "The product's website, https",
      "type": "string",
      "maxLength": 2048
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "The product's name"
    },
    "punchline": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "One line on what it does"
    },
    "description": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "description": "What it does and for whom, factual, in plain text. The 1000-character limit counts &, < and > as several characters each"
    },
    "category": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "One category slug from list_categories"
    },
    "product_type": {
      "type": "string",
      "enum": [
        "software",
        "digital_product"
      ],
      "description": "software, or digital_product for templates, courses, ebooks and the like"
    },
    "pricing_model": {
      "type": "string",
      "enum": [
        "free",
        "freemium",
        "paid",
        "open_source"
      ],
      "description": "How the maker charges for it"
    },
    "plan": {
      "default": "free",
      "description": "The plan the maker wants; nothing is charged until they submit",
      "type": "string",
      "enum": [
        "free",
        "premium"
      ]
    }
  },
  "required": [
    "website",
    "name",
    "punchline",
    "description",
    "category",
    "product_type",
    "pricing_model"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "draft_created",
        "already_listed",
        "already_submitted",
        "live",
        "in_review"
      ],
      "description": "draft_created: saved for the maker to claim. already_listed: the site is live on Neeed. already_submitted: signed in, this account already has a listing for the site, see listing_status. live: listed under the maker's account. in_review: saved to the maker's account, waiting on a review"
    },
    "claim_url": {
      "description": "The maker opens it, signs in and submits. Works once.",
      "type": "string",
      "format": "uri"
    },
    "slug": {
      "description": "The reserved product slug for a draft",
      "type": "string"
    },
    "expires_at": {
      "description": "When the claim link stops working",
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
    },
    "badge": {
      "description": "Free plan only: the badge for the product's site, linking to its future listing",
      "type": "object",
      "properties": {
        "html": {
          "type": "string"
        },
        "markdown": {
          "type": "string"
        }
      },
      "required": [
        "html",
        "markdown"
      ],
      "additionalProperties": false
    },
    "next_steps": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "url": {
      "description": "The listing: its public page when live or already_listed, its edit page otherwise",
      "type": "string",
      "format": "uri"
    },
    "listing_status": {
      "description": "already_submitted only: where that listing stands",
      "type": "string",
      "enum": [
        "live",
        "in_review",
        "changes_requested",
        "rejected",
        "hidden_badge_missing"
      ]
    },
    "plan": {
      "description": "Signed in only. pending_payment: Premium starts once the maker pays",
      "type": "string",
      "enum": [
        "free",
        "pending_payment"
      ]
    },
    "checkout_url": {
      "description": "Signed in, Premium, live: Stripe Checkout, which the maker opens and pays",
      "type": "string",
      "format": "uri"
    }
  },
  "required": [
    "status"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢my_listings(slug, page)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
      "description": "The listing's slug, from my_listings"
    },
    "page": {
      "description": "The page to read, from 1 (the default), 100 listings each; ignored with a slug",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "listings": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "live",
              "in_review",
              "changes_requested",
              "rejected",
              "hidden_badge_missing"
            ],
            "description": "live: public. in_review: waiting on a review. changes_requested: edit it to send it back. rejected: final. hidden_badge_missing: hidden until the badge is back and verified"
          },
          "plan": {
            "type": "string",
            "enum": [
              "free",
              "premium",
              "pending_payment"
            ],
            "description": "pending_payment: Premium was picked and is not paid yet"
          },
          "review_feedback": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "What the admin asked for or why they rejected it"
          },
          "badge": {
            "type": "object",
            "properties": {
              "state": {
                "type": "string",
                "enum": [
                  "not_needed",
                  "verified",
                  "not_verified",
                  "revoked"
                ],
                "description": "not_needed: Premium. verified: the link is dofollow. revoked: the badge disappeared from the site"
              },
              "grace_ends_at": {
                "description": "Revoked only: when the listing is hidden unless the badge is verified again",
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
              }
            },
            "required": [
              "state"
            ],
            "additionalProperties": false
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "The public page when live, the dashboard when rejected, the edit page otherwise"
          }
        },
        "required": [
          "name",
          "slug",
          "status",
          "plan",
          "review_feedback",
          "badge",
          "url"
        ],
        "additionalProperties": false
      }
    },
    "total": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Your listings across every page, or 1 or 0 with a slug"
    },
    "next_page": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ],
      "description": "The page to ask for next, or null on the last page"
    }
  },
  "required": [
    "listings",
    "total",
    "next_page"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢check_badge(slug)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
      "description": "The listing's slug, from my_listings"
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "result": {
      "type": "string",
      "enum": [
        "found",
        "missing",
        "inconclusive"
      ],
      "description": "inconclusive: the site could not be read, which says nothing either way"
    },
    "verified": {
      "type": "boolean",
      "description": "Whether the listing has the badge on record"
    },
    "badge": {
      "type": "object",
      "properties": {
        "html": {
          "type": "string"
        },
        "markdown": {
          "type": "string"
        }
      },
      "required": [
        "html",
        "markdown"
      ],
      "additionalProperties": false,
      "description": "The badge for the product's site, linking to its listing"
    },
    "next_step": {
      "type": "string"
    }
  },
  "required": [
    "slug",
    "result",
    "verified",
    "badge",
    "next_step"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🔴update_listing(slug, name, punchline, description, category, ...)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
      "description": "The listing's slug, from my_listings"
    },
    "name": {
      "description": "The product's name",
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "punchline": {
      "description": "One line on what it does",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "description": {
      "description": "What it does and for whom, factual, in plain text. The 1,000-character limit counts &, < and > as several characters each",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    },
    "category": {
      "description": "One category slug from list_categories",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "pricing_model": {
      "description": "How the maker charges for it",
      "type": "string",
      "enum": [
        "free",
        "freemium",
        "paid",
        "open_source"
      ]
    },
    "twitter": {
      "description": "The product's Twitter or X handle, like @neeed. Empty clears it",
      "type": "string",
      "maxLength": 50
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "live",
        "in_review",
        "changes_requested",
        "rejected",
        "hidden_badge_missing"
      ],
      "description": "live: public. in_review: waiting on a review. changes_requested: edit it to send it back. rejected: final. hidden_badge_missing: hidden until the badge is back and verified"
    },
    "url": {
      "type": "string",
      "format": "uri"
    },
    "next_step": {
      "type": "string"
    }
  },
  "required": [
    "slug",
    "status",
    "url",
    "next_step"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🔴upgrade_listing(slug)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
      "description": "The listing's slug, from my_listings"
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "checkout_url": {
      "type": "string",
      "format": "uri",
      "description": "Stripe Checkout. The maker opens it and pays in the browser"
    },
    "amount": {
      "type": "object",
      "properties": {
        "cents": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "currency": {
          "type": "string",
          "const": "usd"
        },
        "formatted": {
          "type": "string"
        }
      },
      "required": [
        "cents",
        "currency",
        "formatted"
      ],
      "additionalProperties": false
    },
    "note": {
      "type": "string"
    }
  },
  "required": [
    "slug",
    "checkout_url",
    "amount",
    "note"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 9 件