Skip to content

Razi Text Generation

by razikallayi · remote · no sign-in to list tools · v1.0.0 · published by GitHub user razikallayi

Text generation over MCP: prose, emails, blog outlines, SQL, humanizing, text diffs, fake data.

Changes · 6

7 tools: 6 change things and 1 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http razi-text https://www.razi.pro/api/mcp/text

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

7 tools

Changes things 6Claude Code: ask
  • draft_emailWrite a business email body from a short brief.No findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.
    Description, as the server wrote it
    Write a business email body from a short brief. Returns JSON { email, cached } containing the body only — no subject line, no recipient, and nothing is sent anywhere. Choose this over generate_text when the output should be a whole email; use humanize_text to rewrite an email you already drafted. Paid model call. Anonymous callers get 3 per hour per IP and are then refused with 401; signed-in callers get 15 per minute per IP. Length is capped at roughly 400 tokens. Identical briefs may return a cached draft.
  • generate_blog_outlineProduce a markdown heading structure for a blog post — title, introduction, numbered sections with subsections, conclusion and an FAQ block.No findings

    Why it is in this group

    • The name "generate_blog_outline" says "generate": a word for a change.
    Description, as the server wrote it
    Produce a markdown heading structure for a blog post — title, introduction, numbered sections with subsections, conclusion and an FAQ block. Returns JSON { outline } holding the markdown. It writes the skeleton only, not the article: use generate_text for body prose and humanize_text to rework text that already exists. Paid model call, capped at roughly 1,000 tokens, so a large section count yields thinner sections. 10 calls per minute per IP; identical requests may return a cached outline.
  • generate_fake_dataProduce placeholder person records for testing and fixtures.No findings

    Why it is in this group

    • The name "generate_fake_data" says "generate": a word for a change.
    Description, as the server wrote it
    Produce placeholder person records for testing and fixtures. Returns JSON { type, count, records } where records is an array of strings, or of objects when type is 'user'. The values are drawn from a fixed word list by index, so they are DETERMINISTIC: the same arguments always return the same records, and asking twice does not give you fresh data. Emails all use example.com and phone numbers all use the +1-555 reserved range. It fabricates people only — for lorem-style prose use generate_text.
  • generate_sqlTranslate a natural-language request into a SQL statement.No findings

    Why it is in this group

    • The name "generate_sql" says "generate": a word for a change.
    Description, as the server wrote it
    Translate a natural-language request into a SQL statement. Returns JSON { sql } containing the query text and nothing else — no validation report, no complexity score, and the query is never executed or checked against a real database. It has no knowledge of your schema beyond what the request states, so table and column names are guesses unless you supply them. Review before running, especially anything that writes. Paid model call. Anonymous callers get 3 per hour per IP and are then refused with 401; signed-in callers get 15 per minute per IP. Capped at roughly 500 tokens. Answers are cached, so the same request returns the same query.
  • generate_textGenerate filler prose — lorem ipsum, random copy or sentences — for mockups and placeholder content.No findings

    Why it is in this group

    • The name "generate_text" says "generate": a word for a change.
    Description, as the server wrote it
    Generate filler prose — lorem ipsum, random copy or sentences — for mockups and placeholder content. Returns JSON { text, provider, cached } with the blocks separated by newlines. A language model writes it, so it is a paid call and the output is approximate: type, length and count are phrased into the prompt rather than enforced, and the result will not match a requested character count exactly. For placeholder people (names, emails, addresses) use generate_fake_data, which is exact, free and deterministic. For a real email use draft_email, and to rework existing text use humanize_text. 15 calls per minute per IP; capped at roughly 1,500 tokens; identical requests may return a cached result.
  • humanize_textRewrite text you already have so it reads less like model output — fewer stock phrases, more contractions, varied sentence rhythm.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Rewrite text you already have so it reads less like model output — fewer stock phrases, more contractions, varied sentence rhythm. Returns JSON { humanizedText }. Meaning is meant to be preserved but wording is not: never use it on text that must stay verbatim, such as quotes, legal copy or code. Use generate_text to produce new prose from a prompt and draft_email for a whole email; this one only transforms text it is given. Requires a signed-in razi.pro account — an anonymous call is rejected with 401. Paid model call; input capped at 10,000 characters and output at roughly 2,000 tokens, so long passages come back truncated. 30 calls per hour per account, and identical inputs may return a cached result.
Only reads 1Claude Code: allow
  • compare_textCompare two blocks of text line by line.No findings

    Why it is in this group

    • The name "compare_text" says "compare": a word for reading.
    Description, as the server wrote it
    Compare two blocks of text line by line. Returns JSON { identical, linesCompared, changeCount, changes[] }, where each change carries a 1-based line number, a change of 'added' | 'removed' | 'modified', and the before/after text. Lines are matched by POSITION, not by content: this is not an LCS diff, so inserting one line near the top reports every following line as modified. There is no character-level or word-level detail, and no unified-diff patch output. Whitespace and case are significant; \r\n and \n line endings are treated the same. Runs locally and costs nothing.

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.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http razi-text https://www.razi.pro/api/mcp/text

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__razi-text__compare_text"
    ],
    "ask": [
      "mcp__razi-text__humanize_text",
      "mcp__razi-text__draft_email",
      "mcp__razi-text__generate_blog_outline",
      "mcp__razi-text__generate_sql",
      "mcp__razi-text__generate_fake_data",
      "mcp__razi-text__generate_text"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as razi-text. Review it before you use it.