CurlShip
Read and submit the CurlShip directory. Paid actions return checkout_url.
사용해야 할까요
품질 및 안전성
발견 사항 (4)
- HIGH
- MEDIUMsubmit_listing에서
- MEDIUMsubmit_listing에서
- INFOsubmit_listing에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"directory": {
"url": "https://curlship.com/mcp"
}
}
}원격 엔드포인트
https://curlship.com/mcpstreamable-http할 수 있는 일
도구 목록
도구 (13)
⚪bid_featured(url, amount_usd)
Take the Featured spot. It sits above every listing. The minimum right now is $51. Always dofollow. One-time payment, no refund when someone outbids you. The product must already be listed. Omit amount_usd to bid $51.
입력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "URL of a listing that is already on the directory."
},
"amount_usd": {
"type": "number",
"description": "Bid in USD. Omit to bid the minimum (51)."
}
},
"required": [
"url"
]
}🟢read_featured
Who holds the Featured spot, and the current minimum bid.
입력 스키마
{
"type": "object",
"properties": {}
}🟡submit_listing(url, email, tier)
List a product. It goes live immediately. One listing per root domain. https://yourapp.com is the documentation placeholder and is refused.
입력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"email": {
"type": "string"
},
"tier": {
"type": "string",
"enum": [
"bronze",
"bronze_lifetime",
"silver",
"gold",
"platinum"
],
"description": "Omit for the free tier. For the spot above every tier use bid_featured."
}
},
"required": [
"url",
"email"
]
}⚪upgrade_listing(url, tier)
Checkout URL for a paid tier on a listing that already exists. Featured is bid_featured, not this.
입력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"tier": {
"type": "string",
"enum": [
"bronze",
"bronze_lifetime",
"silver",
"gold",
"platinum"
]
}
},
"required": [
"url",
"tier"
]
}🟡refresh_listing(listing_id, proof)
Re-read title, description, and image from the listed page. Send listing_id and proof only. The first confirm previews; send apply back to save.
입력 스키마
{
"type": "object",
"properties": {
"listing_id": {
"type": "integer"
},
"proof": {
"type": "string",
"enum": [
"email",
"domain"
]
}
},
"required": [
"listing_id",
"proof"
]
}🟡change_listing_url(listing_id, url, proof)
Point an existing listing at a new URL. One listing per root domain, so this is how a second page replaces the first.
입력 스키마
{
"type": "object",
"properties": {
"listing_id": {
"type": "integer"
},
"url": {
"type": "string"
},
"proof": {
"type": "string",
"enum": [
"email",
"domain"
]
}
},
"required": [
"listing_id",
"url",
"proof"
]
}🔴remove_free_listing(listing_id, remove, proof)
Take a free listing off the directory. Send remove true and no url or email. A paid listing or the Featured holder is refused.
입력 스키마
{
"type": "object",
"properties": {
"listing_id": {
"type": "integer"
},
"remove": {
"type": "boolean",
"const": true
},
"proof": {
"type": "string",
"enum": [
"email",
"domain"
]
}
},
"required": [
"listing_id",
"remove",
"proof"
]
}🟡confirm_edit(request_id, token, apply)
Apply an edit request. A refresh needs a second call with the apply digest from the preview.
입력 스키마
{
"type": "object",
"properties": {
"request_id": {
"type": "integer"
},
"token": {
"type": "string"
},
"apply": {
"type": "string",
"description": "Digest from the refresh preview. Omit for a URL change or a removal."
}
},
"required": [
"request_id",
"token"
]
}🟢verify_badge(url)
Re-check the listed site for a link to curlship.com. A free listing with the badge becomes dofollow.
입력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"required": [
"url"
]
}🟢list_listings(limit, offset, q, since)
Active listings as JSON. No query returns every listing, in the same order as before. Optional query parameters: limit, offset, q, and since. q matches the title, description, or URL. since is an ISO timestamp; listings created at or after it are kept. Each listing includes created_at. There is no category or tag field.
입력 스키마
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 0,
"description": "Max listings. 50 with offset, 100 with q, when omitted."
},
"offset": {
"type": "integer",
"minimum": 0,
"description": "How many matching listings to skip."
},
"q": {
"type": "string",
"description": "Substring of the title, description, or URL."
},
"since": {
"type": "string",
"description": "ISO timestamp. Keep listings created at or after this moment."
}
}
}🟢get_stats
Listing counts and the Ahrefs Domain Rating.
입력 스키마
{
"type": "object",
"properties": {}
}🟢get_daily_stats(range)
Active listings added per UTC day — the zero-filled series behind the public /stats page. One entry per calendar day from the first listing to today, each with added and the cumulative running total.
입력 스키마
{
"type": "object",
"properties": {
"range": {
"type": [
"string",
"integer"
],
"description": "\"all\" (default) for the whole series, or a day count 1-3650 for the last N days."
}
}
}🟢get_dr_history
The site's Ahrefs Domain Rating over time — the series behind /stats#dr. Every recorded reading, one per UTC day, plus the current value, the last step (change vs the most recent different reading) and the growth since the first reading.
입력 스키마
{
"type": "object",
"properties": {}
}커뮤니티
증거