Skip to main content
Glama

Booru-Pictag-Get-MCP

⚠️ 纯 AI 生成声明 | Pure AI-Generated Notice — 详见 AIGC_NOTICE.md

An MCP server that searches booru image boards (Danbooru / AIBooru / e621 / Gelbooru / Rule34) and cleans their tags into ready-to-use AI-art prompts for Stable Diffusion / Illustrious / Pony / SDXL and any booru-tag-driven model.

This is a Python port + MCP integration of booru-prompt-gallery by Mexes-GM (MIT). The prompt-cleaning pipeline — tag extraction, multi-subject guard, smart tag combination, redundancy folding, category splitting, background modes — is a 1:1 port of the original TypeScript modules. Wrapped as 9 callable MCP tools (4 prompt-building + 5 Danbooru character/tag analysis tools, the latter ported from the former standalone Danbooru-Search-MCP so callers have a single booru MCP), no Web UI, no Supabase/Redis/Cloudflare deps. See AIGC_NOTICE.md for the full derivation & attribution.

Upstream

Mexes-GM/booru-prompt-gallery — TypeScript + Next.js 15 web app (MIT)

This repo

echo-xianyu/Booru-Pictag-Get-MCP — Python 3 + FastMCP server

License

MIT — original credit preserved, dual attribution. See LICENSE


Install

Option A — local path

Clone, then point uvx at the local checkout:

git clone https://github.com/echo-xianyu/Booru-Pictag-Get-MCP.git
cd Booru-Pictag-Get-MCP
uvx --from . booru-pictag-get-mcp

Option B — cloud / direct from GitHub

uvx --from "git+https://github.com/echo-xianyu/Booru-Pictag-Get-MCP" booru-pictag-get-mcp
uvx --from . --with h2 booru-pictag-get-mcp

e621's TLS stack frequently errors out on HTTP/1.1 keep-alive. The HTTP client auto-detects h2 and falls back to HTTP/1.1 if absent.


Related MCP server: civitai-mcp-ultimate

Configure (opencode / any MCP client)

{
  "mcp": {
    "booru-pictag-get": {
      "command": "uvx",
      // Option A — local:
      "args": ["--from", "E:\\MCP\\booru-pictag-get-mcp", "booru-pictag-get-mcp"],
      // Option B — cloud (no checkout on disk):
      // "args": ["--from", "git+https://github.com/echo-xianyu/Booru-Pictag-Get-MCP", "booru-pictag-get-mcp"],
      // HTTP/2 for e621 — prepend "--with", "h2" to args above.
      "environment": {
        "BOORU_DEFAULT_PROVIDER": "danbooru",
        "DANBOORU_USERNAME_APIKEY": "youruser:yourkey",    // optional, raises rate limit
        "GELBOORU_USER_ID": "<your_user_id>",             // required by Gelbooru since 2025-08
        "GELBOORU_API_KEY": "<your_api_key>",
        "RULE34_USER_ID": "<your_user_id>",               // required by Rule34 since 2025-08
        "RULE34_API_KEY": "<your_api_key>",
        "BOORU_MAX_TAGS_DANBOORU": "6"                     // optional: raise a provider's per-search tag cap (default: danbooru/aibooru/e621 = 2, gelbooru/rule34 = 10)
      }
    }
  }
}

API key policy (Aug 2025): Danbooru, AIBooru, and e621 work with no key. Gelbooru and Rule34 tightened auth and now require keys. Without them, those two providers return 401; the others keep working.

Multi-tag search limits: every provider caps how many plain tags one query may combine — danbooru / aibooru / e621 = 2 tags (per site docs; Danbooru Gold accounts get 6), gelbooru / rule34 = 10 tags (per their API docs' "any tag combination"). Metatags (order:rank, rating:safe, sort:score, …) do not count toward the limit. Exceeding the cap returns a clear error telling you how to fix it. To raise (or lower) a cap, set BOORU_MAX_TAGS_<PROVIDER> (e.g. BOORU_MAX_TAGS_DANBOORU=6 for a Gold account).


Tools

Prompt-building tools (multi-provider: Danbooru / AIBooru / e621 / Gelbooru / Rule34)

Tool

Use it for

search_prompts

Recommended for ready-to-use prompts. Search a booru tag → cleaned prompt + category split. One step.

build_prompt

Clean an already-known tag set (no network). Accepts raw booru format or comma-list.

search_posts

Raw post list (no cleaning). Inspect original tags before deciding how to process them.

autocomplete_tags

Turn a natural word, partial fragment, or non-English term (Chinese / Japanese other_names) into the canonical booru tag form. Alias + fuzzy + auto-correction aware. Call BEFORE search if unsure of a tag's spelling.

Danbooru character / tag analysis tools (Danbooru-only — ported from the former Danbooru-Search-MCP)

These answer a different question from the prompt builders above. The prompt builders return sample images each turned into a prompt; the analysis tools describe a known character/tag: visual-trait frequency tables, wiki text, tag-implication chains, costume variants.

Tool

Use it for

danbooru_get_character_profile

Recommended first for character lookups. One call returns: trait frequencies (e.g. halo/ahoge/pink_hair for Hoshino), wiki page + multilingual aliases, and bidirectional tag implications (source work + all costume variants). Auto-resolves misspellings/Chinese names.

danbooru_search_character

Just the visual-trait co-occurrence table for a character tag (with optional category filter and frequency threshold).

danbooru_lookup_tag

Find or verify a tag's exact canonical name. Alias/fuzzy/prefix matching; supports * wildcards; falls back to tags.json. Use to list e.g. all *_(blue_archive) character variants.

danbooru_get_wiki_page

Get the textual wiki page for a tag (DText stripped to readable plain text; exposes other_names).

danbooru_get_tag_implications

Get the implication chain for a tag (what does this tag auto-add). For reverse direction (costume variants implying this tag) use danbooru_get_character_profile instead.

Routing guidance

Each tool's description in tools/list carries full guidance, but the short version:

  • "What does character X look like?" / "list X's costume variants" / "describe tag Y"danbooru_get_character_profile (it aggregates everything). Do not route these to search_prompts — that returns sample-image prompts, not a description.

  • Find the canonical tag name for a Chinese/Japanese term or a misspellingautocomplete_tags (alias / fuzzy / other_names aware). search_prompts cannot do this.

  • Booru search is tag-based AND, not keyword search. Multi-tag queries are supported up to each provider's limit (danbooru/aibooru/e621 = 2, gelbooru/rule34 = 10), but prefer a single tag (hatsune_miku) over stacking (hatsune_miku blue_hair smile), which usually returns 0 posts.

  • Multi-word tags use underscore: blue_hair, never blue hair.

  • Don't write natural-language queries ("a girl with blue hair sitting in a classroom"); translate to booru tags first via autocomplete_tags.


Scope & design choices

  • Pure Python — no Supabase / Redis / Cloudflare / Vercel. Endpoints are public booru APIs; no proprietary backend.

  • Tag-conflict rules are off by default in the prompt pipeline (mirrors the original cleanPrompt.ts, which never called tag-conflicts.ts). The 180+ rules were authored assuming a single subject — enabling them by default would mangle legitimate multi-character prompts (e.g. 1girl+1boy sex scenes, smile+crying bittersweet scenes, long_hair+short_hair two-character shots). The resolver remains callable via booru_mcp.core.tag_conflicts.resolve_conflicts() for explicit opt-in.

  • optimize_tags has a multi-subject guard: when the prompt contains multi-character markers (2girls / 2boys / multiple_* / couple / group / duo …), it skips the hair-length / breast-size / eye-color "keep best per hierarchy" pick and the shared-noun tag combination — so two characters with different features survive intact.

  • Tag categories for Gelbooru/Rule34 come from a static data/tag_categories.json dictionary (one-shot dump from Danbooru's public tags.json, generated by scripts/dump_tag_categories.py) with a keyword-classifier fallback. No external database at runtime.

  • Tag-conflict rules are overridable via data/tag_conflicts_overrides.json (additive — overrides can only widen a built-in rule, never narrow it). See data/tag_conflicts_overrides.example.json. Audit current rules with python scripts/inspect_tag_conflicts.py --builtin.

  • Danbooru character/tag analysis tools are integrated. The five danbooru_get_character_profile / danbooru_search_character / danbooru_lookup_tag / danbooru_get_wiki_page / danbooru_get_tag_implications tools were originally a separate MCP (Danbooru-Search-MCP). They now live inside this package via core/danbooru_meta.py, all reusing the same HTTP client — so Danbooru Basic Auth uses the same env vars as the rest of this server (DANBOORU_USERNAME + DANBOORU_API_KEY, or the combined DANBOORU_USERNAME_APIKEY), not the old DANBOORU_LOGIN/DANBOORU_API_KEY pair. The standalone Danbooru-Search-MCP can be removed from your MCP client config once this version is installed.


Credits

Prompt-cleaning pipeline ported (1:1 line-for-line where possible) from booru-prompt-gallery by Mexes-GM (MIT). Original copyright preserved in LICENSE.

Python port + MCP server by echo-xianyu. The vast majority of the code was generated by AI (opencode + GLM-5.2); see AIGC_NOTICE.md for the full statement.

Available Tools

9 tools
autocomplete_tagsA

Autocomplete a tag fragment against the booru tag index, returning the canonical tag name with its post count and category. Use this to turn a natural word, partial fragment, or NON-ENGLISH term (Chinese/Japanese other_names like '星野', 'ホシノ') into the exact booru tag form before calling the search tools: user says → autocomplete query → pick returned name 'blue hair' → 'blue hair' → 'blue_hair' 'miku' → 'miku' → 'hatsune_miku' (or other) 'knight' → 'knight' → 'knight', 'female_knight', ... '星野'/'ホシノ' → '星野' → 'hoshino_(blue_archive)' (resolved via other_names + alias) 'amamya_kokoro' → 'amamya_kokoro' → 'amamiya_kokoro' (auto-corrected)

Behavior:

  • On Danbooru (default) the query goes through the /autocomplete.json?type=tag_query endpoint, which performs ALIAS resolution, FUZZY/prefix matching, and matches against a tag's other_names (so Chinese/Japanese/Romaji inputs resolve to the English canonical tag). Auto-correction: if the input is a misspelling that resolves to a single canonical tag, the first result is the correct one (and is_alias will mark alias entries).

  • You do NOT need a trailing '*'; the underlying endpoint treats the query as a tag-query prefix/fuzzy term.

  • Multi-word fragments are allowed (pass verbatim, e.g. 'long skirt' or 'long_skirt').

  • post_count lets you reject obscure tags (likely to return ~0 results in search_prompts). Prefer tags with post_count > 100.

  • category: 0=general, 1=artist, 3=copyright, 4=character, 5=meta — use this to choose between, e.g. 'blue_archive' (3, copyright) vs an artist named 'blue_archive' (1).

  • is_alias (bool) marks results that are alias entries; the name field already holds the canonical (non-alias) tag name to use.

  • For AIBooru (provider='aibooru') the Danbooru autocomplete index is used (since AIBooru mirrors its tag database); for rule34/gelbooru/e621 search use search_prompts/search_posts once you've found the tag name here (booru tags are largely cross-compatible).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
providerNodanbooru

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the behavioral disclosure burden. It explains underlying endpoint behavior (alias resolution, fuzzy/prefix matching, other_names lookup), auto-correction semantics, is_alias meaning, category meanings, post_count usage, and provider-specific quirks (AIBooru mirrors Danbooru, cross-compatibility). This greatly exceeds basic mutation/read safety disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence earns its place. It uses a compact example table, a clearly labeled Behavior list, and provider notes. It front-loads the core purpose and then layers details without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, no parameter descriptions, and no annotations. The description compensates by explaining return values (canonical name, post_count, category, is_alias) and workflow integration, covering edge cases like aliases and non-English terms. This is complete for a tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description must compensate. It richly explains the 'query' parameter (partial, non-English, misspelling, multi-word, no star needed) and partially explains 'provider' via examples (Danbooru default, AIBooru behavior, others). However, 'limit' is not explicitly described, and provider semantics are only given implicitly. Still, the high-value query guidance justifies a strong score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource+result: 'Autocomplete a tag fragment against the booru tag index, returning the canonical tag name with its post count and category.' It clearly distinguishes from sibling search tools by positioning it as a pre-search normalization step ('before calling the search tools').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance with concrete examples (natural words, fragments, non-English terms, misspellings) and alternatives: 'for rule34/gelbooru/e621 search use search_prompts/search_posts once you've found the tag name here.' It also gives operational tips like avoiding trailing '*', allowing multi-word fragments, and preferring tags with post_count > 100.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

build_promptA

Clean an already-known set of booru tags into a ready-to-use prompt. Use this when you already have a tag list (e.g. user pasted one or you received raw tags from search_posts) and only want the cleaned output. No network request is made.

tag_string accepts the SAME raw booru format that search_posts returns in raw_tags: space-separated, multi-word tags joined by UNDERSCORE ('1girl long_hair blue_eyes smile'). It also accepts a comma-separated list of already-cleaned tags ('1girl, long hair, blue eyes, smile') for idempotent re-cleaning. Do NOT pass natural-language sentences — split them into booru tags first (use autocomplete_tags to find the canonical form of each).

ParametersJSON Schema
NameRequiredDescriptionDefault
excludeNo
optimizeNo
meta_tagsNo
added_tagsNo
tag_stringYes
artist_tagsNo
character_tagsNo
copyright_tagsNo
background_modeNokeep
resolve_conflictsNo
include_charactersNo
include_copyrightsNo
simple_background_replacement_tagsNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses 'No network request is made' and 'idempotent re-cleaning,' which are useful behavioral details beyond the tool name. However, it does not describe the output format or any potential failure modes, so it is not maximally transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: the first sentence states the purpose, the second gives the use case, and the final block explains the input format with examples. Every sentence adds value, and it is appropriately front-loaded with the core need-to-know information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (13 parameters, no output schema, no annotations), the description provides enough to invoke it correctly for the main use case: cleaning an existing tag list. However, it leaves many optional parameters unexplained and does not describe the return value or expected output format, making it incomplete for a full understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description extensively documents the `tag_string` parameter with format examples, which is critical since schema coverage is 0%. However, it does not explain the other 12 parameters (e.g., `background_mode`, `resolve_conflicts`), leaving their semantics largely to inference from names and defaults. The coverage is insufficient for a low-coverage schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Clean an already-known set of booru tags into a ready-to-use prompt.' It also distinguishes from siblings by specifying when to use it (when you already have a tag list) and referencing related tools like `search_posts` and `autocomplete_tags`.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage guidance is provided: 'Use this when you already have a tag list... and only want the cleaned output.' It also gives a clear exclusion: 'Do NOT pass natural-language sentences... use `autocomplete_tags` to find the canonical form.' This directly tells the agent when to use this tool vs. alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

danbooru_get_character_profileA
Read-onlyIdempotent

RECOMMENDED FIRST CHOICE for any character/tag lookup.

Returns everything in one call: visual traits (co-occurrence frequencies), wiki description, multilingual aliases, and tag implications in both directions (what this tag implies, and what tags imply this one — e.g. all costume variants).

Aggregates these data sources in parallel:

  1. Related tags (co-occurrence frequencies) -> visual traits.

  2. Wiki page -> textual description and multilingual aliases.

  3. Tag implications (antecedent) -> tags auto-added by this tag.

  4. Tag implications (consequent) -> tags that auto-add this tag (e.g. costume variants like hoshino_(swimsuit)_(blue_archive) imply hoshino_(blue_archive)).

Each source degrades gracefully: a missing wiki page or empty implications do not fail the whole request.

When auto_resolve is enabled (default) and the queried tag does not exist on Danbooru, the tool corrects the tag name via autocomplete and rebuilds the profile. The correction is reported in resolved_from.

Args: tag (str): Character tag, e.g. 'hoshino_(blue_archive)'. Spaces are automatically converted to underscores; non-English queries (Chinese/Japanese other_names like '星野'/'ホシノ') are resolved via the autocomplete index. limit (int): Max characteristic tags (1-100, default 25). response_format (str): 'markdown' or 'json'. auto_resolve (bool): Auto-correct misspelled/non-canonical tags (default True).

Returns: str: Markdown profile or JSON. Error: "Error: ".

Examples: - "Give me everything about Hoshino from Blue Archive" -> tag='hoshino_(blue_archive)'. - "Full profile of Rem from Re:Zero" -> tag='rem_(re:zero)'.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYes
limitNo
auto_resolveNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description provides substantial behavioral details beyond annotations: parallel aggregation of four data sources, graceful degradation when a wiki page is missing, and auto_resolve behavior with resolved_from reporting. These are concrete, non-obvious behaviors that aid an agent in predicting tool outcomes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with a bolded lead, numbered data sources, clear Args/Returns/Examples sections, and no fluff. Every sentence adds value, and the most important guidance ('RECOMMENDED FIRST CHOICE') is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex aggregation tool, the description covers all key aspects: data sources, failure modes, auto-resolution, parameter details, return format, and examples. Since an output schema exists, the description need not enumerate return fields, but it goes beyond by explaining what 'resolved_from' means and how errors are formatted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero descriptions for its four parameters, so the description carries the full burden. It thoroughly explains each parameter (tag, limit, response_format, auto_resolve) with types, defaults, and behavior, including special handling for spaces and non-English queries. This fully compensates for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('returns') and resource ('complete character profile'), enumerating exactly what is included: visual traits, wiki description, multilingual aliases, and bidirectional tag implications. It is clearly differentiated from siblings by being labeled 'RECOMMENDED FIRST CHOICE' and 'Returns everything in one call.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'RECOMMENDED FIRST CHOICE for any character/tag lookup' and gives examples of when to invoke it. However, it does not explicitly mention exclusions or direct alternatives (e.g., when to use a lighter-weight sibling like danbooru_lookup_tag), so it falls just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

danbooru_get_tag_implicationsA
Read-onlyIdempotent

Get the implication chain for a tag (A -> B auto-adds).

For character costume variants, use danbooru_get_character_profile which queries both directions. This tool queries only the antecedent direction (what does this tag imply).

A Danbooru implication A -> B means every post tagged A is automatically also tagged B. This tool queries the antecedent direction (what does this tag imply). For the reverse direction (what tags imply this tag, e.g. costume variants), use danbooru_get_character_profile which queries both directions.

For characters this often encodes the source work (hoshino_(blue_archive) -> blue_archive) and structural traits. Not every character tag has implications, so an empty list is a valid result.

Args: tag (str): Antecedent tag, e.g. 'hoshino_(blue_archive)'. Spaces are automatically converted to underscores. limit (int): Max implications (1-1000, default 50). response_format (str): 'markdown' or 'json'.

Returns: str: Markdown table or JSON. Error: "Error: ".

Examples: - "What tags are auto-added when tagging Hoshino?" -> tag='hoshino_(blue_archive)'. - "Trace the implication chain of pink_hair" -> tag='pink_hair'.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYes
limitNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring readOnlyHint=true and idempotentHint=true, the description adds substantial behavioral context: the directionality of implication (antecedent only), the meaning of A -> B, the validity of empty lists, and details on response formats and error strings. It goes well beyond what annotations provide and does not contradict them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with intro, direction explanation, Args, Returns, and Examples. However, the antecedent-direction phrase is repeated nearly verbatim in two paragraphs, creating slight redundancy. Still, every sentence contributes functional value and the front-loaded purpose is clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 params, output schema present but not detailed), the description is complete: it clarifies directionality, provides contrasting alternatives, documents return formats and error handling, explains edge cases (empty list), and includes a worked example. No important aspect appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since schema description coverage is 0%, the description fully compensates by explaining each parameter: tag with auto-underscore conversion, limit with range and default (1-1000, default 50), and response_format with allowed values ('markdown' or 'json'). It also gives real examples, turning the raw schema into actionable guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action: 'Get the implication chain for a tag (A -> B auto-adds)' and immediately scopes it to the antecedent direction. It also distinguishes itself from the sibling 'danbooru_get_character_profile' by explicitly naming it as the alternative for reverse lookups, making the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: 'For character costume variants, use danbooru_get_character_profile which queries both directions. This tool queries only the antecedent direction' and repeats the reverse-direction alternative later. It also notes that an empty list is a valid result, which sets expectations for edge cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

danbooru_get_wiki_pageA
Read-onlyIdempotent

Get the textual wiki description for a tag.

For complete character info, use danbooru_get_character_profile instead. This tool retrieves the wiki page only. Wiki pages contain the canonical description, often listing a character's appearance, source work, voice actor, and alternate costumes.

The body is written in Danbooru DText markup; this tool converts it to readable plain text in markdown mode.

Args: title (str): Wiki title, e.g. 'hoshino_(blue_archive)'. Spaces are automatically converted to underscores. body_limit (int): Truncate body to N chars (0 = no limit). Useful because some wiki pages are very long. response_format (str): 'markdown' or 'json'.

Returns: str: Markdown or JSON. A 404 returns "Error: Resource not found. ...". Error: "Error: " otherwise.

Examples: - "Describe Hoshino from Blue Archive" -> title='hoshino_(blue_archive)'. - "What does the ahoge tag mean?" -> title='ahoge'.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
body_limitNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

While annotations already declare readOnly/idempotent/destructive false, the description adds meaningful behavioral context beyond those hints: it explains DText markup is converted to readable text, the body_limit truncation behavior, the response_format options, and exact error responses including 404 handling. This helps the agent predict tool behavior accurately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening purpose, a differentiation line, and labeled Args/Returns/Examples sections. Every sentence adds value: parameter details, error behavior, and usage examples are all necessary. Despite its length, it is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for a read-only lookup tool with one required parameter. It covers what the tool returns, how the parameters affect output, the error behavior, and provides two illustrative examples. Combined with the annotations, nothing essential is missing for correct selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameter descriptions (0% coverage), so the description carries the full burden. It explains 'title' with an example and the automatic underscore conversion, 'body_limit' with the 0=no-limit semantic and rationale, and 'response_format' with the two allowed values. This fully compensates for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action: 'Get the textual wiki description for a tag,' identifying the exact resource and verb. It further distinguishes itself from the sibling 'danbooru_get_character_profile' by explicitly stating this tool retrieves only the wiki page, not full character info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage guidance: use 'danbooru_get_character_profile' instead for complete character info, and this tool for the canonical wiki description. It also gives concrete examples showing when to query a character title versus a general tag like 'ahoge', making selection against alternatives clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

danbooru_lookup_tagA
Read-onlyIdempotent

Utility: find or verify a tag's exact canonical name.

NOT for character analysis — use danbooru_get_character_profile or danbooru_search_character for that. This tool is for finding/verifying tag names and listing related tag variants (e.g. all costume variants of a character).

Uses Danbooru's autocomplete endpoint as the primary search engine because it reliably resolves aliases (e.g. amamya_kokoro -> amamiya_kokoro) and performs prefix matching without requiring explicit * wildcards. The tags.json endpoint is used only as a fallback when autocomplete returns nothing.

Args: query (str): Name pattern. Wildcards (*) supported but often unnecessary — autocomplete does prefix/fuzzy matching, and also matches against the tag's other_names (so Chinese/Japanese queries resolve to the English canonical tag). category (str|None): Filter to one category: 'general', 'artist', 'copyright', 'character', or 'meta'. Omit for all categories. limit (int): Max results (1-200, default 25). order (str): 'count' (post count desc, default), 'name' (name asc), or 'date' (created desc). hide_empty (bool): Hide zero-post tags (default True). response_format (str): 'markdown' or 'json'. auto_resolve (bool): Fall back to tags.json if autocomplete returns nothing (default True).

Returns: str: Markdown table or JSON. Error: "Error: ".

Examples: - "Does the tag amamiya_kokoro exist?" -> query='amamiya_kokoro'. - "Find Amamiya Kokoro even if misspelled" -> query='amamya_kokoro' (autocomplete corrects it to amamiya_kokoro). - "List all Blue Archive character tags" -> query='*_(blue_archive)', category='character', order='count'.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
orderNocount
queryYes
categoryNo
hide_emptyNo
auto_resolveNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint=true annotation, the description discloses internal behavior: it uses Danbooru's autocomplete endpoint for alias resolution and prefix matching, falls back to tags.json, and matches against other_names. This gives the agent deeper insight into how queries are handled. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: purpose, exclusions, implementation detail, args, returns, and examples. It is front-loaded with the core purpose and every sentence adds value, making it appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all 7 parameters, the return format (Markdown or JSON), error behavior, and gives practical examples. It also explains when to use this tool over siblings, making it sufficiently complete for a complex lookup utility.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining all 7 parameters in detail: query semantics (wildcards, autocomplete, other_names), category values, limit range, order options, hide_empty, auto_resolve fallback, and response_format. This goes far beyond the bare schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'find or verify a tag's exact canonical name.' It explicitly distinguishes from sibling tools by stating 'NOT for character analysis' and naming the alternatives, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly says when to use this tool (finding/verifying tags, listing variants) and when not to (character analysis), and it names the alternative tools. Examples such as 'amamiya_kokoro' and '*_blue_archive' provide concrete usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

danbooru_search_characterA
Read-onlyIdempotent

Get visual trait frequencies for a character tag.

Best tool for character visual trait analysis. Use danbooru_get_character_profile if you also need wiki/implications. Given a character or copyright tag (e.g. hoshino_(blue_archive)), it returns the tags that most frequently appear alongside it on Danbooru posts. A tag with frequency 0.92 (like ahoge or pink_hair for Hoshino) appears in 92% of posts carrying the query tag, so it is a defining visual trait.

Results are ordered by co-occurrence frequency (descending). Meta tags such as highres are excluded by default because they describe image quality, not the character.

When auto_resolve is enabled (default) and the queried tag does not exist on Danbooru, the tool automatically queries the autocomplete endpoint to find the correct name (e.g. correcting a misspelled amamya_kokoro to amamiya_kokoro), re-runs the search with the corrected name, and reports the correction in resolved_from.

Args: tag (str): Canonical Danbooru tag, e.g. 'hoshino_(blue_archive)'. Spaces -> underscores automatically; non-English queries resolve via the autocomplete index when auto_resolve is on. limit (int): Max related tags to return (1-100, default 25). category (str|None): Filter to one category: 'general', 'artist', 'copyright', 'character', or 'meta'. Omit for all categories. min_frequency (float): Min co-occurrence frequency 0-1. A tag with frequency 0.9 appears in 90% of posts that carry the query tag. exclude_meta (bool): Drop meta tags (default True). response_format (str): 'markdown' or 'json'. auto_resolve (bool): Auto-correct misspelled tags (default True).

Returns: str: Markdown table or JSON. Error: "Error: ".

Examples: - "What does Hoshino from Blue Archive look like?" -> tag='hoshino_(blue_archive)' -> returns ahoge, pink_hair, blue_eyes, heterochromia, halo, ... - "Find all copyright tags related to this character" -> tag='hoshino_(blue_archive)', category='copyright'.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYes
limitNo
categoryNo
auto_resolveNo
exclude_metaNo
min_frequencyNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds significant behavioral detail beyond the readOnly/idempotent annotations: describes probability interpretation (0.92 = 92% of posts), ordering by frequency, default exclusion of meta tags, auto_resolve with resolved_from reporting, and error format. There is no contradiction with annotations; it enriches them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Although longer than many descriptions, it is logically structured with headers and examples. Each sentence adds value: purpose, co-occurrence explanation, exclusions, auto_resolve behavior, parameter details, return format, and real examples. Nothing is redundant; the length is justified by the tool's complexity and zero schema coverage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a moderately complex tool with 7 parameters and multiple behaviors, the description covers all bases: return format (markdown/json), error message, auto-correction behavior, example queries, and relation to sibling tools. The output schema may exist, but the description still explains the string return, ensuring the agent knows how to interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 0% description coverage, but the description fully compensates. Every parameter is explained with types, defaults, and meaning: tag (canonical, spaces->underscores, autocomplete), limit (1-100, default 25), category (enum values), min_frequency (0-1, probability), exclude_meta (default True), response_format, and auto_resolve. This is exemplary parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Get visual trait frequencies for a character tag.' It then clearly distinguishes from sibling tools by declaring it the 'Best tool for character visual trait analysis' and suggesting danbooru_get_character_profile for wiki/implications. This makes the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use this tool ('Best tool for character visual trait analysis') and names the alternative for a different need ('Use danbooru_get_character_profile if you also need wiki/implications'). Also explains behavior with auto_resolve for misspelled tags, giving concrete usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_postsA

Search a booru and return the raw post list (no cleaning). The same search semantics as search_prompts apply:

  • Query with one or more booru TAGs (underscores for multi-word: 'blue_hair', 'hatsune_miku'), never write natural language.

  • Tags AND together — every tag must be present in each returned post. PREFER A SINGLE TAG; stacking tags usually returns 0 posts. The cleaned prompt is where 'more detail' lives, not in the search query.

  • MULTI-TAG SEARCH IS SUPPORTED but each provider caps how many plain tags you may combine per query: danbooru/aibooru/e621 = 2, gelbooru/rule34 = 10 (metatags like order:rank or rating:safe do not count). Exceeding the limit returns an error; raise a provider's cap with the BOORU_MAX_TAGS_ env var.

  • When unsure how a concept is tagged, call autocomplete_tags first. Use this tool when you want to inspect the original tags before deciding how to process them. Each post carries its raw tag_string, the artist/character/copyright splits (when available), and optionally preview/file URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
tagsYes
limitNo
orderNopopular
ratingNoall
providerNodanbooru
random_seedNo
include_previewNo
include_file_urlNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does it thoroughly. It discloses the raw/uncleaned nature of results, AND-semantics for tags, provider-specific tag caps, error behavior on exceeding limits, and the structure of returned posts (tag_string, artist/character/copyright splits, optional URLs).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with a clear opening sentence and bulleted details. Every section adds value: search semantics, provider caps, autocomplete fallback, and post structure. Despite its length, it avoids redundancy and is appropriately scoped for a complex tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 9 parameters, no output schema, and no annotations, the description covers the essential behavior and enough output structure to set expectations. It lacks details about pagination or what happens with invalid tags, but overall it gives a solid mental model for invoking and interpreting results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description compensates for the most critical parameters: tags (syntax, AND behavior, single-tag preference, caps), provider (caps listed), and the boolean include_preview/include_file_url (via 'optionally preview/file URLs'). It does not explain page, limit, order, rating, or random_seed, but those are relatively self-explanatory with defaults and enums in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches a booru and returns the raw post list, with an explicit contrast to search_prompts. It distinguishes itself by emphasizing 'no cleaning' and by naming sibling tools like autocomplete_tags for concept resolution.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: 'Use this tool when you want to inspect the original tags before deciding how to process them.' It also gives alternative tool guidance ('call autocomplete_tags first') and explains multi-tag limits per provider, including env var workarounds.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_promptsA

Search an image booru (Danbooru/AIBooru/e621/Gelbooru/Rule34) by TAG and return ready-to-use, cleaned AI-art prompts. Each result has the full prompt string plus its category split (appearance/clothing/pose/scenery/character/quality/other). This is the recommended tool for finding 'ready-to-use AI painting tags'.

== WHEN TO USE A DIFFERENT TOOL INSTEAD ==

  • 'What does character X look like?' / 'list costume variants of X' / 'what tags describe X' -> use danbooru_get_character_profile (one call: trait frequency table + wiki + bidirectional implications). It is built for describing a known character, while search_prompts returns sample images each turned into a prompt — different goals.

  • 'Find the canonical tag name for a Chinese/Japanese term or a misspelling' -> use autocomplete_tags (alias/fuzzy/other_names aware).

== SEARCH SEMANTICS — read this before calling ==

  • This is NOT a keyword-search engine like Google. You query with one or more booru TAGS, and results are images ALL of whose tags are present.

  • A booru tag is a single token, multi-word tags use UNDERSCORE: 'blue_hair', 'hatsune_miku', 'sitting_on_chair' — never 'blue hair'.

  • MULTI-TAG SEARCH IS SUPPORTED but each provider caps how many plain tags you may combine per query: danbooru/aibooru/e621 = 2, gelbooru/rule34 = 10 (metatags like order:rank or rating:safe do not count). Exceeding the limit returns an error telling you how to fix it; you can also raise a provider's cap with the BOORU_MAX_TAGS_ env var (e.g. BOORU_MAX_TAGS_DANBOORU=6 for a Gold account).

  • STRONGLY PREFER A SINGLE TAG to start. 'hatsune_miku' returns thousands of well-tagged images; 'hatsune_miku blue_hair school_uniform smile' is treated as AND → dramatically fewer results (often zero). The cleaned prompt already contains far more detail than your search tag, so adding search tags is at best redundant and at worst returns nothing.

  • When you need a pure-quality / generalized set (no specific character or franchise yet), search '1girl' or '1boy' alone, or use 'random' order.

  • Do not write natural-language queries ('a girl with blue hair sitting in a classroom') — that is not supported. Translate to booru tags first.

  • Use autocomplete_tags if you are not sure how a concept is spelled as a booru tag (e.g. user said '法国女仆' → try 'french', 'maid' and let autocomplete return 'french maid', 'maid_uniform', etc.).

  • Common useful single-tag starting points: a character tag ('hatsune_miku'), an artist tag, a copyright tag ('blue_archive'), a character + single qualifier ('2girls' for group shots), or 'order:rank' / 'random' for non-themed browsing via order param.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
tagsYes
limitNo
orderNopopular
ratingNoall
excludeNo
optimizeNo
providerNodanbooru
added_tagsNo
random_seedNo
min_tag_countNo
background_modeNokeep
include_previewNo
resolve_conflictsNo
include_charactersNo
include_copyrightsNo
simple_background_replacement_tagsNo

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosure. It explains non-obvious behavior: this is not keyword search, multi-tag queries are ANDed, providers cap plain tags, exceeding the limit returns an error, and the env var can raise the cap. It also discloses the return format with category splits. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but tightly organized with clear headings ('WHEN TO USE A DIFFERENT TOOL INSTEAD', 'SEARCH SEMANTICS') and every sentence contributes actionable guidance. The purpose is front-loaded in the first sentence, and no filler or redundant phrases appear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (17 parameters, 5 providers, no output schema or annotations), the description covers all essential invocation aspects: tag syntax, query semantics, provider-specific limits, alternatives, and return value shape. It even provides common starting-point tags, making it fully usable for an agent to select and call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% parameter descriptions, so the description must compensate. It thoroughly explains the critical `tags` parameter (underscore format, AND semantics, per-provider caps), `order` (order:rank, random), `provider` (the booru list), and rating metatags. However, several parameters (page, limit, exclude, optimize, background_mode, etc.) are left to their names alone, preventing a perfect score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb and resource: 'Search an image booru (Danbooru/AIBooru/e621/Gelbooru/Rule34) by TAG and return ready-to-use, cleaned AI-art prompts.' It also specifies the output shape (full prompt string plus category split), which clearly differentiates it from sibling tools like search_posts and build_prompt.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

An explicit 'WHEN TO USE A DIFFERENT TOOL INSTEAD' section names alternatives (danbooru_get_character_profile, autocomplete_tags) and explains exactly when they are preferable. The 'SEARCH SEMANTICS' section gives concrete usage rules: prefer a single tag, avoid natural-language queries, use underscores, and consult autocomplete_tags for uncertain spellings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updatesv0.3.0
    • First observedautocomplete_tags
    • First observedbuild_prompt
    • First observeddanbooru_get_character_profile
    • First observeddanbooru_get_tag_implications
    • First observeddanbooru_get_wiki_page
    • First observeddanbooru_lookup_tag
    • First observeddanbooru_search_character
    • First observedsearch_posts
    • First observedsearch_prompts

TDQS

A4.1/5.0
Disambiguation2/5

Several tools have heavily overlapping purposes: danbooru_lookup_tag and autocomplete_tags both resolve canonical tag names; danbooru_get_character_profile and danbooru_search_character both return trait co-occurrence frequencies; and danbooru_get_wiki_page / danbooru_get_tag_implications are subsets of the profile tool. This makes it difficult for an agent to confidently choose the right tool.

Naming Consistency2/5

Naming is mixed: some tools use a danbooru_ prefix (danbooru_lookup_tag, danbooru_get_character_profile), while others use bare verbs (search_prompts, search_posts, autocomplete_tags, build_prompt). Verb choices also vary (lookup, search, get, autocomplete, build) without a clear pattern.

Tool Count4/5

At 9 tools, the count is within a reasonable range, but several tools are near-duplicates (e.g., danbooru_lookup_tag vs autocomplete_tags, danbooru_get_character_profile vs danbooru_search_character). A more streamlined set of 6-7 tools would feel tighter without losing functionality.

Completeness4/5

The tool surface covers the core domain well: tag resolution, character profiling, wiki text, implications, post/prompt search, and prompt building. Minor gaps include no direct tool for browsing popular tags or fetching a single post by ID, but these are peripheral to the server's stated purpose.

Maintenance

ActivitySlowing
ResponsivenessWithin a week

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/echo-xianyu/Booru-Pictag-Get-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server