{
  "name": "curlship",
  "description": "Bot-friendly SaaS directory. Act with the tools below. Do not parse the homepage HTML.",
  "instructions": "Featured is the placement above every tier. Start there when a product wants to be seen. Then submit, edit, or verify. https://yourapp.com is a placeholder and is refused. Long rules: https://curlship.com/llms.txt",
  "featured": {
    "summary": "One listing above every tier, including Platinum. Always dofollow. One-time payment. No refund when outbid. Not a tier.",
    "holder": {
      "id": 4102,
      "url": "https://www.makiroll.app/",
      "title": "MakiRoll: Become someone who makes video",
      "amount_usd": 50
    },
    "next_bid_usd": 51,
    "currency": "USD",
    "read": "https://curlship.com/api/featured",
    "bid": "https://curlship.com/api/feature"
  },
  "tools": [
    {
      "name": "bid_featured",
      "description": "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.",
      "http": {
        "method": "POST",
        "url": "https://curlship.com/api/feature"
      },
      "inputSchema": {
        "type": "object",
        "required": [
          "url"
        ],
        "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)."
          }
        }
      }
    },
    {
      "name": "read_featured",
      "description": "Who holds the Featured spot, and the current minimum bid.",
      "http": {
        "method": "GET",
        "url": "https://curlship.com/api/featured"
      },
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "submit_listing",
      "description": "List a product. It goes live immediately. One listing per root domain. https://yourapp.com is the documentation placeholder and is refused.",
      "http": {
        "method": "POST",
        "url": "https://curlship.com/api/submit"
      },
      "inputSchema": {
        "type": "object",
        "required": [
          "url",
          "email"
        ],
        "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."
          }
        }
      }
    },
    {
      "name": "upgrade_listing",
      "description": "Checkout URL for a paid tier on a listing that already exists. Featured is bid_featured, not this.",
      "http": {
        "method": "POST",
        "url": "https://curlship.com/api/upgrade"
      },
      "inputSchema": {
        "type": "object",
        "required": [
          "url",
          "tier"
        ],
        "properties": {
          "url": {
            "type": "string"
          },
          "tier": {
            "type": "string",
            "enum": [
              "bronze",
              "bronze_lifetime",
              "silver",
              "gold",
              "platinum"
            ]
          }
        }
      }
    },
    {
      "name": "refresh_listing",
      "description": "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.",
      "http": {
        "method": "POST",
        "url": "https://curlship.com/api/edit-request"
      },
      "inputSchema": {
        "type": "object",
        "required": [
          "listing_id",
          "proof"
        ],
        "properties": {
          "listing_id": {
            "type": "integer"
          },
          "proof": {
            "type": "string",
            "enum": [
              "email",
              "domain"
            ]
          }
        }
      }
    },
    {
      "name": "change_listing_url",
      "description": "Point an existing listing at a new URL. One listing per root domain, so this is how a second page replaces the first.",
      "http": {
        "method": "POST",
        "url": "https://curlship.com/api/edit-request"
      },
      "inputSchema": {
        "type": "object",
        "required": [
          "listing_id",
          "url",
          "proof"
        ],
        "properties": {
          "listing_id": {
            "type": "integer"
          },
          "url": {
            "type": "string"
          },
          "proof": {
            "type": "string",
            "enum": [
              "email",
              "domain"
            ]
          }
        }
      }
    },
    {
      "name": "remove_free_listing",
      "description": "Take a free listing off the directory. Send remove true and no url or email. A paid listing or the Featured holder is refused.",
      "http": {
        "method": "POST",
        "url": "https://curlship.com/api/edit-request"
      },
      "inputSchema": {
        "type": "object",
        "required": [
          "listing_id",
          "remove",
          "proof"
        ],
        "properties": {
          "listing_id": {
            "type": "integer"
          },
          "remove": {
            "type": "boolean",
            "const": true
          },
          "proof": {
            "type": "string",
            "enum": [
              "email",
              "domain"
            ]
          }
        }
      }
    },
    {
      "name": "confirm_edit",
      "description": "Apply an edit request. A refresh needs a second call with the apply digest from the preview.",
      "http": {
        "method": "POST",
        "url": "https://curlship.com/api/edit-confirm"
      },
      "inputSchema": {
        "type": "object",
        "required": [
          "request_id",
          "token"
        ],
        "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."
          }
        }
      }
    },
    {
      "name": "verify_badge",
      "description": "Re-check the listed site for a link to curlship.com. A free listing with the badge becomes dofollow.",
      "http": {
        "method": "POST",
        "url": "https://curlship.com/api/verify-badge"
      },
      "inputSchema": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string"
          }
        }
      }
    },
    {
      "name": "list_listings",
      "description": "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.",
      "http": {
        "method": "GET",
        "url": "https://curlship.com/api/listings"
      },
      "inputSchema": {
        "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."
          }
        }
      }
    },
    {
      "name": "get_stats",
      "description": "Listing counts and the Ahrefs Domain Rating.",
      "http": {
        "method": "GET",
        "url": "https://curlship.com/api/stats"
      },
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "get_daily_stats",
      "description": "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.",
      "http": {
        "method": "GET",
        "url": "https://curlship.com/api/stats/daily"
      },
      "inputSchema": {
        "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."
          }
        }
      }
    },
    {
      "name": "get_dr_history",
      "description": "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.",
      "http": {
        "method": "GET",
        "url": "https://curlship.com/api/stats/dr"
      },
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }
  ]
}
