
Tabu
NSFW Image & Video Moderation API & Compliance Platform
If you are a solo founder building an API product right now, you know the biggest hurdle to adoption isn't your pricing or your landing page. It's the integration process.
Developers hate reading API documentation. They hate setting up authentication headers, figuring out the request payload, and writing boilerplate code.
I run Tabu, a drop-in API for image and video moderation. I wanted to make the integration process completely frictionless. I realized that if a developer is building their app using an agentic IDE like Cursor or Windsurf, I could give their IDE the exact instructions and tools it needs to write the integration code for them.
The solution is the Model Context Protocol (MCP).
Why MCP?
Before MCP, if someone wanted their AI agent to write an integration for your API, the LLM had to guess the endpoints based on its outdated training data, or the developer had to manually paste your docs into the chat window.
MCP changes this entirely. It lets you write a small local server that exposes native "tools" straight to the LLM's context window.
I built an MCP server for Tabu. When a developer adds it to their AI IDE, their agent gets three superpowers:
It knows exactly what the API does and has the boilerplate Node.js/cURL code ready to drop into the project.
It can test the API live, sending real images and receiving real JSON responses, so it knows exactly how to parse the
safeboolean.It proactively guides the developer. Because I inject a meta-prompt into the MCP response, the agent will automatically ask the developer: "Would you also like me to set up a Webhook endpoint so your admins can manually override decisions?" The developer doesn't even need to know the feature exists.
The developer just types: "Add image moderation to my upload route using Tabu", and the agent writes perfect, tested integration code on the first try.
The Architecture
My core API runs on Node.js and Express, using an air-gapped instance of TensorFlow.js to classify images.
To build the MCP server, I used the official @modelcontextprotocol/sdk to write a single, lightweight Node.js script that acts as a proxy.
How it works
Here is the flow when a developer uses it:
Bootup: The developer adds the
tabu-mcppackage to their IDE's MCP configuration, passing theirTABU_API_KEYas an environment variable.Tool Discovery: The script talks to the agent over standard input/output (STDIO). It registers two tools:
get_integration_guideandmoderate_media.Execution: When the developer prompts their IDE to integrate Tabu, the agent calls
get_integration_guideto grab the boilerplate code and docs. To ensure the code handles the response correctly, it can callmoderate_mediato ping the API live.Code Generation: The agent writes the complete, working integration directly into the developer's codebase.
Wrapping up
If you are building an API, developer experience is everything. By providing an MCP server, you eliminate the friction of reading docs and writing boilerplate. You let the developer's agent do the heavy lifting, getting them to a successful API call in seconds instead of hours.
If you are looking for an easy way to moderate user-uploaded images, just add npx -y tabu-mcp@latest to your MCP config and let your AI agent write the integration for you.
Hey everyone,
A few months ago, I tried to launch an app with user-generated content (it was coaching AI btw). Apple rejected it. They cited Guideline 1.2, which requires a system to filter objectionable material.
I looked for an API to handle this. I found AWS Rekognition and Hive. They are built for huge companies. They have opaque pricing, complex SDKs, and take hours to set up. I just wanted a simple boolean response (safe: true) to pass my app review.
So I built Tabu. It is an image and video moderation API made for indie developers.
Here is how it works:
It uses TensorFlow.js and MobileNetV2.
It runs on a $6 DigitalOcean Droplet.
It processes images entirely in memory. It deletes them instantly. Nothing gets saved.
I added a React dashboard so you have a "human review" queue if an image gets flagged.
I am looking for some feedback from other solo founders or developers. If you are building an app with image uploads, I would love to know if the integration steps in my docs make sense.
The free tier includes 5,000 requests per month. You do not need a credit card.
If your app has user uploads, you'll eventually need to filter out NSFW content or Apple will reject your next update.
I looked around for a solution, but tools like AWS and Hive are built for big companies. They want you to talk to sales and sign enterprise contracts. That's way too heavy for an indie project.
I decided to just build a simpler alternative. Tabu (tabushield.com) is an API that filters explicit images and videos. It takes maybe 5 minutes to set up and actually has a free tier.
I'm a solo founder and I just put the site, API and dashboard up this week. I'd love to know what this community thinks of the landing page and pricing. Does it actually make sense to you?
Like
3 Comments
3 Comments
-
1
I am BRAND NEW at this stuff I was just looking for some side income . I also had some thoughts along a launching something along the lines of what you're talking about I definitely think there's possibilities here and actually and underserved audience
-
1
I went to I think it was like lovable or something like that or maybe it Claude anyway they said oh well we can't help you build a website like that so I don't know I'm not really interested in anything like hardcore or anything like that really
-
1
Hi out there to everybody too I'm glad to be in your community today and thank you for having me I don't know if I'm posting correctly please be patient and let me know if I'm not thank you
-
-
About
Tabu is an AI-powered content moderation API for startups. Filter NSFW images and videos in under 5 minutes with our drop-in API and built-in human review dashboard.



1 Comment
The MCP approach is interesting because it removes a very specific kind of friction.
Curious whether developers actually perceive the integration as meaningfully easier, or whether the agent simply makes the same complexity less visible.