No-as-a-Service
Because saying "no" apparently requires an API now.
Like this project? Give it a ā on GitHub!
An API service providing 1,000+ creative ways to decline requests. For those who find saying "no" requires more architectural complexity than it deserves, or who simply appreciate the precision of professionally crafted rejection.
What Is This?
NoaaS is a REST API service with an MCP server wrapper that provides creative rejection responses across four categories:
Two Components:
REST API (primary) - Public HTTP API anyone can call directly
MCP Server (wrapper) - Bridges Claude Desktop to the REST API via stdio transport
Architecture
Key Points:
REST API is the primary service with all business logic
MCP Server is a thin stdio wrapper that bridges AI assistants to the REST API
Works with Claude Desktop, Cursor, and other MCP-compatible clients
Response Categories:
Polite - For when you want them to think you actually considered their request
Humorous - Because adding a joke makes rejection feel less like rejection (it doesn't)
Professional - Corporate-approved ways to say no while sounding like you care (you don't)
Creative - For people who think being clever makes them more interesting (debatable)
Note: Original responses were generated by AI. The 252 professional corporate jargon responses and complete categorization system were authored and organized by Claude (Anthropic). So if they're occasionally weird, nonsensical, or sound like a robot trying too hard to be human, that's why. We've kept them anyway. Quality control is overrated.
Quick Start
Use the Public Service
Just call the API. No installation, no signup, no nonsense.
Response:
Deploy Your Own
Want to run your own instance? We respect your trust issues.
Recommended: Cloudflare Workers (Free)
Zero maintenance, global edge network, automatic scaling. The sensible choice.
See: docs/deployment/QUICKSTART_WORKERS.md for detailed instructions.
Alternative: Docker (Enterprise/Self-Hosted)
For when you have trust issues with cloud providers or compliance requirements.
Advanced: Node.js/Express
Direct deployment on VPS, PM2, or systemd. You know what you're doing.
See: docs/guides/SECURITY.md for security configuration and best practices.
Use with Claude Desktop (MCP)
NoaaS includes a native MCP server with stdio transport. Unfortunately, Claude Desktop requires local installation because it cannot connect directly to web services.
Why Local Installation?
Claude Desktop spawns local processes via stdio (stdin/stdout) for MCP servers. It cannot connect to HTTP endpoints directly, even though the actual data comes from our REST API. The local MCP server acts as a thin wrapper that bridges Claude Desktop to the REST API.
Prerequisites
You need Node.js (v18+) and Git installed:
macOS:
brew install node gitWindows: Download from nodejs.org
Linux: Use your package manager (e.g.,
apt install nodejs git)
Installation
1. Clone and build the MCP server:
This creates build/mcp-server.js in the cloned directory.
2. Get the absolute path:
While still in the no-as-a-service directory, run:
This shows your full path, something like: /Users/yourname/no-as-a-service
š Write this down - you'll need it in the next step.
Claude Desktop Configuration
1. Find your config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
2. Edit the file and add this configuration:
Replace /YOUR/PATH/HERE with the path from the pwd command above:
ā ļø Important:
Use forward slashes (
/) even on WindowsReplace
/YOUR/PATH/HEREwith your actual path from step 2One typo and it won't work - paths are case-sensitive
3. Restart Claude Desktop:
Close Claude Desktop completely (quit the application, not just close the window), then reopen it.
4. Test it:
Ask Claude:
"Give me a polite way to decline this meeting"
"How many different ways to say no do you have?"
If it doesn't work, check your config file for typos.
Available Tools
getRandomNo - Get a creative rejection (optional category: polite, humorous, professional, creative)
getNoCount - Get the total count (1,021)
Troubleshooting
Config file errors?
Validate your JSON at jsonlint.com
Path wrong?
Run
ls build/mcp-server.jsin the repo directory to verify the file exists
Still not working?
Check logs at
~/Library/Logs/Claude/mcp*.log(macOS)Ensure Node.js is installed:
node --versionEnsure you restarted Claude Desktop completely
Use with Cursor IDE (MCP)
Cursor also supports MCP servers. Same local installation requirement, different config file.
Prerequisites
Same as Claude Desktop - Node.js (v18+) and Git. If you already cloned the repo for Claude Desktop, skip to Configuration.
Installation
If you haven't already:
Note the path from pwd - you'll need it.
Cursor Configuration
1. Find or create your config file:
Global (all projects):
~/.cursor/mcp.jsonProject-specific:
<project-root>/.cursor/mcp.json
2. Add the MCP server configuration:
Replace /YOUR/PATH/HERE with your actual path:
3. Restart Cursor
Close and reopen Cursor. The MCP server should now be available.
Available Tools
Same as Claude Desktop:
getRandomNo - Get a creative rejection (optional category: polite, humorous, professional, creative)
getNoCount - Get the total count (1,021)
API Usage (Direct HTTP)
You can also use the REST API directly:
See examples/usage-examples.md for code examples in various languages.
Features
No Authentication - No credit card, no signup, no value proposition
Fast Response Times - Because waiting to say no is apparently unacceptable
Global Distribution - Say no from anywhere in the world, instantly
No Tracking - We don't care enough to track you
Rate Limited - 30 requests per minute. One every 2 seconds. Still generous.
MCP Compatible* - *Via a local stdio wrapper because SSE transport would make too much sense
1,000+ Responses - Because apparently 100 ways to say no wasn't excessive enough
No Authentication - Just send requests. We're too lazy to implement OAuth.
API Reference
Get Random Rejection
Get Count
Health Check
Full API docs: TECHNICAL.md
Project Structure
Deployment Options
Method | Cost | Setup Time | Best For |
Cloudflare Workers ā | $0/month | 5 minutes | Everyone (seriously) |
Docker š³ | Variable | 10 minutes | Enterprise, self-hosted, K8s |
Node.js/Express | $5-12/month | 15 minutes | VPS, custom deployments |
Cloudflare Tunnel | $0/month | 15 minutes | Behind firewalls |
Recommended: Cloudflare Workers (free tier, 100k requests/day, global edge network, zero maintenance)
When to use Docker: Compliance requirements, airgapped environments, existing container infrastructure, or trust issues with cloud providers (understandable).
Documentation
Deployment Guides
QUICKSTART_WORKERS.md - Deploy to Cloudflare Workers in 5 minutes
WORKERS_DEPLOYMENT.md - Comprehensive Cloudflare Workers guide
CLOUDFLARE_DEPLOY.md - All Cloudflare deployment methods
PAGES_DEPLOYMENT.md - Deploy landing page
Configuration & Security
SECURITY.md - Security best practices, environment variables, CORS, rate limiting
DAILY_LIMIT_GUIDE.md - Daily rate limiting explained
Technical Reference
TECHNICAL.md - Full API reference and technical details
examples/usage-examples.md - Code examples
Examples
JavaScript
Python
More examples: examples/usage-examples.md
Contributing
Add New Rejection Messages
Edit
reasons.jsonAdd your rejection to the appropriate category section
Submit a PR
Categories are divided by array index:
Polite: 0-25%
Humorous: 25-50%
Professional: 50-75%
Creative: 75-100%
Report Issues
Found a bug? Open an issue.
Code Contributions
PRs welcome for:
Bug fixes
Documentation improvements
New features (please open an issue first)
FAQ
Q: What's the cost? A: There isn't one. Which should probably concern you, but we're confident you'll use it anyway.
Q: What are the rate limits? A: 30 requests per minute per IP. One every 2 seconds. If you need more than that, you're doing something wrong.
Q: Can I use this commercially? A: Of course. Personal or commercial, we don't discriminate. Just don't blame us when your users hate your app.
Q: Is there an SLA? A: Your expectations should be calibrated to match what you're paying for this.
Q: Why did you build this? A: Someone had to. And apparently, it was us. You're welcome, we suppose.
License
š MIT ā do whatever, just don't say yes when you should say no. Attribution appreciated but not required.
Credits
Built by people with questionable priorities
Inspired by everyone who can't say no
Powered by Cloudflare Workers (probably)
Response categorization and 252 professional corporate responses authored by Claude (Anthropic)
Original 769 responses generated by AI
Links
Landing Page: mcp-for-no.com
API Endpoint: api.mcp-for-no.com
Documentation: Technical Docs
Deploy Guide: Cloudflare Workers Quickstart
Issues: Report a Bug
NoaaS - Helping you waste everyone's time more efficiently since 2025.