Mike Fluff
by mikefluff.com · remote · no sign-in to list tools · v1.1.0 · published by com.mikefluff
Answers from Mike Fluff Press books, the business diagnostic, AI-text check, call booking.
11 tools: 6 change things and 5 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things6Claude Code: ask: see these tools
- Only reads5Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http mikefluff https://www.mikefluff.com/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnrun_diagnostic
The server marks "run_diagnostic" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "run_diagnostic" says "run": a word for a change.
- Warncheck_text
The server marks "check_text" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
11 tools
Changes things 6Claude Code: ask
book_callSIDE EFFECT: books a real 30-minute video call in Mike Fluff's calendar, emails a confirmation with a calendar invite to the given address, alerts Mike, and records the booking as …Reads text others writeNo findings
Why it is in this group
- The name "book_call" says "call": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it SIDE EFFECT: books a real 30-minute video call in Mike Fluff's calendar, emails a confirmation with a calendar invite to the given address, alerts Mike, and records the booking as a lead. Only call this when the user has explicitly asked to book and chosen the time. "slot" must be one of the exact values returned by get_booking_slots. Name and email: either the ones the user gave for this purpose, or leave them out and the call is booked in the name of the person signed in with INITE ID (OAuth scope "mikefluff:booking"; without a token such a call is answered with HTTP 401 and the client is sent to sign in). Topics: diagnostic (general business consultation), automation (AI automation), compliance (privacy/GDPR/LGPD around AI systems), architect-mode (the one-day intensive). The confirmation email has a link to move or cancel. Limited to 3 bookings per hour per caller and 2 upcoming calls per email.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
- title: Book a call with Mike Fluff
buy_bookSIDE EFFECT, MAY SPEND MONEY: buys a Mike Fluff Press book for the person signed in with INITE ID.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it SIDE EFFECT, MAY SPEND MONEY: buys a Mike Fluff Press book for the person signed in with INITE ID. Books are bought into an INITE account (the reader unlocks paid chapters for the account that paid), so this needs the person: OAuth scope "mikefluff:purchase"; without a token it is answered with HTTP 401 and the client signs the person in. If the person has allowed this shop to charge their INITE wallet, the book is paid at once within the limit they set. If not, the result is one link for the person: there they pay this time and, if they like, allow such payments from now on. Failing both, a payment link (card, PIX). An agent signed in as itself (client_credentials, its own did:web) buys under its own account and pays the returned x402Url from its INITE wallet (pay tool at billing.inite.ai/mcp/wallet). If they already own the book it says so instead. Only call when the user has asked to buy this book.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
- title: Buy a book
buy_chapterSIDE EFFECT, MAY SPEND MONEY: buys one paid chapter of a Mike Fluff Press book, on its own, for whoever the token speaks for (OAuth scope "mikefluff:purchase"; without a token, HTT…Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it SIDE EFFECT, MAY SPEND MONEY: buys one paid chapter of a Mike Fluff Press book, on its own, for whoever the token speaks for (OAuth scope "mikefluff:purchase"; without a token, HTTP 401 and the client signs the person in). The chapter is then theirs to read on the site and whole through get_chapter_preview. Paid the same ways as buy_book: from the person's INITE wallet where they allowed this shop, else one link for them (wallet or card/PIX); an agent signed in as itself pays the returned x402Url from its own INITE wallet (pay tool at billing.inite.ai/mcp/wallet). Owning the book already includes every chapter. Get chapter ids from list_books. Only call when the user has asked to buy this chapter.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
- title: Buy one chapter
buy_courseSIDE EFFECT: opens a checkout for one of Mike Fluff's paid courses and records the user as a lead.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it SIDE EFFECT: opens a checkout for one of Mike Fluff's paid courses and records the user as a lead. Returns a payment link (billing's hosted page; works without signing in) and the price in the currency for the locale. Nothing is charged until the user pays on that page; after payment the course access link is emailed to the given address. Courses: parasites (parasites-course), freeMini (vibe-coding-course), contentFactory (content-factory-course). Only call when the user has asked to buy and given the email the course should go to — or leave the email out to use the account of the person signed in with INITE ID (OAuth scope "mikefluff:purchase"; with that scope the course is also attached to their account). Give the user the payment link; do not try to pay.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
- title: Start buying a course
check_textRun the writer linter behind mikefluff.com/ai-text-checker on a text: it flags the stock phrases and rhythms readers recognise as machine-written ("in today's fast-paced world", "i…1 finding
Why it is in this group
- The description's first verb is "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "check_text" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.
Description, as the server wrote it Run the writer linter behind mikefluff.com/ai-text-checker on a text: it flags the stock phrases and rhythms readers recognise as machine-written ("in today's fast-paced world", "it's important to note", em-dash habits in Russian) and returns a density verdict (clean / borderline / neuroslop suspected), a pass/fail gate for hard bans, and each hit with line, column, category and the matched words. English and Russian only. Up to 20000 characters. It judges the text, not who wrote it. Read-only: the text is not stored.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Check a text for AI-sounding phrases
run_diagnosticThe self-diagnostic from mikefluff.com/diagnostic: ten multiple-choice questions about how a business runs, scored into one of five named operational conditions (e.g.1 finding
Why it is in this group
- The name "run_diagnostic" says "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "run_diagnostic" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "run_diagnostic" says "run": a word for a change.
Description, as the server wrote it The self-diagnostic from mikefluff.com/diagnostic: ten multiple-choice questions about how a business runs, scored into one of five named operational conditions (e.g. "one queue, one person", "manual conveyor", "SaaS obesity") with a severity, an annual cost estimate built only from the user's own answers, and a recommended next step with its URL. Call it with answers = {} first to get the questionnaire (question ids, option ids, which questions are conditional), ask the user, then call again with {questionId: optionId} (an array of option ids for multiple-choice questions). Read-only: nothing is stored or mailed.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Run the business diagnostic
Only reads 5Claude Code: allow
get_answerFetch one published answer by its id (from search_answers): the full direct answer, the explanatory sections, the FAQ, the chapters and experiments it cites and related answers, al…No findings
Why it is in this group
- The name "get_answer" says "get": a word for reading.
Description, as the server wrote it Fetch one published answer by its id (from search_answers): the full direct answer, the explanatory sections, the FAQ, the chapters and experiments it cites and related answers, all with canonical URLs. Use after search_answers when the lead answer is not enough. Read-only.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Get one answer in full
get_booking_slotsList the open 30-minute slots for a free video call with Mike Fluff (business diagnosis, AI automation, compliance, Architect Mode), as ISO 8601 UTC start times.No findings
Why it is in this group
- The name "get_booking_slots" says "get": a word for reading.
Description, as the server wrote it List the open 30-minute slots for a free video call with Mike Fluff (business diagnosis, AI automation, compliance, Architect Mode), as ISO 8601 UTC start times. Use before book_call; pass one of these exact values as its "slot". Read-only.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Free times for a call with Mike Fluff
get_chapter_previewReturn the text of one chapter.No findings
Why it is in this group
- The name "get_chapter_preview" says "get": a word for reading.
Description, as the server wrote it Return the text of one chapter. Free chapters come back in full. A paid chapter comes back whole to an account that owns it (the book, or the chapter bought with buy_chapter) when the call carries its token; to anybody else as its public lead-in only (about a fifth of the chapter), with what the chapter costs on its own. Get book slugs and chapter ids from list_books. Read-only.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Read a chapter (free) or its opening (paid)
list_booksList the books by Mike Fluff Press with title, subtitle, synopsis, status, canonical book page URL and the table of contents (which chapters are free to read).Reads private dataReads text others writeNo findings
Why it is in this group
- The name "list_books" says "list": a word for reading.
What it can reach
- private-dataThe description's first sentence says "list" and "table": it reads databases.
- untrusted-inputThe description's first sentence says "list" and "url": it reads web pages, which anyone can write.
Description, as the server wrote it List the books by Mike Fluff Press with title, subtitle, synopsis, status, canonical book page URL and the table of contents (which chapters are free to read). Use it to answer "what has Mike Fluff written" or before get_chapter_preview. Read-only.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: List the books
search_answersSearch the answers Mike Fluff Press publishes (questions about crypto history, Bitcoin, stablecoins, fraud, AI agents, software after AI: "what happened to FTX", "who is Satoshi", …No findings
Why it is in this group
- The name "search_answers" says "search": a word for reading.
Description, as the server wrote it Search the answers Mike Fluff Press publishes (questions about crypto history, Bitcoin, stablecoins, fraud, AI agents, software after AI: "what happened to FTX", "who is Satoshi", "what is MCP") and the interactive experiments from the books. Use this first whenever the user asks a factual question these books cover. Returns up to 8 hits, each with the title, a 40-60 word lead answer you can quote, the canonical URL, the book, and the chapter it draws on. Read-only.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Search answers and experiments
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.
- Reads private data1
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write5
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out0
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Install
Pinned to version 1.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http mikefluff https://www.mikefluff.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__mikefluff__search_answers",
"mcp__mikefluff__get_answer",
"mcp__mikefluff__list_books",
"mcp__mikefluff__get_chapter_preview",
"mcp__mikefluff__get_booking_slots"
],
"ask": [
"mcp__mikefluff__run_diagnostic",
"mcp__mikefluff__check_text",
"mcp__mikefluff__book_call",
"mcp__mikefluff__buy_course",
"mcp__mikefluff__buy_book",
"mcp__mikefluff__buy_chapter"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as mikefluff. Review it before you use it.
Capability tags behind 5 rules
- mcp__mikefluff__list_books private-data, untrusted-input
- mcp__mikefluff__book_call untrusted-input
- mcp__mikefluff__buy_course untrusted-input
- mcp__mikefluff__buy_book untrusted-input
- mcp__mikefluff__buy_chapter untrusted-input