CurlShip
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Read and submit the CurlShip directory. Paid actions return checkout_url.
| Author | com.curlship |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 458 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"CurlShip": {
"url": "https://curlship.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (15)
bid_featuredTake 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.
Parameters:
url(required) — string — URL of a listing that is already on the directory.amount_usd— number — Bid in USD. Omit to bid the minimum (51).
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
read_featuredWho holds the Featured spot, and the current minimum bid.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
submit_listingList a product. It goes live immediately. One listing per root domain. https://yourapp.com is the documentation placeholder and is refused.
Parameters:
url(required) — stringemail(required) — stringtier— string — Omit for the free tier. For the spot above every tier use bid_featured.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
upgrade_listingCheckout URL for a paid tier on a listing that already exists. Featured is bid_featured, not this.
Parameters:
url(required) — stringtier(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
refresh_listingRe-read title, description, and image from the listed page. Send listing_id and proof only. The first confirm previews; send apply back to save.
Parameters:
listing_id(required) — integerproof(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
change_listing_urlPoint an existing listing at a new URL. One listing per root domain, so this is how a second page replaces the first.
Parameters:
listing_id(required) — integerurl(required) — stringproof(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
remove_free_listingTake a free listing off the directory. Send remove true and no url or email. A paid listing or the Featured holder is refused.
Parameters:
listing_id(required) — integerremove(required) — booleanproof(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
confirm_editApply an edit request. A refresh needs a second call with the apply digest from the preview.
Parameters:
request_id(required) — integertoken(required) — stringapply— string — Digest from the refresh preview. Omit for a URL change or a removal.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
verify_badgeRe-check the listed site for a link to curlship.com. A free listing with the badge becomes dofollow.
Parameters:
url(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_listingsActive 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.
Parameters:
q— string — Substring of the title, description, or URL.limit— integer — Max listings. 50 with offset, 100 with q, when omitted.since— string — ISO timestamp. Keep listings created at or after this moment.offset— integer — How many matching listings to skip.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_statsListing counts and the Ahrefs Domain Rating.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_daily_statsActive 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.
Parameters:
range— ['string', 'integer'] — "all" (default) for the whole series, or a day count 1-3650 for the last N days.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_dr_historyThe 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.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
x402_submit_listingBuy bronze_lifetime ($30 USDC once, forever) or platinum ($49 USDC per prepaid year) with USDC over x402 — settled on-chain, no checkout page, no human in the loop. Call without payment_signature and the reply is a 402 whose body (also the PAYMENT-REQUIRED header, base64) is the quote; sign accepts[0] as an EIP-3009 authorization and call again with payment_signature — the tier is granted in that same call. Same URL and listing rules as submit_listing.
Parameters:
url(required) — stringemail(required) — stringtier(required) — string — The only tiers x402 sells.payment_signature— string — The PAYMENT-SIGNATURE header value: base64 JSON x402 v2 PaymentPayload — accepts[0] from the quote, signed and echoed back as `accepted`. Omit to get the quote back as a 402.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
x402_bid_featuredBid on the Featured spot in USDC over x402 — the same auction as bid_featured (minimum $51 right now), but settled on-chain with no checkout and no human in the loop. Call without payment_signature for the 402 quote, sign accepts[0] as an EIP-3009 authorization, call again with payment_signature echoing it as `accepted`. The product must already be listed. Omit amount_usd to bid $51.
Parameters:
url(required) — string — URL of a listing that is already on the directory.amount_usd— number — Bid in USD. Omit to bid the minimum (51).payment_signature— string — The PAYMENT-SIGNATURE header value: base64 JSON x402 v2 PaymentPayload — accepts[0] from the quote, signed and echoed back as `accepted`. Omit to get the quote back as a 402.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.