Skip to main content
AllMCPs
BrowseBestCategoriesStackCompareToolsGuidesBlog
Log in Submit MCP

Stay in the loop

Get new MCP servers and top picks in your inbox.

AllMCPs

The open directory for discovering and installing Model Context Protocol servers.

AllMCPs on GitHub (opens in a new tab)
Launched onTiny Startupstinystartups.com
Explore
  • Browse servers
  • Best MCP servers
  • Categories
  • MCP clients
  • Agent prompts
  • Stack Builder
  • Compare servers
  • Random discovery New
  • Submit a server
  • Pricing & Boost Boost
Learn
  • Guides hub
  • What is MCP?
  • Install guide
  • Build an MCP server
  • Deploy an MCP server
  • Security guide
  • Troubleshooting
  • MCP for SEO & AEO
  • Protocol versioning
  • Transports: stdio vs HTTP
  • State of MCP (stats)
  • Blog & updates
Tools
  • All developer tools
  • Config generator
  • Config validator
  • Config auditor
  • MCP playground
  • Token calculator
  • OpenAPI → MCP
  • Badge generator
For agents
  • REST API docs
  • Trust & traffic Live
  • Remote MCP server SSE ↗ (opens in a new tab)
  • llms.txt ↗ (opens in a new tab)
  • Catalog JSON ↗ (opens in a new tab)
Company
  • About
  • Advertise Sponsor
  • Contact
  • GitHub ↗ (opens in a new tab)
  • Terms
  • Privacy
AllMCPs VerifiedAllMCPs VerifiedFeatured on Nick LaunchesFeatured on Nick LaunchesLaunch Llama NewsletterLaunch Llama NewsletterVerified DR - allmcps.comVerified DR - allmcps.comFeatured on SaaSGrowFeatured on SaaSGrowFeatured on Twelve ToolsFeatured on Twelve ToolsFeatured on Saaspa.geFeatured on Saaspa.geFeatured on Findly.toolsFeatured on Findly.toolsFeatured on Startup FameFeatured on Startup FameFeatured on LaunchKiwiFeatured on LaunchKiwiFeatured on ScrollLaunchFeatured on ScrollLaunchFeatured on DailyPingsFeatured on DailyPingsFazier badgeFazier badgeFeatured on NewTool.siteFeatured on NewTool.siteFeatured on saasfame.comFeatured on saasfame.comDR Checker - Domain RatingDR Checker - Domain RatingListed on Turbo0Listed on Turbo0Launched on LaunchBoard - Product Launch PlatformLaunched on LaunchBoard - Product Launch PlatformList on SimilarlabsList on Similarlabshttps://codetrendy.comhttps://codetrendy.comListed on DevTool.ioFeatured on BuildlistFeatured on BuildlistLaunched on Tiny StartupsFeatured on ShowMeBestAIFeatured on ShowMeBestAIFind us on LaunchZoneFind us on LaunchZoneAllMCPs VerifiedAllMCPs VerifiedFeatured on Nick LaunchesFeatured on Nick LaunchesLaunch Llama NewsletterLaunch Llama NewsletterVerified DR - allmcps.comVerified DR - allmcps.comFeatured on SaaSGrowFeatured on SaaSGrowFeatured on Twelve ToolsFeatured on Twelve ToolsFeatured on Saaspa.geFeatured on Saaspa.geFeatured on Findly.toolsFeatured on Findly.toolsFeatured on Startup FameFeatured on Startup FameFeatured on LaunchKiwiFeatured on LaunchKiwiFeatured on ScrollLaunchFeatured on ScrollLaunchFeatured on DailyPingsFeatured on DailyPingsFazier badgeFazier badgeFeatured on NewTool.siteFeatured on NewTool.siteFeatured on saasfame.comFeatured on saasfame.comDR Checker - Domain RatingDR Checker - Domain RatingListed on Turbo0Listed on Turbo0Launched on LaunchBoard - Product Launch PlatformLaunched on LaunchBoard - Product Launch PlatformList on SimilarlabsList on Similarlabshttps://codetrendy.comhttps://codetrendy.comListed on DevTool.ioFeatured on BuildlistFeatured on BuildlistLaunched on Tiny StartupsFeatured on ShowMeBestAIFeatured on ShowMeBestAIFind us on LaunchZoneFind us on LaunchZone
© 2026 Jackalope Digital LLC. All rights reserved.
  1. Home
  2. Browse
  3. Blender MCP
  4. vs Ao3 MCP
Side-by-Side Model Context Protocol Comparison

Blender MCP vs Ao3 MCP

In-depth architectural comparison of the Blender MCP and Ao3 MCP MCP servers. Compare execution transports, security boundaries, tool capabilities, quality scores, and ready-to-paste client installation snippets for Claude, Cursor, Windsurf, and VS Code.

At a Glance & Executive Verdict

Blender MCP
Art & Culture · Local stdio
Quality: 65/100 (Great) | Auth: No auth required
Ao3 MCP
Art & Culture · Local stdio
Quality: 59/100 (Good) | Auth: API Key required
Verdict Summary: Choose Blender MCP if you need specialized Art & Culture tools running via a local process. Choose Ao3 MCP if your workspace requires Art & Culture integration with local subprocess execution. Both servers can be configured concurrently in your client's mcpServers manifest.

Which MCP Server Should You Choose?

Blender MCP logo

Choose Blender MCP when:

  • You need dedicated capabilities in the Art & Culture domain.
  • You prefer local stdio subprocess transport architecture.
  • Your security boundary fits: No auth required (Free / Open Source).
  • Primary tools included: get_addon_status, disable_telemetry, get_scene_info.
Explore Blender MCP Details
Ao3 MCP logo

Choose Ao3 MCP when:

  • You need dedicated capabilities in the Art & Culture domain.
  • You prefer local stdio subprocess transport architecture.
  • Your security boundary fits: API Key required (Free / Open Source).
  • You have access to required keys: GEMINI_API_KEY, GEMINI_MODEL, GEMINI_MODEL_BACKUP, AO3_MIN_INTERVAL.
  • Primary tools included: search_works, find_tags, get_work.
Explore Ao3 MCP Details

Feature & Specification Comparison

Specification
Blender MCP logo
Blender MCP
ahujasid
Art & Culture
Ao3 MCP logo
Ao3 MCP
ArturLys
Art & Culture
SummaryOpen-source MCP to use Blender with any LLMSearch the Archive of Our Own (AO3) and delegate full-fic reading to a secondary model (Gemini), so the agent recommends from the actual text, not the author's blurb. pip install ao3-mcp
Category & ScopeArt & Culture

Tools & Capabilities Breakdown

Blender MCP Tools (32)

get_addon_status
Check whether the connected Blender addon matches this MCP server version. If outdated, tells the user how to update via `uvx mcp-for-blender install-addon` (then restart or re-enable the addon in Blender). `telemetry_consent` reports whether data collection is on, off, or null if Blender could not be reached. Use it to answer telemetry status questions.
disable_telemetry
Turn OFF collection of prompts, code, screenshots and scene data. Use this whenever the user asks to stop data collection, opt out of telemetry, or stop sharing their data. Takes effect immediately. This tool can only turn collection OFF. Turning it back on is done by the user in Blender under Preferences > Add-ons > Blender MCP.
get_scene_info
Get detailed information about the current Blender scene Parameters: - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged. Required.
get_object_info

Ready-to-Paste Client Configurations

Paste either (or both) of these JSON server blocks into your client config file (e.g. claude_desktop_config.json or ~/.cursor/mcp.json).

Blender MCP Configuration
mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "ahujasid-blender-mcp": {
      "command": "uvx",
      "args": [
        "blender-mcp"
      ]
    }
  }
}
Ao3 MCP Configuration
mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "arturlys-ao3-mcp": {
      "command": "uvx",
      "args": [
        "ao3-mcp"
      ],
      "env": {
        "GEMINI_API_KEY": "YOUR_GEMINI_API_KEY_HERE",
        "GEMINI_MODEL": "YOUR_GEMINI_MODEL_HERE",
        "GEMINI_MODEL_BACKUP": "YOUR_GEMINI_MODEL_BACKUP_HERE",
        "AO3_MIN_INTERVAL": "YOUR_AO3_MIN_INTERVAL_HERE"
      }
    }
  }
}

Frequently Asked Questions

Blender MCP is categorized under Art & Culture and uses a local stdio subprocess. In contrast, Ao3 MCP belongs to Art & Culture using local stdio subprocess. Select Blender MCP when you need capabilities focused on art & culture and Ao3 MCP when you require tools for art & culture.

More alternatives to Blender MCPMore alternatives to Ao3 MCPArt & Culture category hub

Related MCP Server Comparisons

Popular comparisons with Blender MCP

  • MeiGen AI Design MCP logoBlender MCP vs MeiGen AI Design MCP
  • Davinci Resolve MCP logoBlender MCP vs Davinci Resolve MCP
  • Anilist MCP logoBlender MCP vs Anilist MCP
  • Discogs MCP Server logoBlender MCP vs Discogs MCP Server

Popular comparisons with Ao3 MCP

Art & Culture
Quality signal65/100 (Great)59/100 (Good)
Transport ProtocolLocal Subprocess (stdio)Local Subprocess (stdio)
Auth RequirementNo auth requiredAPI Key required
Pricing ModelFree / Open SourceFree / Open Source
Required Env VarsNone required
GEMINI_API_KEYGEMINI_MODELGEMINI_MODEL_BACKUPAO3_MIN_INTERVAL
Compatible Clients
Claude DesktopCursorWindsurfClineVS Code
Claude DesktopCursorWindsurfClineVS Code
Install path signaluvx · highuvx · high
Engagement & Health 3 views 0 copies 0 upvotes 29,097 stars 8 views 3 copies 0 upvotes 1 stars
Verified / OfficialCommunity ListingCommunity Listing
Open full listingView Blender MCP ListingView Ao3 MCP Listing
Get detailed information about a specific object in the Blender scene. Parameters: - object_name: The name of the object to get information about - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged.
get_viewport_screenshot
Capture a screenshot of the current Blender 3D viewport. Parameters: - max_size: Maximum size in pixels for the largest dimension (default: 800) - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged. Returns the screenshot as an Image.
execute_blender_code
Execute arbitrary Python code in Blender. Make sure to do it step-by-step by breaking it into smaller chunks. Parameters: - code: The Python code to execute - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged.
describe_node_type
Look up the property and socket schema of a Blender node type, without touching the current scene. Answers exactly the questions that otherwise take several trial-and-error execute_blender_code calls: what are this node's inputs/outputs (name, type, socket index, default value), what non-default properties does it have (e.g. data_type, blend_type, sky_type), and what enum values are valid for each. Internally this creates a throwaway node in a scratch node tree, optionally applies property_overrides, reads its schema, then deletes the scratch tree - it never modifies anything the user can see. Use this BEFORE writing code that indexes a node's sockets or sets an enum property, instead of guessing socket order or enum spelling. Parameters: - bl_idname: The node's bl_idname, e.g. "ShaderNodeMix", "ShaderNodeTexSky", "ShaderNodeBsdfPrincipled". - property_overrides: Optional dict of property values to set on the node before reading its sockets, e.g. {"data_type": "RGBA"} for a Mix node. Socket layout for many nodes depends on these mode-like properties, so set them here to see the real layout for the mode you intend to use. - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged.
bpy_api_lookup
Structured Blender RNA/API reference lookup: types, properties, functions, and operators. Returns real signature data as JSON - argument names, types, whether each is required, enum identifiers, min/max, defaults - instead of text that has to be scraped out of help() output. Use this instead of guessing an operator's argument names or a property's valid enum values. Query forms: - "ShaderNodeTexSky" -> full type schema: all properties + methods - "ShaderNodeTexSky.sky_type" -> one property's type, enum items, default - "Object.ray_cast" -> one method's parameters and return values - "bpy.ops.mesh.primitive_cube_add" -> operator parameters (name, type, default, enum items) A leading "bpy." / "bpy.types." is optional and stripped automatically. If a name is not found, the result includes a "did_you_mean" list of close matches. Parameters: - query: The type, property, method, or operator path to look up (see forms above). - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged.
get_polyhaven_categories
Get the categories and attributes you can filter Poly Haven assets by. Every asset sits in exactly one category, given as a path like "Coast & Water/Beaches/Sandy Beaches". Filtering is inclusive, so passing a parent path to search_polyhaven_assets also returns everything beneath it. Categories describe what an asset IS. Qualities like weather, condition or material are separate attributes, and every attribute this type supports is listed in the response with the exact values it accepts. Pass those to search_polyhaven_assets's `attributes`. Parameters: - asset_type: hdris, textures, models, or all. Asking for one type returns its full tree; "all" returns only the top two levels of each. - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged.
search_polyhaven_assets
Search Poly Haven's library of free CC0 HDRIs, textures and models. Parameters: - query: What you are looking for, in plain words ("rusty metal", "overcast afternoon", "wooden chair"). Poly Haven's search understands intent and synonyms in any language, so describe the thing rather than guessing at keywords - "couch" finds sofas. Leave it out to browse the most downloaded assets instead. - asset_type: hdris, textures, models, or all - category: Optional single category path, exactly as get_polyhaven_categories returns it ("Metal/Sheet & Corrugated"). Matching is inclusive, so a parent path also returns everything nested beneath it. - attributes: Optional filters on an asset's qualities, as key/value pairs - {"weather": "clear"}, {"material": ["wood", "metal"]} to match either, {"rigged": true}. Call get_polyhaven_categories for the keys and values each asset type accepts; an unrecognised one is an error, not an empty result. - min_size_m: Optional floor on an asset's real-world size, in metres. A texture covers a fixed real-world area, so a 0.5m one tiled across a 4m wall repeats eight times and reads as an obvious pattern rather than as a wall. Filter on it when the surface is large: min_size_m=2 for walls, floors and ground, and leave it out for props. Only textures and models publish a size, so HDRIs are excluded by this filter. - limit: How many results to return (default 20, maximum 50) - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged. Results are returned in ranked order, most relevant first. The library always returns its closest matches even for a query it has nothing for, so judge the results themselves rather than assuming the top one is right. Two things worth reading in the results before picking one. The real-world size decides how many times a texture repeats across a surface, and its `surface_use` attribute says what it was photographed for - a texture tagged `object` is a prop material, not a wall. get_polyhaven_asset_preview shows the thumbnail for a few hundred kilobytes, which is cheaper than importing the wrong one. Returns each asset's id, name, type, author, category, tags and page URL.
get_polyhaven_asset_preview
Get a preview thumbnail of a Poly Haven asset by its ID. Use this to check an asset looks right before downloading it. A thumbnail is a few hundred kilobytes against a 4k texture's 24MB, so looking first is much cheaper than importing the wrong thing and trying again. Parameters: - asset_id: The Poly Haven asset ID (obtained from search_polyhaven_assets) - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged. Returns the asset's thumbnail as an Image.
download_polyhaven_asset
Download and import a Polyhaven asset into Blender. Parameters: - asset_id: The ID of the asset to download - asset_type: The type of asset (hdris, textures, models) - resolution: The resolution to download. Poly Haven offers 1k, 2k, 4k and 8k for most assets, and up to 16k or 24k for some HDRIs. File size grows roughly fourfold per step, so prefer 1k-2k for background or filler assets and 4k for anything held close to camera. If a resolution is unavailable, the error names the ones that are. - file_format: Optional. hdr (default) or exr for HDRIs; jpg (default), png or exr for textures. Models are always imported from .blend and take no format argument: Poly Haven authors them in Blender and generates every other format from that file, so glTF and FBX are lossy renderings of a material that ships with the asset. - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged. Returns a message indicating success or failure.
+20 more tools listed on main page

Ao3 MCP Tools (5)

search_works
Search AO3 for works. All filters optional; combine freely. RECOMMENDATION WORKFLOW — reading before recommending is MANDATORY, and the reading is done by a SEPARATE model, not you. Blurbs are author-written ads; never recommend, rank, or summarize a fic from its blurb alone. Cast a wide net (pages=2-3, i.e. 40-60 blurbs), shortlist the promising ones, then hand the top ≤20 ids to `read_works` — a second AI reads them and reports back. Recommend ONLY fics that came back from `read_works`. Do not read fic text yourself; delegating it is the entire point of this server. SEARCH STRATEGY — searching is cheap and reading is delegated, so the winning move is always to OVER-FETCH and let `read_works` brute-force the shortlist, never to craft one perfect narrow query. Filters multiply: each one you add cuts the pool, and stacked filters routinely cut it to zero. USE WILDCARDS LIBERALLY — abuse them. A `*` matches any run of characters and works in EVERY name field (`fandom`, `relationship`, `character`, `tags`) and in `query`. Wrapping a term in stars is the single best defence against AO3's exact-canonical-name trap: `fandom="Genshin Impact (Video Game)"` returns ZERO (the canonical tag is actually "原神 | Genshin Impact (Video Game)"), but `fandom="*Genshin Impact*"` returns the whole fandom. Likewise `relationship="*Kazuha*Scaramouche*"`, `tags="*Enemies to Lovers*"`. When you don't know the exact canonical name — which is most of the time — reach for a wildcard first instead of guessing the literal string. IF YOU GET 0 (or few) RESULTS, that is almost always your query being too narrow, NOT the content missing from AO3. Recover instead of giving up: - FIRST, wildcard the name fields (`*Genshin Impact*`). This fixes the most common cause — an exact-match field that didn't match the canonical tag — in one retry, without a separate `find_tags` round-trip. - Still unsure of a name? `find_tags` resolves it, or move the idea into `query` as free text (fuzzy, no canonical spelling needed). - Drop filters one at a time and retry: `word_count` first, then `complete_only`, then `rating`. Re-add only what the user insisted on. - Concepts don't need to be tags at all: "slow burn rivals in a bakery" works fine as free-text `query` even if no such tag exists. - Still thin? Search the broad version (fandom + category, sort by kudos), fetch 2-3 pages, and let the blurbs + `read_works` do the filtering. A human reader has to search narrowly because they can only read a few fics; you can read twenty at once, so breadth costs you nothing. Results show numeric work ids, not URLs. When relaying a work to the user, build the link yourself: https://archiveofourown.org/works/{id} Each result shows a kudos-to-hits ratio (k/h) — AO3's most honest quality proxy, since kudos are one-per-reader but hits count every visit. Compare it only within similar works: multi-chapter fics accumulate hits on every chapter visit, so long WIPs run structurally lower ratios than one-shots. Args: query: free-text search. Supports AO3's full operator syntax (case-sensitive, space after colon required where shown): `"exact phrase"`, `AND` / `OR` / `NOT`, `-term` to exclude; `words>10000`, `words:1000-5000`, `kudos>500` (same for hits/ comments/bookmarks); `sort:kudos`, `sort:hits`, `sort:>posted` (oldest first); `otp: true` (exactly one ship, no side pairings); `creators: username` / `-creators: username`; `summary: "phrase"`; `expected_number_of_chapters: 1` (one-shots only); `series.title: *` (part of a series); `language_id: en`. Also supports `*` wildcards, e.g. `*coffee shop*`. ⚠️ query is a FULL-TEXT match on the fic body, AND'd with every other filter — so it narrows HARD. Do NOT stuff mood/concept synonyms here ("nuzzle OR forehead kiss OR won't let go"): that demands the prose literally contain one of those strings on top of your tag/fandom filters, and routinely collapses a healthy 60-result search to 0. Concepts belong in `tags` (wildcarded), not here. Use query for author names, quoted title/summary phrases, or the numeric operators above — leave it EMPTY when a tag already covers the vibe. title: words in the work title. author: author/creator name. fandom: fandom name, e.g. "Naruto" (comma-separate several). Exact canonical match — but `*` wildcards work here: prefer "*Genshin Impact*" over the literal name to survive canonical tags with prefixes/aliases (e.g. "原神 | Genshin Impact (Video Game)"). relationship: ship tag. Format: "A/B" romantic, "A & B" platonic, canonical name order, e.g. "Kakashi Hatake/Iruka Umino". Wildcards work: "*Kazuha*Scaramouche*" beats guessing the exact tag order. character: character name(s), comma-separated. Wildcards work here too. tags: freeform tags, comma-separated, EXACT canonical spelling (use find_tags to resolve, or wildcard it: "*Enemies to Lovers*"). Popular canonical tags: Fluff; Angst; Hurt/Comfort; Emotional Hurt/Comfort; Angst with a Happy Ending; Hurt No Comfort; Enemies to Lovers; Friends to Lovers; Enemies to Friends to Lovers; Slow Burn; Mutual Pining; Fake/Pretend Relationship; There Was Only One Bed; Idiots in Love; Getting Together; Established Relationship; First Kiss; Found Family; Fix-It; Time Travel; Kid Fic; Domestic Fluff; Tooth-Rotting Fluff; Crack; Crack Treated Seriously; 5+1 Things; POV Outsider; Soulmates; Smut; Plot What Plot/Porn Without Plot; Alpha/Beta/Omega Dynamics; Dead Dove: Do Not Eat; Canon Compliant; Post-Canon; Alternate Universe - Modern Setting; Alternate Universe - Canon Divergence; Alternate Universe - Coffee Shops & Cafés; Alternate Universe - College/University; Alternate Universe - Soulmates. rating: one of: general, teen, mature, explicit, not rated. categories: comma-separated relationship categories to include: F/F, F/M, Gen, M/M, Multi, Other. Empty = all. complete_only: only finished works. word_count: range like "10000-50000", ">5000" or "<20000". sort_by: relevance | kudos | hits | comments | bookmarks | words | date_updated | date_posted. page: which result page to start from (for paging through results). pages: result pages to fetch, 20 works each (1-5). For a targeted lookup 1 is enough; for a recommendation hunt fetch 2-3 pages (40-60 blurbs) so the read_works shortlist has real competition.
find_tags
Resolve fuzzy wording to canonical AO3 tag names (live autocomplete). Use before search_works when unsure of exact spelling — e.g. "coffee shop" resolves to "Alternate Universe - Coffee Shops & Cafés". Args: term: partial/fuzzy tag text, e.g. "enemies to", "coffee", "kakashi". kind: what to complete: tag | fandom | relationship | character.
get_work
Get the full metadata card for one work: tags, stats, summary, series info. Args: work_id: the numeric AO3 work id (from search results or a URL like archiveofourown.org/works/12345).
read_works
Have the mini reader (a separate AI) read full fics and report on each. Works for a single fic or up to 20 at once. You never receive fic text — only structured reader reports, one per work. The reader answers your query directly (anything works: "is the ending happy?", "how explicit is it?", "which of these should I read first?") plus gives a general digest of plot, characters, style, and content notes. When given several fics, it ends with a comparison section ranking them against your query. This is the ONLY approved way to read a fic. A separate model does the reading so a whole novel never touches your context. You MUST send fics here before you recommend, rank, summarize, or judge them — search blurbs are not enough, and reading raw text yourself defeats the entire point of this server. Shortlist from blurbs, read here, then recommend. Reading depth: a single-fic call sends the reader up to ~150k words (whole novels fit); in a batch each fic is capped at ~100k characters. If a long fic's report matters, read it alone. Batches that exceed the token budget are split internally, then a final reduce pass still produces ONE global comparison across the whole batch. Content refusals: the reader is Gemini, which has a non-configurable safety filter that occasionally refuses explicit or extreme fics — that fic's report comes back as "(mini reader returned no text …)". The server already retries once on the backup model, but the block is intermittent, so if a fic you care about is refused: read it ALONE (a single fic isn't dragged down by an extreme one sharing its batch), or just retry. In a mixed batch, one refused fic does not sink the others — their reports still return. Args: work_ids: 1-20 numeric AO3 work ids (from search results or URLs). query: the question to answer about each fic.
get_work_text
⚠️ NOT RECOMMENDED — escape hatch only. Returns the raw full text of ONE fic directly to you, bypassing the mini reader. Prefer `read_works` in almost every case. A fic can run 150k+ words; pulling that into your own context buries everything else, burns your tokens, and throws away the whole reason this server exists — delegating reading to a cheap second model. `read_works` hands you a structured report plus verbatim prose samples, which is enough to judge, compare, and recommend a fic without the fic ever entering your context. Only reach for this when you genuinely need exact wording a report can't carry — e.g. the user explicitly asks you to quote or close-read a specific passage. If you just want to know what a fic is like or whether it's good: use `read_works` instead. Args: work_id: the numeric AO3 work id. max_words: cap the text to the first N words (0 = whole fic). Set a limit to sample a fic's opening instead of dumping the entire thing into your context — a few thousand words is usually plenty to judge voice.
MCP Open Library logo
Ao3 MCP vs MCP Open Library
  • Gemini Image logoAo3 MCP vs Gemini Image
  • Ani MCP logoAo3 MCP vs Ani MCP
  • Anilist MCP logoAo3 MCP vs Anilist MCP