Because your time is valuable. Allegedly.
A free API that says no so you don't have to. Because apparently that's hard.
NoaaS is a free API that returns creative ways to decline things. Because apparently "no" by itself is too simple for modern society, and you need 1,021 different ways to say it while maintaining plausible deniability.
Perfect for people who struggle with boundaries, have too many meetings, or need to sound polite while absolutely meaning the opposite. No installation required. Just use the API.
For when you want them to think you actually considered their request
Because adding a joke makes rejection feel less like rejection (it doesn't)
Corporate-approved ways to say no while sounding like you care (you don't)
For people who think being clever makes them more interesting (debatable)
Pick a category and witness the magic of professional rejection. Or don't. We're not invested in your decisions.
No credit card, no signup, no value proposition
Because waiting to say no is apparently unacceptable
Say no from anywhere in the world, instantly
We don't care enough to track you
30 requests per minute. One every 2 seconds. Still generous.
*Via a local stdio wrapper because SSE transport would make too much sense
Because apparently 100 ways to say no wasn't excessive enough
Just send requests. We're too lazy to implement OAuth.
You'd think "intelligent" agents could fetch data from URLs like every browser since 1995. You'd be wrong.
Instead, we're in an era where AI can write poetry but can't make an HTTP request without a local process translating stdio streams. You still can't order pizza from Claude without manually editing JSON config files and remembering absolute file paths. Progress.
We're told this is the future of computing. If that's true, the future involves a lot more npm install than anyone expected. But sure, let's call it "intelligent" and move on.
We offer both a straightforward REST API and a more... architecturally ambitious MCP server. Choose whichever matches your tolerance for complexity.
Call an HTTP endpoint. Get a response. That's all. If this sounds appealing, you're probably the kind of person who reads documentation. How refreshing.
Claude Desktop has interesting opinions about network communication. Rather than using HTTP directly, it prefers local processes communicating via stdio streams. We've accommodated this preference.
For most applications: Send an HTTP request to our REST API. Receive a response. This is how the internet has worked for decades.
For Claude Desktop: The MCP Server runs on your computer, receives stdio messages from Claude, translates them into HTTP requests, sends them to our REST API, receives the HTTP response, translates it back to stdio, and returns it to Claude. This adds several steps between Claude and the internet, which we're confident has perfectly sound architectural reasoning.
The installation instructions below will guide you through whichever path you've chosen.
Because apparently saying "no" requires downloading a repo and running build scripts now.
Node.js (v18+) and Git. You know the drill:
brew install node gitStandard ritual. The last command shows your path — copy it:
cd ~
git clone https://github.com/Koneisto/no-as-a-service.git
cd no-as-a-service
npm install
npm run mcp:build
pwd
Write down that path. You'll need it in step 3. It looks like /Users/yourname/no-as-a-service
Find your config file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonAdd this. Replace /YOUR/PATH/HERE with the path you just copied:
{
"mcpServers": {
"noaas": {
"command": "node",
"args": [
"/YOUR/PATH/HERE/no-as-a-service/build/mcp-server.js"
],
"env": {
"API_BASE_URL": "https://api.mcp-for-no.com"
}
}
}
}
⚠️ One typo and nothing works. Case-sensitive. Forward slashes only. You have been warned.
Quit the app completely (not just close the window). Reopen. Ask Claude something like:
Doesn't work? You probably typo'd the path. Check your config.
ls build/mcp-server.js to verify~/Library/Logs/Claude/mcp*.logCursor also jumped on the MCP bandwagon. Same local installation dance, different config file.
Same as Claude Desktop. Skip if already done:
cd ~
git clone https://github.com/Koneisto/no-as-a-service.git
cd no-as-a-service
npm install
npm run mcp:build
pwd
Create or edit your config file:
~/.cursor/mcp.json<project>/.cursor/mcp.jsonAdd this. Replace /YOUR/PATH/HERE with your path:
{
"mcpServers": {
"noaas": {
"command": "node",
"args": [
"/YOUR/PATH/HERE/no-as-a-service/build/mcp-server.js"
],
"env": {
"API_BASE_URL": "https://api.mcp-for-no.com"
}
}
}
}
Close and reopen Cursor. The NoaaS tools should now be available in your AI assistant.
For those who prefer to write code instead of using convenient interfaces. We respect your life choices.
curl -X POST https://api.mcp-for-no.com/v1/tools/call \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"getRandomNo","params":{"category":"humorous"},"id":1}'
const response = await fetch('https://api.mcp-for-no.com/v1/tools/call', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
method: 'getRandomNo',
params: { category: 'professional' },
id: 1
})
});
const data = await response.json();
console.log(data.result.response);
import requests
response = requests.post(
'https://api.mcp-for-no.com/v1/tools/call',
json={
'jsonrpc': '2.0',
'method': 'getRandomNo',
'params': {'category': 'polite'},
'id': 1
}
)
print(response.json()['result']['response'])
Pick a category if you're feeling picky. Or don't, and get whatever we feel like giving you:
polite - Graceful rejectionshumorous - Witty declinesprofessional - Business-appropriatecreative - Unique responsesYes. Completely free. Forever. No catch. Which should make you suspicious, but here we are.
30 requests per minute per IP. One every 2 seconds. If you need more than that, you're doing something wrong.
Of course. Personal or commercial, we don't discriminate. Just don't blame us when your users hate your app.
This is a free service. Your expectations should be calibrated accordingly.
We have such a long history of saying no that people rarely ask us for anything anymore. So, indefinitely? Hard to say. No guarantees, obviously. Plan accordingly.
You could. Whether we'll add them depends on factors we won't elaborate on. Try GitHub issues if you're feeling optimistic.
People with time on their hands and questionable priorities. Much like yourself, probably.