Skip to main content
Glama

Server Details

Taiwan legal research MCP by Dr.Legal (法律偵探): 22.7M court judgments, current statutes, administrative rulings and Constitutional Court decisions. Retrieval-only, per-item citations, appeal-chain history, bundle-level citation audit. Free, no API key; OAuth 2.0 dynamic registration completes automatically. 台灣法律 MCP:2,272 萬筆裁判書、法規、函釋、憲法法庭裁判,逐筆附出處並提供引用查核。免費、免金鑰。Docs: https://dr-legal.com.tw/mcp

Ownership verified

The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
Uptime
7.7% over 72 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
aa0101181514/tw-legal-rag
GitHub Stars
341
Server Listing
Taiwan Legal RAG

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation4/5

Most tools target distinct resources (judgment fulltext, statute article, administrative interpretation) with separate exact-lookup vs. semantic-search pairs that are clearly delineated. The one real friction point is search_bundle vs. search_judgments, which return nearly identical anchor bundles and are separated only by an intent heuristic ('use this instead of search_judgments when you intend to answer a legal question'), leaving genuine room for misselection.

Naming Consistency4/5

Names follow a consistent snake_case verb-first pattern (get_*, search_*) with predictable noun suffixes, and singular/plural (get_legal_reference vs. search_legal_references) plausibly signals exact vs. semantic lookup. However search_bundle breaks the resource-noun convention — 'bundle' names an output format rather than a domain entity, unlike the other five names.

Tool Count4/5

Six tools is a tight, well-scoped surface for a legal retrieval server, with each of judgments, statutes, and interpretations getting ~two access modes. The count is slightly padded by the search_bundle/search_judgments redundancy, which is arguably one capability shipped twice.

Completeness3/5

Core retrieval is covered (judgment search + paged fulltext, statute article verification, interpretation lookup/search) and lifecycle/validity checks are built in. But there is no keyword or topical statute search — only exact law_name/article_no lookup — and no historical (行為時法) versions, with the description explicitly routing agents to an external law_url, a dead end for amendment-date research. No citator-style subsequent-history checking beyond the case_history field embedded in fulltext.

Available Tools

6 tools
get_judgment_fulltextGet the full reasoning text of a judgmentA
Read-onlyIdempotent
Inspect

Retrieve the full reasoning text of a judgment selected from search results. REQUIRED whenever you intend to quote or paraphrase a court's holding, reasoning, or specific findings — the search listing alone does not contain reasoning text. Pass the doc_id and the result_token from that result; copy tokens verbatim, never reconstruct them. Recently expired proofs recover automatically within a bounded window; if the response includes a result_token, use it for subsequent reads. If this call returns result_token_invalid_or_expired, run the search again ONCE (even if you already searched this question) and retry with the freshly returned token. Never retry the same failed token; stop if recovery fails. This is not a login error. Citation must match exactly the citation_text from search_judgments. The response includes case_history (database-recorded appeal chain): if an upper-court record shows 主文含「廢棄」, the judgment was overturned — do not cite it as currently authoritative; absence of an upper-court record does NOT mean the judgment is final. After answering, self-check every holding you attributed against this text (no reversed outcomes, no holdings from other judgments). The excerpt is a window of at most ~15000 source characters for judgments. If fulltext_truncated is true, copy next_excerpt_offset into the next call's excerpt_offset; NEVER advance by len(text_excerpt), which includes a repeated citation header. Offsets and excerpt_body_chars count Unicode code points in the source, not UTF-8 bytes or UTF-16 units. For text assembly, remove only the first excerpt_header_chars code points of each window. Only a contiguous walk from offset 0 to next_excerpt_offset=null with fulltext_truncated=false proves a complete read. If a truncated response has no advancing next_excerpt_offset, report it as incomplete instead of guessing. Continue through the rest — long judgments keep evidence/admissibility sections late in the text, so never conclude a topic is absent from an early window alone.

NameRequiredDescriptionDefault
doc_idYes
result_tokenYes
excerpt_offsetNoSource Unicode-code-point offset, starting at 0. When fulltext_truncated=true, copy next_excerpt_offset from the previous response. Never use len(text_excerpt): it includes a repeated citation header.

TDQS

A4.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is handled. The description adds substantial behavioral context beyond that: token expiry with bounded automatic recovery, case_history semantics and overturn detection, and a post-answer verification step. It falls short of 5 because the return payload (citation_text, case_history, text_excerpt/truncation flags) is described only by reference, with no output schema to anchor those field names.

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?

Long but densely operational and front-loaded with the core purpose in the first sentence; the paging ritual, failure protocol, and citation-matching rule each prevent a distinct class of error. The offset guidance duplicates the schema's own description, but that redundancy is defensive rather than wasteful.

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?

With no output schema and a nontrivial pagination protocol, the description carries almost the full burden and covers truncation, contiguity proof, and the 'no advancing offset' failure case. The remaining gap is the enumerated response fields themselves, which are referenced but not itemized.

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?

Schema coverage is only 33% (doc_id and result_token are bare strings), so the description must compensate and does: it says both come from the search result, that tokens must be copied verbatim and never reconstructed, and it fully specifies excerpt_offset semantics (source Unicode code points, not UTF-8 bytes, use next_excerpt_offset rather than len(text_excerpt)). That is far more than the schema conveys.

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?

States a specific verb and resource ('Retrieve the full reasoning text of a judgment') and scopes it to a judgment selected from search results, which cleanly separates it from search_judgments. An agent knows immediately that this is the follow-up fetch, not another search.

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 names when the tool is REQUIRED ('whenever you intend to quote or paraphrase a court's holding — the search listing alone does not contain reasoning text'). It also covers recovery branches: rerun search ONCE on result_token_invalid_or_expired, never retry the same failed token, stop if recovery fails, and 'This is not a login error.'

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

get_law_articleLook up a current Taiwan statute articleA
Read-onlyIdempotent
Inspect

EXACT lookup of a CURRENT Taiwan statute article (現行法條) by law name and article number, e.g. law_name=民法, article_no=184 or 47-1 (第47條之1). Use this to VERIFY every statute citation BEFORE putting it in legal writing: that the article number exists, what the current text verbatim says, and whether the law carries an abolition note. Quote statute text ONLY from the returned article_content — never from memory; article numbers shift when laws are amended, and text recalled from memory is frequently a plausible-looking hallucination. Returns the current consolidated version only — it has NO historical versions, so never use it to verify quotes of pre-amendment (行為時法) text; check the amendment history at the returned law_url instead. If the law resolves but the article is not found, the article number is most likely wrong or renumbered — the corpus stores each law in full. If the law name does not resolve, law_candidates lists similar collected names to retry with; a miss does NOT prove the law does not exist (municipal self-government ordinances and some administrative rules are outside the corpus). Statutes only — for administrative interpretations (函釋) use get_legal_reference; for judgments use search_judgments.

NameRequiredDescriptionDefault
law_nameYesLaw name, full or common abbreviation, e.g. 民法 / 勞基法 / 電子支付機構管理條例
article_noYesArticle number, e.g. 184 / 第184條 / 47-1 / 第47條之1

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/open-world, and the description goes further: it returns only the current consolidated version with no historical versions, may include an abolition note, and exposes law_url for amendment history. It also explains the two failure modes (article-not-found implies wrong/renumbered number; law-name miss returns law_candidates and does not prove nonexistence due to corpus gaps). Lacks only detail on response shape beyond the key fields.

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?

Dense but well-structured: the core action is front-loaded, followed by the verification rationale, the scope limitation, and the failure-mode guidance. Nearly every sentence carries operational value, though it runs long enough that the historical-version caveat could be tightened.

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 2-parameter lookup with no output schema, the description covers what is returned (verbatim article_content, abolition note, law_url), the corpus's scope limits (no municipal ordinances, incomplete administrative rules), and both error paths — nothing an agent needs to invoke and interpret it correctly is missing.

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 coverage is 100%, so the baseline is 3; the description still adds value by clarifying that article_no accepts the '47-1' form meaning 第47條之1 and that law_name accepts common abbreviations. It also introduces the meaning of law_candidates returned on a name miss, tying parameters to failure behavior.

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?

States a specific verb and resource ('EXACT lookup of a CURRENT Taiwan statute article') plus the identifiers used, with a worked example (民法, 184 / 47-1). It is immediately distinguishable from siblings like get_legal_reference and search_judgments, which it names.

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 says when to use it (verify every statute citation before legal writing) and when not to (never for pre-amendment 行為時法 text — check law_url amendment history; not for 函釋 or judgments, with the correct sibling named for each). Alternatives and exclusions are both spelled out.

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

search_bundleSearch Taiwan judgments and retrieve a citation bundleA
Read-onlyIdempotent
Inspect

Recommended tool for answering Taiwan legal questions. Runs search and retrieves reasoning-text excerpts in one call, then returns a twlegalrag.bundle/v1 package with allowed_citations and strict citation rules, plus a result_token usable with get_judgment_fulltext for any doc_id in the bundle (e.g. to read an unread candidate or page past a truncated excerpt). Use this instead of search_judgments when you intend to answer a legal question. Cite only citation_id values listed in allowed_citations (judgments whose reasoning excerpt was actually read); unread_candidates are not authority and must not be cited for court reasoning. Labour questions (不當勞動行為/工會/支配介入/不利益對待/團體協約) also return 勞動部不當勞動行為裁決委員會 decisions, whose doc_id starts with 'arb:'. Those are ADMINISTRATIVE DECISIONS by the competent authority, NOT court judgments: cite them as 裁決委員會見解 and never call them a court holding or a 判決. If you already retrieved a bundle for the same question earlier in this conversation, reuse that bundle instead of calling this tool again — an identical query returns the same judgments, and stacking duplicate bundles degrades answer quality.

NameRequiredDescriptionDefault
queryYes
read_topNo
max_resultsNo
search_typeNohybrid

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations, the description discloses important behavior: the returned bundle contains allowed_citations and strict citation rules, unread candidates must not be cited as authority, arbitration decisions are administrative rather than court judgments, and duplicate bundles can degrade answer quality. This is rich context for a read-only, idempotent search tool.

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 front-loaded with the recommended use case and remains information-dense throughout. It is somewhat long, but nearly every sentence adds relevant legal or behavioral context.

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 there is no output schema, the description does a good job explaining the returned bundle, citation rules, result_token, and arbitration caveat. The main completeness gap is the lack of input parameter semantics for read_top, max_results, and search_type.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain the four input parameters. It only implies the query parameter and does not explain read_top, max_results, or search_type, leaving key controls undocumented.

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 uses specific verbs and resources: it runs a search, retrieves reasoning excerpts, and returns a citation bundle. It explicitly distinguishes itself from search_judgments and explains its role in answering Taiwan legal questions.

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?

It gives explicit usage guidance: use this instead of search_judgments when answering a legal question, reuse an existing bundle for the same question, and use get_judgment_fulltext for unread candidates or truncated excerpts. It also explains special handling for labour questions involving arbitration decisions.

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

search_judgmentsSearch Taiwan court judgments (structured listing)A
Read-onlyIdempotent
Inspect

Search Taiwan court judgments and return an anchor bundle with server-read reasoning excerpts. Cite only citation_id values listed in allowed_citations; unread_candidates are not authority and must not be cited for court reasoning. Labour queries additionally return 勞動部不當勞動行為裁決委員會 decisions (doc_id prefix 'arb:') — these are administrative decisions of the competent authority, NOT court judgments; cite them as 裁決委員會見解, never as a court holding. If the same question was already searched earlier in this conversation, reuse those results instead of repeating the identical query.

NameRequiredDescriptionDefault
queryYes
max_resultsNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/open-world, yet the description adds real substance: the anchor-bundle return shape, the allowed_citations vs unread_candidates distinction, and the 'arb:' prefix meaning administrative 裁決委員會 decisions rather than court holdings. It omits any note on result caps or latency, keeping it below a 5.

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?

Purpose is front-loaded in the first clause and every subsequent sentence carries citation-policy or reuse information. The labour/arbitration caveat is dense but earns its place; the whole thing is slightly crammed into one block.

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?

For a two-parameter, no-output-schema search tool, it explains the return shape (anchor bundle, citation ids, unread candidates) and citation constraints well. The missing piece is any description of max_results behavior or what happens beyond the default result count.

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

Parameters2/5

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

Schema coverage is 0% for two parameters, so the description carries the full burden. It implies query semantics loosely, but says nothing about max_results (default 5, max 10) or how query strings are interpreted, leaving half the schema undocumented in both places.

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

Purpose4/5

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

States a specific verb and resource ('Search Taiwan court judgments') and adds what comes back ('an anchor bundle with server-read reasoning excerpts'). It doesn't explicitly differentiate itself from the similarly named sibling search_bundle, so the agent must infer the distinction.

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

Usage Guidelines3/5

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

It gives a clear reuse rule ('if the same question was already searched earlier in this conversation, reuse those results') and a labour-query caveat, but never says when to prefer this tool over search_bundle or get_judgment_fulltext. Usage is implied rather than routed.

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.

  1. 6 tool updates
    • First observedget_judgment_fulltext
    • First observedget_law_article
    • First observedget_legal_reference
    • First observedsearch_bundle
    • First observedsearch_judgments
    • First observedsearch_legal_references

Publisher details

Operator
Dr.Legal 法律偵探 (Aaron Huang, Attorney at Law), Taiwan · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Not available
Restrictions
None. Free, no account, no API key, no paid plan. OAuth 2.0 with dynamic client registration is approved automatically. Per-minute rate limits apply; see terms of use. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to search Taiwan's national statutes and Constitution by title, resolve laws by exact citation, browse chapter structures, and read individual articles in Chinese alongside the Ministry of Justice's official English translations where available. Also exposes metadata such as repeal status, amendment dates, and effective-in-force dates tracked separately.
    205 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to search Taiwan's statutes by legal concept or keyword, fetch individual articles with official English translations, browse a law's structure, and search apex-court and Grand Chamber rulings or list every decision containing an exact phrase. All tools are read-only and query only public legal data, with Traditional Chinese queries translated by the assistant on request.
    1
    CC BY-4.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.