Skip to content
biratdattaPublic

About

Knock, Knock.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

isthere?

Is there a skill, an MCP, a plugin, a prompt or an agent for it?

The SaaS you pay for every month, checked against what an AI agent can do instead.
Honest verdicts. Copy-paste installs. What you actually give up.

isthere.biratdatta.tech

MIT License Built with Astro Runs on Cloudflare Workers PRs welcome


Pick a question

Directory The question Verdicts Try it
🧠 Skills Can an Agent Skill (a SKILL.md) do the job? YES · KINDA · NOT REALLY isthereaskillforit…/grammarly
🔌 MCPs Is there an MCP server so your agent can drive it? OFFICIAL · COMMUNITY · NOT YET isthereanmcpforit…/github
🧩 Plugins Can an agent plugin replace the workflow? YES · KINDA · NOT REALLY isthereapluginforit…/coderabbit
⌨️ Prompts Can one coding prompt rebuild it? YES · KINDA · NOT REALLY isthereapromptforit…/calendly
🤖 Agents Is there an AI agent that does the job? YES · KINDA · NOT REALLY isthereanagentforit…/calendly

Every entry comes with install commands for Claude Code, Codex and Cursor, the list of things you lose by switching, open-source prior art, and an "I replaced this" button that feeds the site's COLLECTIVE MRR DESTROYED ticker.

Short links: is-there-a-<thing>-for-it.biratdatta.tech/<app> takes you straight to the answer. isthereanmcpforit.biratdatta.tech/notion → the Notion MCP page.


What's inside

For visitors

  • One search across all five directories
  • Cancel Culture: apps ranked by real "I replaced this" votes, live MRR ticker
  • Per-agent install tabs with one-click copy
  • Light mode and a calm slate dark mode
  • Submit your own find, or book an ad slot
  • My stack: tick what you pay for, see what you'd save
  • Compare view, category pages and free open-source alternatives
  • Agree/disagree on verdicts, request an app, public review queue
  • What's new + RSS, weekly email, live stats, README badges

Under the hood

  • Astro 7, every page prerendered
  • Cloudflare Workers + D1 for votes and forms
  • Vanilla JS, no client framework
  • Social cards generated at build time
  • Content is plain JSON in data/

Run it locally

git clone https://github.com/biratdatta/isthere.git
cd isthere
npm install
npm run seed:demo   # optional: sample votes so lists aren't empty
npm run dev         # → http://localhost:4321
Deploy your own copy
  1. Create a Cloudflare account and add your domain.
  2. Workers & Pages → Create → Import a repository, pick your fork. Build command npm run build, deploy command npx wrangler deploy.
  3. Change the domain in wrangler.jsonc, astro.config.mjs (site) and src/lib/seo.ts (SITE_HOST).
  4. Short links (optional): npx wrangler login, then npm run deploy:shortlinks.

Every push to main redeploys. The database tables create themselves on first use.


✍️ Add an app in 2 minutes

Found a tool we're missing? Two ways in:

  • No code: use the form at isthere.biratdatta.tech/submit.
  • Pull request: add one JSON file to data/<directory>/<app>.json. Same slug across directories means the pages link to each other.
The fields every entry has
{
  "slug": "notion",
  "name": "Notion",
  "domain": "notion.so",
  "category": "productivity",
  "priceMonthly": 10,
  "priceNote": "Plus, billed yearly",
  "pricingUrl": "https://www.notion.com/pricing",
  "verdict": "yes",
  "whatYouLose": ["Be honest here. It's the point of the site."],
  "priorArt": [{ "name": "AppFlowy", "url": "https://github.com/AppFlowy-IO/AppFlowy" }],
  "notes": "One or two plain sentences."
}

category must exist in src/lib/apps.ts. Use "priceMonthly": null for usage-based pricing and explain it in priceNote.

🧠 Skills: add a skill block

An existing skill from a marketplace:

"skill": {
  "name": "pdf",
  "sourceUrl": "https://github.com/anthropics/skills/tree/main/skills/pdf",
  "marketplace": "anthropics/skills",
  "plugin": "document-skills@anthropic-agent-skills"
}

Or a skill you wrote, inline:

"skill": { "name": "copyedit", "sourceUrl": null, "skillMd": "---\nname: copyedit\ndescription: …\n---\n# Copyedit…" }
🔌 MCPs: add server and tools
"server": {
  "official": true,
  "transport": "http",
  "url": "https://mcp.notion.com/mcp",
  "auth": "oauth",
  "docsUrl": "https://developers.notion.com/guides/mcp/overview"
},
"tools": ["notion-search", "notion-fetch", "notion-create-pages"]

Local servers use "transport": "stdio" with "command", "args" and optional "env": ["API_KEY"].

🧩 Plugins: add a plugin block
"plugin": {
  "name": "code-review",
  "marketplace": "anthropics/claude-plugins-official",
  "marketplaceName": "claude-plugins-official",
  "repoUrl": "https://github.com/anthropics/claude-plugins-official/tree/main/plugins/code-review",
  "includes": ["/code-review command", "4 parallel review agents"]
}
🤖 Agents: add an agent block
"agent": {
  "name": "Howie",
  "maker": "3030 Labs",
  "url": "https://howie.com/",
  "price": "Team from $25/mo",
  "pricingUrl": "https://howie.com/#pricing",
  "autonomy": "autonomous",
  "does": ["Schedules meetings over email", "Follows up when people go quiet"]
}

autonomy is autonomous (works on its own) or supervised (you review its work).

⌨️ Prompts: add the prompt
"prompt": "Build a self-hosted scheduling page, a Calendly replacement for one person.\n\nStack: …\nFeatures:\n- …\nDone when: …"

Write it so an agent can finish in one session: stack, features, and a clear "done when".

Then check your file:

npm run check-data   # validates every entry (also runs in CI)

The install snippets for each agent are generated from your fields, so you never write them by hand.


Where things live

data/
  skills/ mcp/ plugins/ prompts/ agents/   one JSON file per app
src/
  pages/            home, /[directory], /[directory]/[app], /submit, /advertise
  components/       nav, tiles, Cancel Culture list, install tabs, ticker
  lib/kinds.ts      the five directories: words, verdict labels, colours
  lib/installs.ts   per-agent install commands
  styles/global.css the whole design system
shortlinks/         redirect Worker for the isthere…forit subdomains
scripts/og.mjs      social card generator
Reading form submissions

Submissions and ad requests are stored in the submissions and ad_requests tables. Open them in the Cloudflare dashboard under Storage & databases → D1 → isthere, or:

npx wrangler d1 execute isthere --remote --command "SELECT * FROM submissions WHERE status = 'new' ORDER BY created_at DESC"

Suggested free alternatives land in alt_suggestions, newsletter signups in waitlist:

npx wrangler d1 execute isthere --remote --command "SELECT app, name, url, description, github FROM alt_suggestions WHERE status = 'new'"

FAQ

Are the verdicts objective?

No. They're honest opinions with the trade-offs spelled out. Disagree? Open a PR with your reasoning.

Are prices up to date?

They're entry paid tiers at the time they were added and drift over time. Each entry links to the vendor's pricing page.

Do ads affect verdicts?

Never. Ads are one static image and a link in the page margins, clearly labelled.


MIT licensed · verdicts are opinions · trademarks belong to their owners

If this saved you a subscription, hit "I replaced this" and ⭐ the repo.

About

Knock, Knock.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages