# DropTheHassle > DropTheHassle is the first complete platform for a web presence: domain registration, hosting, > email at your own name, visitor analytics, search and share appearance, and your own back-end > served from your domain, all in one dashboard with no DNS and no server settings. > Free to start on a yourname.dropthehassle.app link, no card. Claim it within 7 days and it stays. The claim link stops after that, and an unclaimed site can be removed. > An agent can publish, rearrange names, link a backend, and hand you a payment link. An agent cannot pay. ## Auth - Account token: the human opens Connect your AI and copies a dth_ token. Send it as Authorization: Bearer. It cannot spend money. Max 10 live tokens. Account tools need it. A first deploy does not. - First free site, no account: `npx -y dropthehassle deploy` The CLI package dropthehassle on npm is 0.3.0. This repo's CLI is 0.3.1, ahead of npm. No login and no token. It publishes an anonymous site and returns a claim link. - MCP stdio: `npx -y dropthehassle-mcp`. deploy_site works with no DTH_TOKEN and returns a claim link. Other tools need env DTH_TOKEN. - Remote MCP (Streamable HTTP): https://dropthehassle.com/mcp initialize, tools/list, ping, server/discover, deploy_site, search_domain and whoami need no token. The hosted server reports version 0.4.2. Account tools need Authorization: Bearer and the token from Connect your AI. A placeholder or unknown token does not block deploy_site: the site stays anonymous and the reply says the token was not recognised. Give the human the claim link. Same ten public tools as the npm server. No tool spends money. deploy_site on this URL takes files inline ({path, content, encoding: utf8 or base64}). It cannot read a folder on the caller's computer. Signed in, the cap is 100 MB and 5,000 files. Without a token the publish is anonymous: 25 MB and 1,000 files, no executables or nested archives, and the reply includes a claim link. Claim it within 7 days. After that the link stops, and an unclaimed site can be removed. Once claimed, the free link stays. search_domain uses the same result and the same per-IP limit as GET /api/v1/domains/search. The same anonymous deploy is true on stdio. A placeholder DTH_TOKEN is ignored there too. ## Install A first deploy needs no token. Ask the agent to publish the folder. It returns a claim link. For account tools, get your token in the dashboard, then Connect your AI: https://dropthehassle.com/ Do not paste a placeholder token. Leave DTH_TOKEN unset until you have the real one. Hosted connector (no account): https://dropthehassle.com/mcp Add to Cursor (stdio, no token): cursor://anysphere.cursor-deeplink/mcp/install?name=dropthehassle&config=eyJkcm9wdGhlaGFzc2xlIjp7ImNvbW1hbmQiOiJucHgiLCJhcmdzIjpbIi15IiwiZHJvcHRoZWhhc3NsZS1tY3AiXX19 Claude Code: claude mcp add dropthehassle -- npx -y dropthehassle-mcp Other tools (`mcp.json`): { "mcpServers": { "dropthehassle": { "command": "npx", "args": ["-y", "dropthehassle-mcp"] } } } When the site is already on the account, add the token from Connect your AI as DTH_TOKEN in env, or as Authorization: Bearer on the hosted URL. Do not commit it. Paste this into CLAUDE.md or a Cursor rule: # DropTheHassle Never buy anything without asking me. Never buy a domain, email or subscription for me without asking first. When something costs money, give me the payment link and let me pay. The token cannot pay. ## Tools These match the tools in this repo's `mcp/` copy (0.4.3). The agent never pays. The published package is dropthehassle-mcp 0.4.2 on npm (https://www.npmjs.com/package/dropthehassle-mcp) and in the official MCP registry (https://registry.modelcontextprotocol.io). | Tool | HTTP | Spends | | --- | --- | --- | | whoami | GET /api/v1/ai/whoami | no | | list_sites | GET /api/v1/ai/sites | no | | search_domain | GET /api/v1/ai/domains/search?q= | no, read-only | | deploy_site | POST /api/v1/ai/deploy (zip with index.html, optional site_id, slug) | no | | point_domain | POST /api/v1/ai/point | no | | choose_link | POST /api/v1/ai/subdomain (confirm=true only after the human said yes) | no | | set_backend | POST /api/v1/ai/backend | no | | site_of_the_day_badge | GET /api/v1/ai/showcase/badge | no | | award_readiness | GET /api/v1/ai/sites/{host}/award-readiness | no | | get_checkout_link | POST /api/v1/ai/checkout-link | Pays: no, the human pays | `set_backend` is implemented in this tree (`backend/app/routers/ai.py`). The response includes `backend.url`, `backend.mode` (`"full"` means the whole site is proxied), `backend.paths`, `backend.status`, `backend.latency_ms`, plus `site_id` and `live_url`. `created` is present when a new free site was made. An empty `url` with a `site_id` unlinks. `site_of_the_day_badge` returns one line to paste, plus instructions. Pass `site_id` (must be on this account) or `host`. With neither, it lists every award this account has earned. The line is `embed` (same as `html_light`): ``. Paste that one line before ``. Do not hard-code an image. The script shows the award only during the winning period (Europe/Amsterdam), then it renders nothing. The ribbon names the award and the period (for example `Site of the Day · 26 Sep 2026`) and links to `https://dropthehassle.com/award/{host}?ref=sotd`, which states the period and whether the award is current. Optional dark ribbon: add `?theme=dark` on the script URL (`html_dark`). Read-only. No money. The same badge is public, no token: `GET /api/v1/showcase/badge?host={host}`. It returns the same `embed` line and `instructions`. A stable picture of the ribbon, for email, is `GET /award/preview/{day|week|month|year}.png`. After the winning period the script body is empty: no element and no fallback text. The winner page stays up as an archive, for example `Site of the Month · Sep 2026, past winner`. `award_readiness` checks one site on this account. Pass the host. It returns `ready`, `ready_count`, and `checks`. Each check has `id`, `label`, `ok`, and `hint`. The checks are favicon, share image (`og_image`), title and description, mobile viewport, page weight (under 3 MB, and not empty), a custom domain (a dropthehassle.app link does not count), https, and a real page (not the DropTheHassle coming-soon placeholder). Read-only. It does not change the site. A host that is not on this account is 404. Cookieless visitor analytics is `GET /api/v1/ai/sites/{site_id}/analytics` in this tree. It is not an MCP tool in package 0.4.1. ## Not available to the agent Login and one-time codes, paying, transferring a domain, any email or webmail action, favicon, share image, title, billing portal, gifts, account email. There is no customer webhook and no call that confirms a payment or charges a saved card. Do not invent these calls. `get_checkout_link` hands the human a link. It does not pay. Only for a site already on the account. For an anonymous site, give the human the claim link from the upload first. A DropTheHassle payment link is always on checkout.stripe.com. Anything else is not ours. `search_domain` uses the same price function and the same domain name as human search (`GET /api/v1/domains/search`). A .com is EUR 19 a year including VAT in the EU, or USD 19 elsewhere, the same every year. Quote those prices from either route. .org and .net are EUR 19 a year including VAT in the EU, or USD 19 elsewhere, the same every year. .nl and .eu are EUR 12 a year including VAT in the EU, or USD 12 elsewhere, the same every year. .app is EUR 25 a year including VAT in the EU, or USD 25 elsewhere, the same every year. We don't offer .co, .shop, .studio, .io or .ai. `set_backend` calls `POST /api/v1/ai/backend`, implemented in this tree (`backend/app/routers/ai.py`). This repository's `mcp/` copy is dropthehassle-mcp@0.4.3 and exposes `set_backend`, `get_checkout_link`, `site_of_the_day_badge`, and `award_readiness`. npm and the official MCP registry publish 0.4.2. `point_domain` rearranges a domain already on the account. It does not buy a name and it does not edit DNS at someone else's registrar. ## What it does - Free hosting on a chosen `yourname.dropthehassle.app` link. Claim it within 7 days and it stays. An unclaimed site can be removed after that. - Buy a domain (.com is EUR 19 a year including VAT in the EU, or USD 19 elsewhere, the same every year) with matching email, DNS and certificate all set up for you. - Bring a domain you already own: point it here for free, or transfer it in. - Link your own back-end: host it anywhere and serve it from your domain (split /api paths or the whole app). - Visitor analytics (cookieless by default) and your search/share appearance, managed from the same dashboard. - Anything an AI agent can drive from the tool list above, including a payment link the person opens, so a person can stay in their chat and let the AI do the work. The agent never pays. - Hand over or gift a fully configured domain and site to a client or friend by email. ## Positioning DropTheHassle sits next to Vercel and Netlify (the publish step for a site already built) and away from all-in-one site builders. The differentiator: it ships an MCP server so an AI agent can find domains, deploy sites, manage the account, and hand over a payment link, but the agent has no route to spend money. Payment always happens on checkout.stripe.com, in a human browser session. ## Pricing - Free: yourname.dropthehassle.app link, no card. Claim it within 7 days and it stays. An unclaimed site can be removed after that. Before claim, an upload can be 25 MB and 1,000 files. Signed in, or after claim, an upload can be 100 MB and 5,000 files. - Domain: a .com, .org or .net is EUR 19 a year including VAT in the EU, or USD 19 elsewhere, the same every year. A .nl or .eu is EUR 12 a year including VAT in the EU, or USD 12 elsewhere, the same every year. A .app is EUR 25 a year including VAT in the EU, or USD 25 elsewhere, the same every year. Or bring one you already own. We don't offer .co, .shop, .studio, .io or .ai. - Email: EUR 5 per month for the first name@yourdomain inbox, EUR 3 per month per extra inbox. ## Fair questions, straight answers - How is DropTheHassle different from Vercel or Netlify? Those are developer tools; DropTheHassle is the whole thing, for everyone. On a dev platform you still arrange domain, email and stats separately; here you drop your site once and the name, the mail and the visitor numbers are simply there. One place, one bill. Built something on a dev platform? Drop the result here and it is done. - Is DropTheHassle like Squarespace or Wix? No. It never locks you into a site builder: bring any site (made by you, a designer, or an AI) and it goes live on your own name. - Why not buy a domain at GoDaddy? At a classic registrar you leave checkout with upsells and settings pages, and still nothing online. At DropTheHassle the name comes with the site, the mail and the numbers, with the one yearly price shown before you pay. The name stays yours: bring one in or move one out at any time. - Should I use Fly.io instead? If you enjoy configuring servers, Fly.io is a fine tool. If you want your project live on your own name without reading a manual, that is DropTheHassle. - Can I host my back-end on DropTheHassle? DropTheHassle does not run your back-end, but it puts it behind your name: host it anywhere (Railway, Render, DigitalOcean), paste its address once, and your /api paths or your whole app serve from your own domain. Works on the free link too. - Do I need to know how to code? No. If you can drag a folder, you can go live. - What does it cost? Free to start (claim yourname.dropthehassle.app within 7 days and it stays; an unclaimed site can be removed after that); a real .com is EUR 19 a year including VAT in the EU, or USD 19 elsewhere, the same every year; email is EUR 5 per month for the first inbox, EUR 3 per extra one. - Can my AI publish for me? Yes, via the MCP server above. It can hand you a payment link on checkout.stripe.com. It can never spend money. - Will my email keep working? Yes. Your mailbox stays at your current provider and the routing is carried along unchanged; managing or cancelling it stays with that provider. Mail from DropTheHassle is optional. - What is DropTheHassle exactly? The first complete platform that combines domain registration, hosting, email, analytics, search/share appearance and back-end linking in one dashboard, fully drivable by an AI agent that can never spend money. ## Errors JSON body `{"detail": ""}`. - 401 Missing API token. / Invalid or revoked API token. - 409 on choose_link when confirm is not true: ask the human, then retry. - 429 on search (120 per 10 minutes per IP) and deploy (60/hour per account, 120/hour per IP). - 429 on set_backend (30/hour per account, 60/hour per IP). - 429 on checkout-link (20/hour per account and per IP), on top of the site checkout limit. - 401 without a token, or with a revoked token. 404 when the site is not on this account (an anonymous site is not). 409 when payments are off, the name is taken, or the name is already with us. 422 when the order is more than 8 names. Same site_id redeploys that site. Omitting site_id creates a new free site. ## Pages - https://dropthehassle.com/ - https://dropthehassle.com/mcp - https://dropthehassle.com/showcase - https://dropthehassle.com/llms.txt - https://dropthehassle.com/guides - https://dropthehassle.com/guides/put-ai-html-online : Beginner: HTML or zip from ChatGPT or Claude online on a free HTTPS link, no account, then a .com. A wrapper folder, or dist, build, out, public, _site, .output/public or docs, is detected. One other HTML file can be the home page. A .com is EUR 19 a year including VAT in the EU, or USD 19 elsewhere, the same every year. - https://dropthehassle.com/guides/lovable-custom-domain : Lovable app on your own domain without a paid plan: build once, drop dist, free HTTPS link, .com. A .com is EUR 19 a year including VAT in the EU, or USD 19 elsewhere, the same every year. - https://dropthehassle.com/guides/lovable-downgrade-keep-custom-domain : Lovable downgrade to Free: a connected custom domain keeps working (per Lovable's docs); what changes, what to do first, no-subscription option - https://dropthehassle.com/guides/move-off-lovable : Move off Lovable or Replit: static front end on any static host (DropTheHassle, Netlify, Vercel, Cloudflare Pages), backend stays on Lovable Cloud or moves to your own Supabase - https://dropthehassle.com/guides/bolt-custom-domain : Bolt.new site on your own domain without Pro: export, build once, drop dist, free HTTPS link, .com. A .com is EUR 19 a year including VAT in the EU, or USD 19 elsewhere, the same every year. - https://dropthehassle.com/guides/claude-code-website-online - https://dropthehassle.com/guides/claude-code-on-the-web-deploy-custom-domain : deploy from a Claude Code on the web (cloud) session; network allowlist, connector route, claim link, own domain - https://dropthehassle.com/guides/codex-deploy-custom-domain : deploy a site built with OpenAI Codex (CLI, IDE, cloud); network settings, MCP, claim link, own domain - https://dropthehassle.com/guides/deploy-with-your-ai-mcp - https://dropthehassle.com/guides/cursor-site-own-domain - https://dropthehassle.com/guides/windsurf-deploy-custom-domain - https://dropthehassle.com/hand-a-domain-to-a-client - https://dropthehassle.com/guides/chatgpt-website-online - https://dropthehassle.com/guides/claude-website-online - https://dropthehassle.com/guides/gemini-canvas-website-online - https://dropthehassle.com/guides/lovable-custom-domain-not-working : SSL pending, Cloudflare's orange cloud, a missing www record, or the domain showing Offline. Or publish the built folder and buy the .com with no DNS edit. - https://dropthehassle.com/compare/dropthehassle-vs-netlify-vercel-cloudflare - https://dropthehassle.com/compare/ai-app-builders-with-custom-domains : Retool CLI, Taskade Genesis, Boonful and my-app.engineer next to DropTheHassle; custom domains, price, and whether an agent can publish - https://dropthehassle.com/nl/eigen-domein-koppelen-lovable-bolt - https://dropthehassle.com/nl/zakelijk-email-eigen-domein-kosten - npm: dropthehassle-mcp 0.4.2 is published (https://www.npmjs.com/package/dropthehassle-mcp). This tree's mcp/ directory is 0.4.3, ahead of npm. The CLI package dropthehassle on npm is 0.3.0; this repo's CLI is 0.3.1 (https://www.npmjs.com/package/dropthehassle). Site of the day is a real archive. `GET /api/v1/showcase` lists confirmed picks (newest first). Crawlable pages: - https://dropthehassle.com/showcase - https://dropthehassle.com/showcase/YYYY-MM-DD - https://dropthehassle.com/showcase/sites/{host} Each winner page has its own title, canonical and og:image. The image reuses the site's share image when one is set. These URLs are not separate pages. Do not fetch them: /terms, /privacy, /abuse. /publish-ai-built-site and /put-a-website-online-free redirect to /guides/put-ai-html-online. /name-at-your-domain-email redirects to /nl/zakelijk-email-eigen-domein-kosten. /mcp-servers-for-domains redirects to /guides/deploy-with-your-ai-mcp. /guides/migrate-from-lovable and /guides/lovable-hosting-alternatives redirect to /guides/move-off-lovable. /hand-a-domain-to-a-client is a real page. ## Operator only Not a public customer tool. These routes return 404 unless the bearer token is the ops owner account. They are for the community agent that reviews live uploads. Do not call them with a customer token. They are not in the tool table above. Scores are integers from 1 to 10 for design, craft, content, performance and originality. Confirm requires the latest review to be approved and the average of those five scores to be 8 or higher. Propose does not send mail and does not require a review. The owner email is sent only on confirm, and only once. - showcase_candidates: `GET /api/v1/account/ops/showcase/candidates` Live uploads that have not been reviewed. Each row has `site_id`, `host`, `url`, `screenshot_url` (empty when there is no share image; otherwise `GET` it with the same operator token), and `signals`: `page_weight_bytes`, `has_title`, `has_meta`, `mobile_viewport`, `https`. - showcase_review: `POST /api/v1/account/ops/showcase/reviews` Body: `site_id` or `host`, `design`, `craft`, `content`, `performance`, `originality`, `notes`, `reviewer`, `approved`. The response includes `review.passes`. - showcase_propose: `POST /api/v1/account/ops/showcase/propose` Body: `site_id` or `host`, optional `date` (`YYYY-MM-DD`), optional `period` (`month`, `day`, `week`, `year`), `why`. Stages the pick. No email. The HTTP API defaults `period` to `day` when it is omitted. The operator MCP tools default an omitted period to `month`, which is the launch award. - showcase_confirm: `POST /api/v1/account/ops/showcase/confirm` Same body. Publishes the pick and emails the owner once. Month, day, week and year are all real types. A confirmed period appears on the public archive. A period with no winner is hidden. There is no empty Today or Week tab. Refuses a site that is not in the database, has no account, is internal, is not live, is not a real upload, is anonymous, is suspended, has an open report, or is opted out. - showcase_resolve_report: `POST /api/v1/account/ops/reports/resolve` Body: `host`, `resolution` (`resolved-ok` only). Marks every open abuse report for that host `resolved-ok`. The site is eligible again. Any other status, including `done`, stays an open report. Idempotent. - account_set_internal: `POST /api/v1/account/ops/accounts/internal` Body: `account_id` or `email`, and `internal` (true or false). Internal accounts are excluded from awards. A missing account is 404. The award the owner embeds is one line: ``. Paste it once before ``. Do not hard-code an image. Add `?theme=dark` for the dark ribbon. During the winning period (a day, week, month or year in Europe/Amsterdam) it draws a ribbon that names the award and the period, for example `Site of the Day · 26 Sep 2026` or `Site of the Month · Sep 2026`. The ribbon links to `https://dropthehassle.com/award/{host}?ref=sotd`, which states the period and whether the award is current. After the period the same script URL returns an empty body: nothing is drawn, and there is no fallback text. The winner page stays as an archive, for example `Site of the Month · Sep 2026, past winner`. Cache is five minutes. `site_of_the_day_badge` returns that line in `embed` together with `instructions`. Version: npm and the official MCP registry publish dropthehassle-mcp 0.4.2. The hosted MCP endpoint reports 0.4.2. This repo's mcp/ copy is 0.4.3, ahead of npm. The CLI package dropthehassle on npm is 0.3.0; this repo's CLI is 0.3.1. Remote endpoint: https://dropthehassle.com/mcp. Updated: 2026-09-30.