Skip to main content
Glama

Server Details

Thai legal search MCP — statutes, gazette, opinions, court cases. Pro: court-jurisdiction rulings.

Ownership verified
Status
Healthy
Uptime
23.8% over 81 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A4.4/5.0

Scored across 13 tools

Disambiguation4/5

Each tool is explicitly cross-referenced against its neighbours ("use X instead when…"), and the risky pairs are cleanly separated: verify_citation (single) vs batch_citation_audit (many), search_law (keyword/hybrid) vs deka_by_section (section→rulings) vs research_dossier (bundled multi-source), and get_law_document vs get_gazette_document vs get_deka by corpus. Residual overlap remains between search_law and research_dossier, and between get_law_document and verify_citation (both can return section text), but descriptions steer correctly.

Naming Consistency4/5

All names are snake_case and mostly verb_noun (get_law_document, verify_citation, submit_feedback, search_law), forming a predictable pattern across corpora (get_law_document / get_deka / get_gazette_document). Minor deviations are noun-phrase or bare names (browse, whoami, deka_by_section, court_ruling_lookup, research_dossier), which are readable but break the uniform verb scheme.

Tool Count5/5

Thirteen tools is squarely in the well-scoped range for a legal research server with four corpora plus verification and quota-aware meta operations. Each tool maps to a distinct stage (browse → search → retrieve → analyse → verify → feedback) with no filler tools.

Completeness4/5

The read-only lifecycle is well covered: discovery (search_law, browse), retrieval (get_law_document, get_deka, get_gazette_document, get_law_versions), analysis (deka_by_section, court_ruling_lookup, research_dossier) and verification (verify_citation, batch_citation_audit), plus account/feedback meta tools. The one obvious gap is the opinion corpus, which is searchable by title/category/year with PDF links only and has no get_opinion document-fetch equivalent to get_deka/get_gazette_document.

Available Tools

13 tools
batch_citation_auditA
Read-onlyIdempotent
Inspect

ตรวจการอ้างอิงมาตรา/ฎีกาทุกจุดในเอกสารเดียวรวดเดียว (คำฟ้อง/สัญญา/บันทึกความเห็น) — เฉพาะแพ็กเกจ Pro. ผลคือ "มีอยู่จริง + เป็นฉบับปัจจุบันไหม" ทีละจุด ไม่ใช่การตรวจเหตุผลทางกฎหมาย และไม่ตัดสินทิศทางคำวินิจฉัย การอ้างอิงเดียว → verify_citation (ใช้ได้ทุกแพ็กเกจ และรับกฎหมายฉบับใดก็ได้ในคลัง)

ต้นทุน: นับโควตา 1 ครั้งต่อการอ้างอิงที่ไม่ซ้ำ (สูงสุด 50 ต่อการเรียก, ขั้นต่ำ 1) หักครั้งเดียวก่อนตรวจ — โควตาไม่พอทั้งก้อน = ปฏิเสธทั้งครั้งโดยไม่หัก · ไม่คืนโควตาเมื่อหยุดก่อนกำหนด (stopped_early) หรือเมื่อบริการฎีกา ปิดชั่วคราว (ฎีกาได้ cannot_verify แต่มาตรายังตรวจได้) · ผู้ใช้ที่ไม่ใช่ Pro ถูกปฏิเสธก่อนหักโควตา

การจับชื่อกฎหมาย: สแกน "มาตรา N" (รวม "มาตรา 288, 289 และ 297 ประกอบมาตรา 83") + "ฎีกาที่ N/ปี" และผูกมาตรา เปล่ากับชื่อกฎหมายที่ระบุล่าสุดได้ 21 ฉบับ — ประมวลกฎหมายทั้ง 8 ฉบับ (ป.พ.พ./ป.วิ.พ./ป.อ./ป.วิ.อ./รัษฎากร/ที่ดิน/ ยาเสพติด/อาญาทหาร) + พ.ร.บ. ที่ฎีกาอ้างบ่อยและไม่กำกวม 13 ฉบับ (เช่น คุ้มครองแรงงาน ล้มละลาย ป่าไม้ ควบคุมอาคาร) · ไม่เดาเมื่อ: ไม่มีชื่อกฎหมายนำหน้า, กฎหมายนอก 21 ฉบับ, พ.ร.บ. ที่มีหลายฉบับต่างปี (ศุลกากร เช็ค ลิขสิทธิ์ ฯลฯ), ชื่อฉบับแก้ไข "(ฉบับที่ N)" หรือกฎหมายลำดับรอง → status="cannot_verify", reason="unresolved_law_name" — ถ้ารู้ law_code ให้เรียก verify_citation เอง

อ่านผล (citations[] ละรายการ):

  • status "verified" | "verified_title_marked_repealed" (พบจริง แต่ชื่อฉบับมี "(ยกเลิก)" — แนะนำให้ตรวจ source_url) | "not_found" | "cannot_verify" · retryable=true = อาจเป็นเหตุชั่วคราว ให้ลองใหม่เฉพาะรายการนั้นด้วย verify_citation (1 หน่วย) ห้ามส่งทั้งเอกสารซ้ำ (หักทุกรายการอีกรอบ) และไม่ควรวนซ้ำ not_found · false = ต้องตรวจเอง

  • status="not_found" ไม่ใช่ข้อสรุปว่าอ้างอิงนั้นปลอม = "ไม่พบในคลังที่ตรวจได้" เท่านั้น (คลังฎีกาไม่ครบทุกฉบับ / มาตราไม่มีในฉบับล่าสุดแต่อาจมีในฉบับเก่า) — ห้ามบอกผู้ใช้ว่า "ไม่มีอยู่จริง" ให้ตรวจต้นฉบับก่อนตัดทิ้ง

  • reason="section_not_found_in_this_version" → เรียก get_law_versions(law_code, unit_label="มาตรา " + section) ต้องเติม "มาตรา " นำหน้าเสมอ (section ที่คืนเป็นเลขเปล่า)

  • law ส่งต่อ deka_by_section(law=...) ได้ตรงๆ · timeline_code = ฉบับล่าสุดเสมอ ไม่ใช่ฉบับ ณ วันที่ของเอกสาร

  • unique_citation_limit_exceeded=true = เกิน 50 จุด ตรวจตามลำดับที่ปรากฏ ส่วนที่เหลือเรียกซ้ำกับเนื้อหาที่เหลือ · stopped_early=true = หมดเวลา คืนผลบางส่วนที่ตรวจเสร็จแล้ว · extractor_capped=true = citation ดิบเกิน 200 จุด ส่วนท้ายเอกสารไม่ถูกสกัด/ตรวจเลย — บอกผู้ใช้ว่าตรวจไม่ครบ และให้แบ่งเอกสารส่งใหม่

  • error หมดเวลา (ไม่ใช่ stopped_early) เกิดหลังหักโควตาแล้วและไม่คืน — ลองใหม่ = หักอีกรอบ ควรแบ่งเอกสารให้สั้นลงก่อน · error "มีคำขอ…จำนวนมาก" (รอคิว) เกิดก่อนหักโควตา ลองใหม่ได้โดยไม่เสียโควตา

  • evidence_snippet ของฎีกาตัดมาจาก full_text อาจมีชื่อจริงคู่ความ — ทำตาม deka_privacy_note ก่อนคัดลงเอกสาร

NameRequiredDescriptionDefault
document_textYesเนื้อหาเอกสารเต็มแบบข้อความล้วน (คำฟ้อง/คำให้การ/สัญญา/บันทึกความเห็น) 1–50,000 ตัวอักษร — เอกสารยาวกว่านั้นให้แบ่งส่ง · ว่าง/ยาวเกินถูกปฏิเสธก่อนตรวจสิทธิ์ Pro และก่อนหักโควตา

Output Schema

NameRequiredDescription
quotaNo
citationsNo
disclaimerNo
attributionNo
stopped_earlyNo
not_found_noteNo
extractor_cappedNo
citations_checkedNo
deka_privacy_noteNo
stopped_early_messageNo
total_citations_foundNo
unique_citation_limit_exceededNo

TDQS

A4.6/5.0
Behavior5/5

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

Goes far beyond the annotations: quota accounting (1 per unique citation, max 50, min 1, deducted before the run), no refund on stopped_early, database outage yields cannot_verify while sections still get checked, non-Pro rejected before deduction, and the distinction between timeout errors (already charged) and queue errors (not charged). It even warns that not_found is not proof of a fake citation. Minor tension: idempotentHint=true while each re-run consumes quota again, but that is metering rather than resource mutation, so it is not a hard contradiction.

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?

Front-loaded with purpose, then the Pro gate, then the verify_citation alternative, then cost and result semantics in short line-per-idea blocks. It is long, and the enumeration of the 21 resolved law codes reads more like reference material than selection guidance, but nearly every line carries operational value for a high-stakes tool.

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 complexity, an output schema, and quota consequences, the description covers everything an agent needs: which statuses exist and what each means, retry policy (retry only the individual item, never resend the whole document), truncation/nesting flags (unique_citation_limit_exceeded, stopped_early, extractor_capped), and a privacy warning on evidence_snippet.

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?

There is a single required parameter and schema coverage is 100%; the schema already documents the 1–50,000 character bound and that empty/oversized input is rejected before the Pro check and before quota deduction. The description reinforces

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 (batch-audit every section/ruling citation in a single document) and lists the document types it applies to. It also draws a crisp line against the sibling verify_citation, so an agent can pick between them without opening either schema.

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 routing rules: single citation → verify_citation (any package, any law in the corpus); unresolved law name → call verify_citation yourself with a known law_code. It also states the Pro-only gate up front, so the agent knows when this tool will be rejected.

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

browseA
Read-onlyIdempotent
Inspect

ดึงรายการค่าที่ใช้กรองได้จริงและสถิติคลัง — เรียกก่อน search_law/deka_by_section เมื่อไม่แน่ใจว่าจะใส่ค่า filter อะไร (แทนการเดาชื่อสาขา/ประเภท/ตัวย่อกฎหมาย) หรือเมื่อผู้ใช้ถามว่าคลังครอบคลุมแค่ไหน. ไม่นับโควตา · อ่านอย่างเดียว · คืนครบทั้งรายการในครั้งเดียว (ไม่มีแบ่งหน้า)

kind → ใช้ต่อที่ไหน: law_types → search_law(law_type=...) · subjects → search_law(subject=...) (จำแนกจากชื่อกฎหมาย อัตโนมัติ บางฉบับไม่มีสาขา) · law_abbreviations → deka_by_section(law=...) เรียงตามจำนวนครั้งที่ฎีกาอ้าง · coverage_stats → จำนวนเอกสารต่อคลัง + ช่วงปี (ตอบคำถามเรื่องความครอบคลุม; ยังไม่พร้อมชั่วคราวได้ ให้ลองใหม่) · law_abbreviations ว่าง + reason="temporarily_unavailable" = บริการฎีกาปิดชั่วคราว ไม่ใช่ไม่มีตัวย่อ

NameRequiredDescriptionDefault
kindYesหนึ่งใน "law_types" | "subjects" | "law_abbreviations" | "coverage_stats" (สะกดตรงตัว) — law_types/subjects: ค่าพร้อมจำนวนเอกสาร (corpus=law) · law_abbreviations: ตัวย่อกฎหมาย (เช่น "ป.อ.") ที่ฎีกาอ้างจริงพร้อมจำนวนครั้ง เรียงมาก→น้อย · coverage_stats: จำนวนเอกสารต่อคลัง + ช่วงปีที่ครอบคลุม

Output Schema

NameRequiredDescription
lawNo
dekaNo
kindNo
reasonNo
corporaNo
gazetteNo
opinionNo
subjectsNo
law_typesNo
disclaimerNo
attributionNo
generatedAtNo
law_abbreviationsNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/closed-world, but the description adds material context beyond them: no quota consumption, single-call full return with no pagination, and a documented degraded state (empty law_abbreviations + reason="temporarily_unavailable" means the deka service is down, not that no abbreviations exist). That last detail prevents a serious misreading of an empty result.

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?

Front-loaded with the primary directive, then a compact per-kind routing table, then edge cases. Dense and mostly waste-free, though 'อ่านอย่างเดียว' partly restates the readOnlyHint annotation and the coverage/temporary-unavailable caveats are stated twice.

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?

An output schema exists so return shapes need not be described, and the description still covers the two things an agent cannot infer: what to do with each result set next, and how to interpret an empty or degraded response. Nothing needed for correct invocation 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% and the kind parameter is already well documented there, so the description need not repeat it. It still adds value by mapping each kind to the downstream call site and by explaining the ordering semantics (sorted by citation count) and the caveat that some law documents have no subject.

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?

Opens with a specific verb+resource: fetch the actually-usable filter values and corpus statistics. It explicitly distinguishes itself from search_law and deka_by_section by positioning itself as the prerequisite lookup step rather than a 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?

Gives explicit trigger conditions ('call before search_law/deka_by_section when unsure which filter value to use', 'when the user asks about coverage') and names the exact alternative being avoided (guessing branch/type/abbreviation). Each kind is then routed to its downstream tool with argument syntax.

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

court_ruling_lookupA
Read-onlyIdempotent
Inspect

คำวินิจฉัยชี้ขาดอำนาจหน้าที่ระหว่างศาล — เฉพาะแพ็กเกจ Pro ค้นตามเลขที่ หรือตามกฎหมาย(+มาตรา) ที่คำวินิจฉัยอ้างถึง · ไม่ตอบว่าคดีหนึ่งต้องฟ้องศาลไหนจากข้อเท็จจริง — หาคำวินิจฉัยที่ข้อเท็จจริงใกล้เคียง → search_law(corpus="court_ruling") นับโควตา 1 ครั้งต่อการเรียกที่ผ่านด่าน Pro — รวมผลว่าง/มี reason หลังค้น (law_not_found ฯลฯ, relations_unavailable) · ผู้ใช้ไม่ใช่ Pro ถูกปฏิเสธโดยไม่หักโควตา · อินพุตผิดรูป/section_format_unsupported/not_served ไม่หักโควตา · อ่านอย่างเดียว

อ่านผล: results = [{no, no_arabic, doc_kind_label, decided_on, title, outcome, sending_court, receiving_court, matched_citations, source_url}] เรียงวันวินิจฉัยใหม่→เก่า · ค้นด้วยเลขที่ (เลขเดี่ยวหรือเลขช่วง) ได้ text = บทย่อเต็มด้วย

  • matched_citations[] = {law_name, law_code, section, paragraph, origins} — origins = ที่มา ("source" = ระบบต้นทางระบุ · "text" = สกัดจากบทย่อ) · กฎหมาย+มาตราเดียวกันเป็นแถวเดียว (หลักฐานชิ้นเดียว) · paragraph เป็นข้อความดิบจากต้นทาง (เช่น "หนึ่ง (๓)") ใช้อ้างอิงเท่านั้น ไม่ใช่รูปที่ verify_citation รับ

  • outcome_summary = นับผลของคำวินิจฉัยทุกฉบับที่ตรง (ไม่ใช่แค่ใน limit · ไม่รวมคำสั่ง) — สถิติเชิงบรรยาย ไม่ใช่การพยากรณ์ผลคดี · outcome_summary_scope = "section"/"law" (นับระดับไหน) · baseline_outcome_summary (ทั้งคลัง — อาจไม่มีเมื่องบเวลาหมด) ให้เทียบ (ดู outcome_note)

  • law_requested/section_requested = ค่าที่ขอ (echo) — เทียบกับ match_level ก่อนสรุปว่าเป็นผลของมาตราที่ถาม

  • match_level="section" = ฉบับที่ระบุมาตรานี้ · "law" + note = ทุกฉบับที่อ้างกฎหมายนี้ (มาตราที่อ้างจริงดู matched_citations) · note อาจบอกว่ารวมชื่อที่ต้นทางพิมพ์ปีผิดเข้ากับฉบับที่มี law_code — อ่านก่อนสรุปว่าเป็นฉบับปีไหน

  • reason="section_not_found" = ไม่พบฉบับที่ระบุมาตรานี้ จึงคืนผลระดับกฎหมายแทนในคำขอเดียวกัน (ไม่ต้องเรียกซ้ำ — อ่าน note)

  • reason="law_not_found"/"ambiguous_law" + candidates = เลือกชื่อแล้วเรียกซ้ำ · "no_rulings_for_law" = รหัสถูกแต่ไม่มีคำวินิจฉัย อ้างกฎหมายนี้ · "relations_unavailable" = ข้อมูลความสัมพันธ์ยังไม่พร้อม (ลองใหม่ภายหลัง — ไม่ใช่ "ไม่มี") · "section_format_unsupported" = ส่งเลขมาตราเปล่า (ไม่มีวรรค/อนุมาตรา) · "not_served" = ปิดให้บริการชั่วคราว

  • count=0 ไม่ใช่หลักฐานว่าไม่มีคำวินิจฉัยเรื่องนั้น (คลังมีเฉพาะที่เผยแพร่ในระบบต้นทาง) — คัดลอก attribution/disclaimer ตามตัวอักษร

NameRequiredDescriptionDefault
lawNoกฎหมายที่คำวินิจฉัยอ้างถึง: law_code (citation.law_code ของ search_law) หรือชื่อเต็ม/ชื่อย่อประมวลฯ เช่น "พระราชบัญญัติจัดตั้งศาลปกครองและวิธีพิจารณาคดีปกครอง พ.ศ. 2542" "ป.ที่ดิน"
limitNoจำนวนคำวินิจฉัยสูงสุด 1–50 (ค่าเริ่มต้น 20)
numberNoเลขที่คำวินิจฉัยชี้ขาดอำนาจหน้าที่ระหว่างศาล เช่น "241/2569" หรือ "๒๔๑/๒๕๖๙" (มี "คำวินิจฉัยที่" นำหน้าได้) · ใช้อย่างใดอย่างหนึ่งกับ law
sectionNoมาตรา (ใช้คู่กับ law) เลขไทย/อารบิก เช่น "9" "59 ทวิ" "7/1" — มี "มาตรา"/"ม." นำหน้าได้ · ไม่รับวรรค/อนุมาตรา

Output Schema

NameRequiredDescription
noteNo
countNo
quotaNo
reasonNo
resultsNo
candidatesNo
disclaimerNo
attributionNo
match_levelNo
law_resolvedNo
outcome_noteNo
law_requestedNo
outcome_summaryNo
section_requestedNo
outcome_summary_scopeNo
baseline_outcome_summaryNo

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations (which already declare read-only/idempotent), the description discloses quota policy (1 call per Pro-gated invocation, empty/`reason` results still charge quota, malformed input and section_format_unsupported do not), Pro entitlement gating with rejection without charge, result ordering (newest decision first), and a full error taxonomy with meanings. That is exactly the operational context annotations cannot carry.

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?

Front-loaded with the two things an agent must know first (what it searches, and that it is Pro-gated), then organized by lookup mode, result shape, and error codes. It is dense and long, and the field-by-field enumeration of results overlaps with the existing output schema, but nearly every line carries semantics rather than filler.

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 lookup tool with quota, entitlements, fallbacks and a rich error surface, nothing an agent needs is missing: quotas, refusal behavior, retry rules, ordering, match_level interpretation, and the critical caveat that count=0 is not proof of absence (plus the instruction to copy attribution/disclaimer verbatim). Return-value detail is redundant with the output schema but the semantic notes on matched_citations.origins and outcome_summary are not.

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 earns an extra point by explaining cross-parameter behavior that the schema does not — that section is paired with law, that a section_not_found falls back to law-level results in the same call, and that law_requested/section_requested are echoes to compare against match_level before drawing conclusions. The number/section input formats largely restate the schema 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 first line names the exact resource (คำวินิจฉัยชี้ขาดอำนาจหน้าที่ระหว่างศาล) and the two lookup keys (ruling number, or law + section), and immediately excludes an adjacent use case ('ไม่ตอบว่าคดีหนึ่งต้องฟ้องศาลไหนจากข้อเท็จจริง') with a sibling pointer to search_law(corpus="court_ruling"). An agent can distinguish this from browse/search_law/verify_citation without opening any schema.

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 when-to-use (number vs law+section), explicit when-not (fact-pattern jurisdiction questions → search_law corpus="court_ruling"), and it even rules out needless retries ('section_not_found ... ไม่ต้องเรียกซ้ำ') while mandating retry in other cases ('law_not_found/ambiguous_law + candidates = เลือกชื่อแล้วเรียกซ้ำ').

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

deka_by_sectionA
Read-onlyIdempotent
Inspect

รายการคำพิพากษาฎีกาที่อ้างมาตราหนึ่ง ("มาตรานี้ศาลตีความไว้อย่างไร") — ค้นจากตารางการอ้างอิงที่สกัดจากฎีกา จึงแม่นกว่าค้นด้วยคำ. ใช้เมื่อรู้ชื่อกฎหมาย+มาตราแล้ว · ยังไม่รู้มาตรา/ค้นตามข้อเท็จจริง → search_law(corpus="deka") · รู้เลขฎีกาแล้วอยากอ่านเต็ม → get_deka · ตรวจว่าฎีกาหนึ่งอ้างมาตรานั้นจริง → verify_citation(deka_no, cited_law, cited_section) นับโควตา 1 ครั้งต่อการเรียก · อ่านอย่างเดียว · บริการฎีกาปิดชั่วคราวไม่หักโควตา (count=0 + reason="temporarily_unavailable")

อ่านผล: results = [{no, year_be, verdict, department, doctitle}] เรียงเลขฎีกาใหม่→เก่า ไม่มี full_text (อ่านเต็มด้วย get_deka(no)) · verdict=None ได้ตามปกติ ไม่ได้แปลว่าคดีไม่มีผล

  • count=0 + reason="ambiguous_law" = ชื่อนี้มีหลายฉบับ (ต่างปี) ไม่เดาให้ → เลือกจาก candidates แล้วเรียกซ้ำด้วยชื่อเต็ม · reason="law_not_found" = ไม่รู้จักชื่อนี้ (candidates = ชื่อใกล้เคียง) · count=0 ไม่มี reason = ชื่อถูก โดยทั่วไปแปลว่าไม่พบ ฎีกาอ้างมาตรานี้ในคลัง — ไม่ใช่หลักฐานว่าไม่มีบรรทัดฐาน (คลังไม่ครบทุกฉบับ และ related_laws เป็น best-effort อาจไม่แนบตอนระบบช้า)

  • law_resolved = ชื่อฉบับที่ใช้ค้นจริง (เมื่อชื่อที่ส่งไม่ตรงรูปที่เก็บแต่ระบุได้ฉบับเดียว)

  • related_laws ไม่ว่าง (ทั้งตอนมีผลและผลว่าง) = ฎีกาของมาตราเดียวกันอยู่ใต้ชื่อรูปอื่นอีกชุด (เช่น ชื่อเปล่ากับชื่อที่มี พ.ศ.) ต้องการครบให้เรียกซ้ำทีละชื่อ ห้ามรวมเป็นฉบับเดียวเอง · count ในนั้น = การอ้างอิงทั้งฉบับ ไม่ใช่ของมาตรานี้

NameRequiredDescriptionDefault
lawYesชื่อย่อกฎหมาย เช่น "ป.อ." "ป.พ.พ." "ป.วิ.อ." "ป.วิ.พ." หรือชื่อ พ.ร.บ. เช่น "พ.ร.บ.คุ้มครองแรงงาน" (มี/ไม่มี "พ.ศ.xxxx" ก็ได้ — ชื่อที่มีหลายปีจะได้ ambiguous_law) · ค่าที่แน่นอนดูได้จาก browse(kind="law_abbreviations") หรือ citation.law_abbrev ของ search_law
limitNoจำนวนฎีกาสูงสุด 1–50 (ค่าเริ่มต้น 20)
sectionYesเลขมาตรา เช่น "288" "๒๘๘" "มาตรา 288" "193 ทวิ" "7/1" — แปลงเลขไทย/ตัดคำว่า "มาตรา"/"ม." ให้เอง · ไม่รับวรรค/อนุมาตรา (ส่งมา + ไม่พบ = reason="section_format_unsupported")

Output Schema

NameRequiredDescription
lawNo
countNo
quotaNo
reasonNo
resultsNo
sectionNo
candidatesNo
disclaimerNo
attributionNo
law_resolvedNo
related_lawsNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent/non-destructive, and the description adds substantial behavior beyond them: quota cost of 1 per call, no quota charged when the service is temporarily down (count=0 + reason), ambiguous_law / law_not_found / section_format_unsupported handling, and the important caveat that an empty result is not evidence of no precedent (incomplete corpus, best-effort related_laws).

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 and sibling routing are front-loaded, then results shape, then error/edge-case bullets — a sensible order with high information density. It is long and dense (nested parentheticals, multiple bullet groups), which costs some scannability, but nearly every line carries operational meaning.

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?

Despite an output schema being present, the description still spells out the result fields (no, year_be, verdict, department, doctitle), ordering (newest first), absence of full_text with a pointer to get_deka, and the verdict=None interpretation. Combined with the error-state taxonomy, an agent has everything needed to call and interpret 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 coverage is 100%, so the baseline is 3; the description still adds value by tying parameter outcomes to behaviors — abbreviated law names, names with vs. without พ.ศ. producing ambiguous_law, and section formats that are accepted vs. rejected (วรรค/อนุมาตรา → section_format_unsupported). Most of this is echoed in the schema text, so it is enrichment rather than new semantics.

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?

Starts with a concrete verb+resource: a list of Supreme Court judgments citing a given section, and explains the retrieval mechanism (citation-reference table extracted from judgments, more precise than keyword search). It explicitly distinguishes itself from search_law, get_deka, and verify_citation, so an agent can route without opening any schema.

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?

Gives explicit when-to-use ("use when you already know the law name + section"), explicit when-not with a named alternative ("don't know the section / want fact-based search → search_law(corpus=\"deka\")", "know the deka number → get_deka", "check whether a judgment actually cites it → verify_citation"). The routing decision is fully determined.

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

get_dekaA
Read-onlyIdempotent
Inspect

ดึงคำพิพากษาศาลฎีกาฉบับเต็มหนึ่งฉบับด้วยเลขฎีกา — ใช้เมื่อรู้เลขแล้ว (จากผู้ใช้ หรือจากผล search_law/deka_by_section) และต้องอ่านข้อเท็จจริง/เหตุผล/คำพิพากษาเต็ม. ใช้ tool อื่นแทนเมื่อ: ยังไม่รู้เลข → search_law(corpus="deka") · หาฎีกาที่อ้างมาตราหนึ่ง → deka_by_section · แค่ตรวจว่าฎีกานี้มีจริง/อ้างมาตรานั้นจริง/มีข้อความที่ยกมาจริง → verify_citation (ได้สถานะชัดเจน) นับโควตา 1 ครั้งต่อการเรียก · อ่านอย่างเดียว · บริการฎีกาปิดชั่วคราวไม่หักโควตา

อ่านผล:

  • found=False = ไม่พบหรือยังเสิร์ฟไม่ได้ (เช่น เป็นบันทึกย่อ) — ใช้ verify_citation แยกสาเหตุ (เลขคดีรวมสำนวนต้องตรวจมือ) ห้ามสรุปว่าฎีกาไม่มีอยู่จริง · found=False + reason="temporarily_unavailable" = บริการปิดชั่วคราว

  • citation.verdict=None ได้ตามปกติ (คำบังคับไม่ระบุผลเทียบศาลล่าง เช่น "พิพากษาให้จำเลยชำระเงิน…") — ไม่ได้แปลว่าคดีไม่มีผล ให้อ่าน full_text · citation.appellant = ฝ่ายที่ยื่นฎีกา (None ถ้าระบุไม่ได้)

  • full_text = เนื้อความต่อเนื่องที่ประกอบจาก chunk แล้ว (บางจุดอาจเว้นวรรคหายตรงรอยต่อ) · cited = มาตราที่อ้างแบบ structured [{law, section, law_code}] (law_code มีเมื่อจับคู่ฉบับได้ ใช้ต่อ get_law_document)

  • full_text อาจมีชื่อจริงคู่ความ — ทำตาม deka_privacy_note ก่อนเผยแพร่ต่อ

NameRequiredDescriptionDefault
deka_noYesเลขฎีการูป "เลข/ปี พ.ศ." เช่น "1729/2569" · คดีรวมสำนวนใช้ช่วงเลข "257-258/2463" · ใช้เลขอารบิกเท่านั้น ไม่ใส่คำนำหน้า "ฎีกาที่" (เทียบตรงตัว ไม่แปลงให้)

Output Schema

NameRequiredDescription
citedNo
foundNo
quotaNo
chunksNo
reasonNo
deka_noNo
citationNo
full_textNo
disclaimerNo
attributionNo
deka_privacy_noteNo

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations: quota cost of one call per invocation, no quota deduction during service downtime, and precise meaning of found=False plus reason="temporarily_unavailable". It also warns that case-number-combined records must be checked manually and forbids concluding a judgment does not exist from found=False.

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?

Front-loaded with purpose and routing, then cleanly separated into an "อ่านผล" (reading the result) section. It runs long, but nearly every line carries operational meaning; a small amount of overlap with the schema's format note could be trimmed.

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?

Even though an output schema exists, the description supplies the interpretation an agent actually needs: verdict=None is normal, appellant is the filing party or None, full_text is chunk-stitched with possible spacing loss at seams, and cited entries carry law_code usable with get_law_document. Privacy handling is flagged via deka_privacy_note.

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% and the schema already documents the "number/year BE" format, so heavy lifting is done structurally. The description adds provenance guidance (where the number comes from) and reinforces that the lookup is an exact match with no normalization, which is marginally useful beyond 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?

States a specific verb and resource: fetch one full Supreme Court judgment by its deka number, including the full facts/reasoning/judgment text. It explicitly distinguishes itself from search_law, deka_by_section, and verify_citation, so an agent can route without opening any schema.

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?

Gives a positive precondition (you already know the number, from the user or from search_law/deka_by_section, and need the full text) and an explicit negative list routing to the correct siblings with the condition that selects each. Nothing is left to inference.

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

get_gazette_documentA
Read-onlyIdempotent
Inspect

ดึงเอกสารเต็มจากราชกิจจานุเบกษาตามเล่ม/ตอน (เฉพาะ corpus='gazette') — ใช้หลัง search_law เจอเอกสารราชกิจจาฯ แล้ว. ตัวบทกฎหมายใช้ get_law_document · คำพิพากษาฎีกาใช้ get_deka

นับโควตา 1 ครั้งต่อการเรียก (ทุกครั้งที่เลื่อนหน้าด้วย) · อ่านอย่างเดียว · คืนหน้าละ 50 เอกสาร (เล่ม, ตอน) หนึ่งชุดมีได้หลายพันเอกสาร — ใส่ category/no ให้แคบก่อนเลื่อน offset · truncated=true = ยังมีหน้าถัดไป · available_categories มีค่า = category ที่ใส่ไม่มีในเล่ม/ตอนนี้ ให้เลือกจากรายการนั้น เลขประจำตัวประชาชนในเนื้อความถูกแทนด้วย X โดยตั้งใจเพื่อความเป็นส่วนตัว ไม่ใช่ OCR อ่านผิด

NameRequiredDescriptionDefault
noNoเลขลำดับเอกสาร — ใช้ citation.no ของผล search_law เพื่อดึงเอกสารเดียว (ไม่ระบุ = ทุกเอกสารในเล่ม/ตอน)
offsetNoข้ามเอกสารกี่รายการก่อนเริ่มคืนผล (หน้าละ 50) — ใช้เมื่อ truncated=true เช่นหน้าถัดไปใส่ 50; การเลื่อนหน้าแต่ละครั้งนับโควตา 1 ครั้ง
book_noYesเลขเล่ม เช่น "142" — ใช้ citation.book_no ของผล search_law
sectionYesเลขตอนเฉพาะตัวเลข เช่น "1" — ใช้ citation.section ของผล search_law (ตอนพิเศษ: คำว่า "พิเศษ" ใส่ใน category)
categoryNoประเภทราชกิจจาฯ — "ก"=กฎหมาย, "ข"=ฐานันดร, "ค"=ทะเบียนการค้า, "ง"=ประกาศ; ตอนพิเศษใส่ตัวอักษร+"พิเศษ" เช่น "ง พิเศษ" (ส่วน section ใส่เลขตอนอย่างเดียว เช่น "253") (กรองให้แคบลง)

Output Schema

NameRequiredDescription
countYes
quotaYes
totalYes
offsetYes
book_noYes
sectionYes
documentsYes
truncatedYes
disclaimerYes
attributionYes
available_categoriesYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/non-destructive, but the description adds real operational context: quota cost of 1 per call including each page turn, 50 documents per page, the fact a single book/section can hold thousands of documents, the meaning of truncated=true, the available_categories fallback, and the deliberate PII masking of national IDs. None of that is recoverable from annotations or schema.

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 each subsequent line carries a distinct fact (alternatives, quota, page size, truncation, category fallback, PII). It is dense and slightly long, but no sentence is filler.

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?

Covers everything an agent needs: when to call it, cost model, pagination mechanics, how to recover when the category is wrong, and the expected availability of an output schema for return shape. Nothing material is missing for a paged, quota-metered read tool.

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 a 3 baseline is warranted, but the description goes further: it explains the offset/paging strategy, the category narrowing workflow, and the non-obvious mapping where 'พิเศษ' belongs in category while section takes only the number. That adds genuine meaning beyond the schema text.

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+resource ('ดึงเอกสารเต็มจากราชกิจจานุเบกษา') and scopes it to corpus='gazette', then explicitly contrasts with get_law_document and get_deka for other document types. An agent can distinguish it from every sibling without opening a schema.

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?

Gives an explicit trigger ('ใช้หลัง search_law เจอเอกสารราชกิจจาฯ แล้ว') and names the two alternatives with the condition that selects each (ตัวบทกฎหมาย → get_law_document, คำพิพากษา → get_deka). It also advises narrowing with category/no before paging, which is a concrete usage rule.

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

get_law_documentA
Read-onlyIdempotent
Inspect

ดึงตัวบทกฎหมายเต็มด้วย law_code — ทั้งฉบับ หรือเฉพาะมาตรา (unit_label) และเลือกฉบับแก้ไขได้ (timeline_code). ใช้หลัง search_law ได้ law_code แล้ว · ราชกิจจาฯ ใช้ get_gazette_document · ฎีกาใช้ get_deka · แค่ตรวจว่ามาตรา/ข้อความที่อ้างมีจริง ใช้ verify_citation (คืนสถานะชัดเจนกว่า) นับโควตา 1 ครั้งต่อการเรียก · อ่านอย่างเดียว

อ่านผล:

  • found=False = ไม่เจอ law_code/unit_label/timeline_code นี้

  • full_text=None เมื่อไม่ระบุ unit_label แต่ฉบับยาวเกิน → เลือกมาตราจาก section_index (เฉพาะตัวบทหลัก) แล้วเรียกซ้ำพร้อม unit_label

  • citation.unit_scope ไม่ None = ไม่มีมาตรานี้ในตัวบทหลัก เนื้อหามาจากฉบับแก้ไข/คำสั่งที่แนบท้าย (ค่า = ชื่อฉบับนั้น)

  • เป็นฉบับชำระที่อาจยังไม่รวมการแก้ไขล่าสุด (ดู law_freshness_note)

NameRequiredDescriptionDefault
law_codeYesรหัสกฎหมาย จาก citation.law_code ของผล search_law
unit_labelNoมาตราที่ต้องการ ใช้ citation.unit_label ของผล search_law เช่น "มาตรา 288" — ต้องมีคำนำหน้า "มาตรา"/"ข้อ" (เลขเปล่าไม่เจอ; เลขไทย/อารบิกใช้ได้) · ไม่ระบุ = ทั้งฉบับ (ฉบับยาวจะได้ section_index แทน full_text)
timeline_codeNoระบุ = ฉบับแก้ไขนั้นเจาะจง (จาก get_law_versions); ไม่ระบุ = ฉบับล่าสุด

Output Schema

NameRequiredDescription
foundNo
quotaNo
citationNo
law_codeNo
full_textNo
disclaimerNo
attributionNo
section_indexNo
law_freshness_noteNo

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the readOnly/idempotent annotations, the description discloses the quota cost (1 call per invocation) and the guidance for partial results: full_text=None on long acts means choosing a section from section_index and calling again with unit_label. The remaining return-value notes (found=False, citation.unit_scope, law_freshness_note) are useful, but an output schema exists and likely repeats much of this field-level detail.

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 structure is strong and front-loaded: purpose first, then sibling routing, then result-reading bullets. The 'อ่านผล' block is comparatively long, but each bullet conveys a distinct recovery or interpretation step rather than padding.

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 read-only three-parameter fetch tool with full schema coverage and an output schema, the definition covers prerequisites, alternatives, quota, and the failure/recovery path. What an agent needs in order to call it correctly and act on a partial result is present.

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?

Schema coverage is 100%, and the schema already documents the 'มาตรา' prefix requirement, the whole-act default, and that timeline_code comes from get_law_versions. The description's mention of the three parameters adds only marginal meaning beyond the schema, so the baseline 3 applies.

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 first sentence states a specific verb and resource (fetch the full legal text by law_code), plus its two scoping options (whole act vs. a specific section, and selecting an amendment version). It is immediately distinguishable from search_law, get_gazette_document, get_deka, and verify_citation, which are all named.

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 an explicit prerequisite (use after search_law yields a law_code) and routes to each alternative by condition: gazette documents go to get_gazette_document, supreme-court rulings to get_deka, and mere existence-checking of a cited section to verify_citation, which it notes returns a clearer status.

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

get_law_versionsA
Read-onlyIdempotent
Inspect

รายการฉบับแก้ไขทั้งหมดของมาตราหนึ่ง เรียงเก่า→ใหม่ — ใช้หา timeline_code ไปเรียก get_law_document เมื่อต้องการถ้อยคำตามฉบับที่ใช้บังคับในอดีต (search_law/get_law_document คืนฉบับล่าสุดเป็นค่าเริ่มต้น). ไม่นับโควตา · อ่านอย่างเดียว

อ่านผล: versions=[{timeline_code, version_seq, is_current}] นับเฉพาะฉบับที่มีมาตรานี้ในตัวบทหลัก · count=0 ไม่ได้แปลว่าไม่มีเนื้อหานี้ในกฎหมายฉบับนี้ — อาจอยู่ในฉบับแก้ไขที่แนบท้าย ให้ตรวจต่อด้วย verify_citation/get_law_document (คืน unit_scope บอกว่ามาจากฉบับใด)

NameRequiredDescriptionDefault
law_codeYesรหัสกฎหมาย จาก citation.law_code ของผล search_law
unit_labelYesใช้ citation.unit_label ของผล search_law เช่น "มาตรา 288" — ต้องมีคำนำหน้า "มาตรา"/"ข้อ" (เลขเปล่าได้ผลว่าง)

Output Schema

NameRequiredDescription
countYes
law_codeYes
versionsYes
disclaimerYes
unit_labelYes
attributionYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds quota information ('ไม่นับโควตา') that is not in the annotations, plus a non-obvious counting rule: only versions where the section appears in the main body are counted, so count=0 does not mean the content is absent. That said, it does not explain ordering guarantees beyond 'old→new' or whether is_current is always exactly one entry.

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?

Front-loaded with the purpose, then usage, then a compact result-reading note separated by line breaks; no filler sentences. It is dense with parenthetical asides, which slightly slows scanning but each clause carries actionable information.

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?

With an output schema present, the description need not restate the return shape, yet the count=0 caveat and the 'main body only' semantics are genuinely non-derivable from the schema and are exactly what prevents a wrong conclusion. Nothing an agent needs to interpret the result correctly is missing.

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?

Schema coverage is 100% and both parameters are documented there, including the citation-derived provenance and the 'มาตรา'/'ข้อ' prefix requirement. The description only indirectly touches parameter meaning via the main-body restriction on unit_label matching, so baseline 3 is appropriate.

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+resource: the list of all amendment versions of one section, ordered old→new, and explicitly frames the output as the timeline_code needed for get_law_document. It also distinguishes itself from search_law/get_law_document by noting those return the latest version by default.

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?

Gives an explicit trigger condition (when historical wording in force at an earlier time is needed) plus the alternatives that default to the current text. It also names the correct follow-up path (verify_citation/get_law_document) when count=0, so the agent knows what to do next rather than retrying this tool.

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

research_dossierA
Read-onlyIdempotent
Inspect

รวบรวม "สำนวนวิจัย" ของประเด็นเดียวในคำเรียกเดียว: มาตราตัวบท + คำพิพากษาฎีกา + ความเห็นกฤษฎีกา (+ คำวินิจฉัยชี้ขาดอำนาจหน้าที่ระหว่างศาล เฉพาะแพ็กเกจ Pro) — ทางลัดแทนการเรียก search_law หลายรอบแล้ว deka_by_section ทีละมาตราเอง (ไม่มี ranking ของตัวเอง). ใช้ search_law แทนเมื่อต้องกรอง category/ปี/subject/law_type หรือต้องการแหล่งเดียว (dossier ไม่มี filter และไม่ค้นราชกิจจาฯ)

ต้นทุน: นับโควตา 1 ครั้งต่อการเรียก (เท่า search_law แม้รันการค้นย่อยหลายรอบ) · อ่านอย่างเดียว · ใช้เวลาได้ถึง ~60 วินาที · รับงานพร้อมกันได้จำกัด — คิวเต็มปฏิเสธโดยไม่หักโควตา แต่ error หมดเวลา เกิดหลังหักโควตาแล้วและไม่คืน (ลองใหม่ = หักอีกครั้ง ควรแคบคำถามก่อน)

อ่านผล:

  • case_law_by_section = ฎีกาที่ยืนยันแล้วว่าอ้างอิงมาตราใน statute_sections (pivot แบบ deterministic ของ 3 มาตราแรก เฉพาะ ป.อ./ป.พ.พ./ป.วิ.อ./ป.วิ.พ. · กฎหมายอื่นได้ว่างเสมอ ดู case_law_by_semantic_search · มีแค่ข้อมูลสรุป ไม่มี full_text)

  • case_law_by_semantic_search = ฎีกาที่จับคู่เชิงความหมายกับ query เท่านั้น ไม่ได้ตรวจว่าอ้างมาตราเหล่านั้น — ห้ามให้น้ำหนักหลักฐานเท่า case_law_by_section

  • ไม่จัดฎีกาเป็น "สนับสนุน/คัดค้าน" จุดยืนใด — verdict/department/doctitle เป็นข้อมูลดิบให้ตีความเอง

  • evidence_gaps.notes ไม่ว่าง (บางส่วนล้ม/ถูกตัดเพราะเวลา/เจอมาตราแต่ไม่เจอฎีกาที่อ้าง) → บอกผู้ใช้ตามข้อความ ห้ามสรุปว่า "ไม่มี" · note ที่มีวลี "ขั้นค้นทำงานครบ" = ส่วนนั้นไม่ขาด แต่ version_count อาจต่ำกว่าจริง

  • related_court_rulings (เฉพาะแพ็กเกจ Pro; ผู้ใช้อื่นไม่มี key นี้) = คำวินิจฉัยชี้ขาดอำนาจหน้าที่ระหว่างศาล จากคลังเล็กที่เป็นเรื่องอำนาจหน้าที่ระหว่างศาลเป็นหลัก — ส่งกลับทุก query แต่เกี่ยวข้องเฉพาะเมื่อประเด็นคือ "ศาลไหนมีอำนาจ"; ประเด็นอื่นห้ามอ้าง · แต่ละรายการมี via: "section" = อ้างมาตราของตัวบทที่เจอ · "semantic" = ใกล้ query เชิงความหมาย · "law" = อ้างกฎหมายเดียวกันแต่ไม่พบ ว่าอ้างมาตราที่เจอ (อาจอ้างมาตราอื่นหรือไม่ระบุมาตรา — ฉบับใหม่สุด ไม่ใช่ที่ใกล้ query) · ลำดับ: section 1 รายการ → semantic → section ที่เหลือ → law (เติมช่องที่เหลือ) · relation_origins (มีเฉพาะรายการที่ค้นเจอจากกฎหมาย/มาตราของตัวบทด้วย) = ที่มาของความสัมพันธ์นั้น ("source" = ระบบต้นทางระบุ) — บอกที่มาเท่านั้น ระดับมาตราดูจาก via: "section" = อ้างมาตราตรง · "semantic"/"law" ไม่ได้ยืนยันว่าอ้างมาตรานั้น

  • court_rulings_note (Pro) = ขอบเขตข้อมูลของ related_court_rulings (คำวินิจฉัยส่วนใหญ่ไม่ระบุมาตรา) — เมื่อไม่เป็น null ให้บอกผู้ใช้ ทุกครั้งที่ตอบเรื่องคำวินิจฉัยที่อ้างกฎหมาย/มาตรา และห้ามสรุปว่าไม่มีคำวินิจฉัยที่อ้างมาตรานั้น

  • quota.notice, law_freshness_note, deka_privacy_note ใช้แบบเดียวกับ search_law

NameRequiredDescriptionDefault
queryYesคำค้นภาษาไทย เช่น "ค่าไถ่การเรียกร้องประกันตัว" (≤2,000 ตัวอักษร — ข้อเท็จจริงยาว ให้สรุปเป็นประเด็นกฎหมายสั้นๆ ก่อน)
top_k_opinionsNoจำนวนความเห็นกฤษฎีกาสูงสุด (ค่าเริ่มต้น 3, สูงสุด 20)
top_k_statutesNoจำนวนมาตราตัวบทสูงสุด (ค่าเริ่มต้น 5, สูงสุด 20)
top_k_court_rulingsNoจำนวนคำวินิจฉัยชี้ขาดอำนาจหน้าที่ระหว่างศาลสูงสุด (ค่าเริ่มต้น 3, สูงสุด 20; เฉพาะแพ็กเกจ Pro — ผู้ใช้อื่นไม่มีผลต่อการเรียก)
top_k_deka_semanticNoจำนวนคำพิพากษาฎีกา (ค้นเชิงความหมาย) สูงสุด (ค่าเริ่มต้น 5, สูงสุด 20)

Output Schema

NameRequiredDescription
queryYes
quotaYes
disclaimerYes
attributionYes
evidence_gapsYes
related_opinionsYes
statute_sectionsYes
deka_privacy_noteYes
court_rulings_noteNo
law_freshness_noteYes
case_law_by_sectionYes
related_court_rulingsNo
case_law_by_semantic_searchYes

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: one quota unit per call regardless of sub-searches, up to ~60s runtime, limited concurrency, queue-full rejection that does not charge quota, and — critically — timeout errors that occur after quota is charged and are non-refundable, with advice to narrow the query. That is exactly the kind of non-obvious operational behavior an agent cannot infer from structured fields.

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

Conciseness3/5

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

Purpose and the sibling alternative are front-loaded, and the cost/caveat blocks are well-delimited with bullets. However the bulk of the text is return-value interpretation (case_law_by_section vs semantic, via/relation_origins, court_rulings_note) despite an output schema existing, making it long and dense for a 5-parameter tool.

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?

Covers cost, latency, concurrency, partial-failure semantics, and the interpretive warnings that matter most — do not treat semantic matches as equal evidence, do not conclude 'none' when evidence_gaps.notes is populated, and only cite court rulings when the issue is jurisdictional. Nothing needed to call it correctly or to report results faithfully is missing.

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?

Schema description coverage is 100%, and each top_k parameter is fully documented with defaults and maxima in the schema itself. The description adds no per-parameter meaning beyond the blanket statement that the dossier has no filters, so the baseline 3 applies.

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 ('รวบรวม "สำนวนวิจัย" ของประเด็นเดียว') and enumerates exactly what the dossier bundles: statutes, Supreme Court judgments, and Council of State opinions. It also positions itself against named siblings — a shortcut replacing repeated search_law calls plus per-section deka_by_section — so the agent can distinguish it without opening any schema.

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 the alternative and the condition that selects it: use search_law instead when filtering by category/year/subject/law_type or when a single source is wanted, and notes the dossier has no filters and does not search the Royal Gazette. It also names case_law_by_semantic_search for non-core statutes, giving a full routing map.

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

search_lawA
Read-onlyIdempotent
Inspect

ค้นกฎหมายไทยแบบ hybrid (ความหมาย + คำตรงตัว) จาก 4 แหล่ง — จุดเริ่มต้นของคำถามที่ยังไม่รู้เลขเอกสาร. นับโควตา 1 ครั้งต่อการเรียก · อ่านอย่างเดียว

แหล่ง (ไม่ระบุ corpus = ค้นทั้ง 4 แหล่งปนกัน):

  • corpus='law' ตัวบทรายมาตรา (ฉบับชำระของกฤษฎีกา — อาจยังไม่รวมการแก้ไขที่เพิ่งประกาศ เคสสำคัญต้องตรวจตัวบททางการ)

  • corpus='gazette' ราชกิจจานุเบกษา + ประกาศ/แจ้งความ

  • corpus='opinion' ความเห็นกฤษฎีกา — มีแค่ชื่อเรื่อง/หมวด/ปี + ลิงก์ PDF ไม่มีเนื้อหาเต็ม

  • corpus="deka" คำพิพากษาศาลฎีกา — full_text อาจมีชื่อจริงคู่ความ (ดู deka_privacy_note)

  • corpus='court_ruling' คำวินิจฉัยชี้ขาดอำนาจหน้าที่ระหว่างศาล (เช่น ปกครอง/ยุติธรรม/ทหาร) — เฉพาะแพ็กเกจ Pro ต้องระบุ corpus เอง (ไม่อยู่ในการค้นแบบไม่ระบุ) · ไม่ใช่ Pro ถูกปฏิเสธโดยไม่นับโควตา

ใช้ tool อื่นแทนเมื่อ: รู้เลขฎีกาแล้ว → get_deka · หาฎีกาที่อ้างมาตราเจาะจง → deka_by_section · ต้องการตัวบท+ฎีกา+ความเห็นของประเด็นเดียวในคำเรียกเดียว → research_dossier · ตรวจว่าที่อ้างมีจริง → verify_citation

อ่านผล:

  • citation.law_code/unit_label ส่งต่อ get_law_document/get_law_versions ได้ตรงๆ · citation.law_abbrev+section_no (เฉพาะ ป.อ./ป.พ.พ./ป.วิ.อ./ป.วิ.พ.) ส่งต่อ deka_by_section ได้โดยไม่ต้อง parse doctitle

  • citation.unit_scope ไม่ None = เนื้อหามาจากฉบับแก้ไข/คำสั่งที่แนบท้ายเอกสารชำระ ไม่ใช่ตัวบทหลัก (section_no/law_abbrev เป็น None)

  • version_count >1 = มาตราเคยถูกแก้ (แสดงฉบับล่าสุด; 1 ไม่ได้แปลว่าไม่เคยแก้ — ดู get_law_versions) · citation.is_repealed=True = ฉบับถูกยกเลิก ระวังก่อนอ้างอิง

  • degraded_note: ข้อความที่มีวลี "ขั้นค้นทำงานครบ" = ผลไม่ขาด แต่ version_count อาจต่ำกว่าจริง · ข้อความอื่น = ข้ามบางขั้น การค้น ผลอาจไม่ครบ — บอกผู้ใช้ตามข้อความ ห้ามสรุปว่า "ไม่มี" · ค้นซ้ำนับโควตาเพิ่ม ให้ผู้ใช้ตัดสินใจ

  • quota.notice มีค่า (โควตาใกล้เต็ม หรือ Pro ใกล้หมดอายุ) → บอกผู้ใช้หนึ่งครั้ง · feedback_hint มีค่า → บอกว่ารายงานผ่าน submit_feedback ได้

NameRequiredDescriptionDefault
queryYesคำค้นภาษาไทย เช่น "ลูกจ้างมีสิทธิลาคลอดกี่วัน" (≤2,000 ตัวอักษร — ข้อเท็จจริงยาว ให้สรุปเป็นประเด็นกฎหมายสั้นๆ แล้วค้นทีละประเด็น)
top_kNoจำนวนผลลัพธ์สูงสุด 1–20 (ค่าเริ่มต้น 5; เกินช่วงถูกปรับเข้าช่วงเอง)
corpusNo"law"=ตัวบทกฎหมาย | "gazette"=ราชกิจจาฯ | "opinion"=ความเห็นกฤษฎีกา | "deka"=คำพิพากษาศาลฎีกา | "court_ruling"=คำวินิจฉัยชี้ขาดอำนาจหน้าที่ระหว่างศาล (เฉพาะแพ็กเกจ Pro; ต้องระบุเอง) | ไม่ระบุ=ค้น 4 แหล่งแรก (ไม่รวม court_ruling) · ต้องสะกดตรงทุกตัวอักษร ค่าอื่นถูกปฏิเสธโดยไม่นับโควตา
subjectNoกรองสาขากฎหมาย (corpus=law) เช่น "แรงงาน" "ภาษี" "ที่ดิน" "อาญา" — ดูรายการจาก browse(kind="subjects")
year_toNoปีสิ้นสุดเป็น **ค.ศ.** (รวมปีนั้น)
categoryNoกรองประเภทราชกิจจาฯ — "ก"=กฎหมาย, "ข"=ฐานันดร, "ค"=ทะเบียนการค้า, "ง"=ประกาศ · ใช้คู่กับ corpus="gazette" เสมอ (ไม่งั้นผลจากคลังอื่นถูกตัดหมด) · กรองหลังคัดผู้สมัคร หมวดแคบอาจได้ผลว่าง
law_typeNoกรองประเภท เช่น "พระราชบัญญัติ" "ประมวลกฎหมาย" "พระราชกฤษฎีกา" "กฎกระทรวง"
year_fromNoปีเริ่มต้นเป็น **ค.ศ.** (เช่น 2020 = พ.ศ. 2563; พ.ศ. ลบ 543)
include_all_versionsNoFalse (ดีฟอลต์)=เฉพาะฉบับล่าสุด; True=ทุกฉบับแก้ไข (วิจัย/คดีเก่า)

Output Schema

NameRequiredDescription
countYes
queryYes
quotaYes
resultsYes
disclaimerYes
attributionYes
degraded_noteYes
feedback_hintYes
expanded_termsYes
deka_privacy_noteYes
law_freshness_noteYes

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely non-annotated context: quota costs 1 call per invocation, re-searching costs more quota, non-Pro court_ruling requests are rejected without consuming quota, and result fields like degraded_note, version_count, is_repealed and quota.notice must be interpreted and relayed to the user. Some of this duplicates the output schema, and the field-by-field reading guide is longer than the behavioral disclosure itself, so it sits at adequate rather than exemplary.

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?

Front-loads the core purpose and quota cost in two short lines, then organizes the rest into a corpus list, an alternatives block, and a result-reading block. Dense but scannable; the result-reading section is the longest and partly restates output-schema fields, which costs some tightness.

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 9-parameter multi-corpus search, the description covers source scope, quota, plan gating, temporal/version caveats, privacy caveats, fallback routing, and even how to forward citation.law_code / section_no into downstream tools. An agent has everything needed to call it and to interpret and route the results 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?

Schema coverage is 100%, so baseline is 3; the description still adds meaning the schema does not carry — that omitting corpus searches the first four sources and silently excludes court_ruling, and that law results may lag recently published amendments and must be checked against the official text. It also warns that a degraded_note mentioning partial steps means the agent must not conclude 'not found'.

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?

Opens with a specific verb+resource: hybrid (semantic + keyword) search of Thai law across 4 source corpora, and explicitly frames itself as the starting point when the document number is unknown. It enumerates each corpus with what it contains, so an agent can tell exactly what this returns versus get_law_document or get_deka.

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?

Contains an explicit routing block ('use another tool instead when') naming four siblings — get_deka, deka_by_section, research_dossier, verify_citation — each with the condition that selects it. It also states when court_ruling is and is not searched by default and who is allowed to request it.

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

submit_feedbackAInspect

ส่งความเห็น/รายงานปัญหาของ ผู้ใช้ กลับให้ทีมงาน Thai Legal (ต้องเชื่อมต่อบัญชีแล้ว).

เรียกเมื่อไหร่ (เรียงจากชัดเจนที่สุด → คลุมเครือที่สุด):

  1. ผู้ใช้ขอส่งตรงๆ — "ส่ง feedback" / "แจ้งปัญหา" / "รายงานให้ทีมงาน" ← ต้องไม่พลาด

  2. ผู้ใช้ยืนยันว่ากฎหมาย/เอกสารที่ควรมีอยู่แต่ค้นไม่เจอ · เนื้อหาผิด · ขอความสามารถใหม่

  3. ผู้ใช้บอกว่าผลไม่ตรง และเห็นชอบให้รายงาน — ไม่ใช่แค่บ่นแล้วให้ค้นใหม่

ห้ามเรียกเองเมื่อผู้ใช้เพียงเปลี่ยนคำค้นหรือถามคำถามใหม่ — รายงานที่ไม่ได้มาจากเจตนา ของผู้ใช้ทำให้ข้อมูลเป็นขยะและทำให้ทีมงานไล่ปัญหาที่ไม่มีอยู่

ข้อกำกับ:

  • ส่งเฉพาะสิ่งที่ผู้ใช้พูดจริง ห้ามแต่งขึ้นเอง ห้ามสรุปให้นุ่มลง — ใส่คำของผู้ใช้ใน message ให้ใกล้เคียงที่สุด

  • รายงานเรื่องผลค้น: ส่ง query ที่ใช้ค้นจริงมาด้วย — เป็นสิ่งเดียวที่ทำให้ทีมงาน reproduce ได้ ถ้าไม่มี รายงานนั้นแทบไร้ประโยชน์ · เรื่องโควตา/ราคา/ขอฟีเจอร์ ไม่ต้องใส่ query (ไม่แนบคำค้นเกินจำเป็น — เนื้อหาคำถามของผู้ใช้เป็นข้อมูลอ่อนไหว)

  • ห้ามใส่ข้อมูลที่ระบุตัวบุคคล ชื่อลูกความ เลขคดี หรือข้อเท็จจริงของคดี — เขียนเป็น ประเด็นกฎหมายเท่านั้น (ถ้าผู้ใช้พิมพ์มา ให้เรียบเรียงตัดส่วนที่ระบุตัวตนออกก่อน)

ไม่นับโควตา · บันทึกข้อมูลถึงทีมงาน (ไม่ใช่อ่านอย่างเดียว) · จำกัดความถี่ต่อผู้ใช้ อ่านผล: ok=True = บันทึกแล้ว (มี reference) · ok=False ดู reason ("auth_required"/"rate_limited"/"empty_message"/ "unavailable") ทุกกรณีมี support_email ให้ผู้ใช้ติดต่อตรง · reply = ข้อความบอกผู้ใช้ได้ทันที · duplicate=True = เคยรายงานเรื่องนี้แล้ว

NameRequiredDescriptionDefault
kindYesประเภทปัญหา — "data_gap" (ควรมีแต่หาไม่เจอ) | "wrong_result" (เจอแต่ไม่ตรง/อันดับแย่) | "wrong_content" (เนื้อหาผิด/OCR เพี้ยน) | "stale_text" (ตัวบทล้าสมัย) | "feature_request" | "bug" | "other" (ค่าที่ไม่รู้จักจะถูกเก็บเป็น "other")
queryNoคำค้นที่ให้ผลมีปัญหา — ใส่เฉพาะรายงานเรื่องผลค้น (wrong_result/data_gap/…); ไม่ต้องใส่เมื่อเป็นเรื่องโควตา ราคา หรือขอฟีเจอร์
messageYesเนื้อหารายงานด้วยคำของผู้ใช้ (บังคับ)
expectedNoสิ่งที่ผู้ใช้คาดว่าควรเจอ เช่น "ควรเจอ ป.พ.พ. มาตรา 420"
citationsNoอ้างอิงผลที่มีปัญหา (คัดจาก citation ของผล search_law เช่น law_code)

Output Schema

NameRequiredDescription
okNo
noteNo
replyNo
reasonNo
duplicateNo
referenceNo
support_emailNo

TDQS

A4.8/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: it records data for the team, does not count against quota, has per-user rate limits, and explains ok/reason/support_email/reply/duplicate outcomes. The description also warns against fabricated or softened reports and explains the duplicate flag.

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 purpose and when-to-call rules, then structured into clear constraints and result behavior. It is longer than strictly necessary and repeats some `query` guidance already present in the schema, but the length is largely justified by the privacy and reporting requirements.

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 a five-parameter write tool with an output schema, the description covers the important gaps: auth requirement, reporting constraints, privacy redaction, rate limiting, duplicate detection, and failure reasons. Nothing essential for correct invocation appears 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 schema already documents all five parameters. The description still adds meaningful semantics: include `query` only for search-result reports and omit it for quota/pricing/feature requests, and preserve the user's actual words in `message` while removing identifying details.

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 precise verb and resource: send the user's feedback/problem reports back to the Thai Legal team, and adds the prerequisite that the account must be connected. This is clearly distinct from the sibling search/research 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?

Gives an explicit ranked list of when to call, including direct user requests and confirmed reports of missing/wrong content. It also states a clear when-not rule: do not call merely because the user changes search terms or asks a new question.

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

verify_citationA
Read-onlyIdempotent
Inspect

ตรวจว่าการอ้างอิงหนึ่งรายการมีจริงในคลัง — ใช้ก่อนยกมาตรา/ฎีกา/ข้อความที่อ้างให้ผู้ใช้ (กันอ้างผิด/แต่งขึ้น). ตรวจแบบ deterministic ไม่ใช่ AI ตัดสินเนื้อหา: (1) ฎีกา/มาตรานี้มีในคลังไหม (2) ฎีกานี้อ้างมาตราที่ว่าจริงไหม (3) ข้อความที่อ้างมีอยู่ในเนื้อหาจริงแบบตรงตัวไหม — ไม่ตัดสินทิศทางคำวินิจฉัย ต้องอ่าน full_text/section_text เอง เอกสารที่มีหลายการอ้างอิง → batch_citation_audit (Pro) ตรวจรวดเดียว · ต้องการเนื้อหาเต็มเพื่ออ่าน → get_deka/get_law_document นับโควตา 1 ครั้งต่อการเรียก · อ่านอย่างเดียว · ผสมสองโหมด/ขาด field คู่ถูกปฏิเสธก่อนหักโควตา · บริการฎีกาปิดชั่วคราว (เมื่อส่ง deka_no) ไม่หักโควตา

เลือกได้โหมดเดียว (ห้ามผสม):

  • ฎีกา: deka_no (+ cited_law+cited_section และ/หรือ quoted_text)

  • มาตรา: law_code + unit_label (+ quoted_text)

อ่านผล:

  • case_status/statute_status: "verified" | "not_found_in_corpus" | "cannot_verify" (ดู reason) — not_found_in_corpus = ไม่พบในคลังที่ตรวจได้ ไม่ใช่ข้อพิสูจน์ว่าไม่มีอยู่จริง

  • citation_attribution (เมื่อส่ง cited_law) / quote_grounding (เมื่อส่ง quoted_text): "verified" | "not_found" | "cannot_verify" (citation_attribution มี "unknown" ด้วย = ไม่ทราบรูปแบบที่เก็บของกฎหมายนั้น ไม่ใช่หลักฐานว่าไม่ได้อ้าง) — matched_snippet ตัดจากข้อความหลัง normalize ไม่ใช่สำเนาตรงตัวของต้นฉบับ

  • title_marked_repealed=True = ชื่อฉบับมี "(ยกเลิก)" (ไม่ใช่สถานะทางกฎหมายที่ยืนยันแล้ว — ตรวจ source_url)

  • unit_scope ไม่ None = มาตรานี้มาจากฉบับแก้ไขที่แนบท้าย ไม่ใช่ตัวบทหลัก · warnings = ข้อควรระวังเพิ่มเติม

  • full_text ของฎีกาอาจมีชื่อจริงคู่ความ — ทำตาม deka_privacy_note ก่อนยกไปใช้ต่อ

NameRequiredDescriptionDefault
deka_noNoเลขฎีกา เช่น "1729/2569" (รับ "ฎีกาที่ 1729/2569"/"คำพิพากษาศาลฎีกาที่ 1729/2569"/เลขไทยได้ — normalize ให้เอง) คดีรวมสำนวน (รูป "N-M/ปี") คืน cannot_verify เสมอ (ต้องตรวจมือ ไม่ verify อัตโนมัติ)
law_codeNoรหัสกฎหมาย จาก citation.law_code ของผล search_law — ใช้คู่กับ unit_label เสมอ
cited_lawNoตัวย่อกฎหมายที่อ้างว่าฎีกานี้อ้างถึง เช่น "ป.อ." (คู่กับ deka_no+cited_section)
unit_labelNoมาตรา เช่น "มาตรา 420 ทวิ" — บังคับถ้าระบุ law_code · ต้องมีคำนำหน้า "มาตรา"/"ข้อ" (เลขเปล่าผ่านด่านแต่ได้ not_found_in_corpus และหักโควตา) · ตรวจมาตราเจาะจง ไม่ใช่ทั้งฉบับ
quoted_textNoข้อความที่อ้างว่ามาจากคดี/มาตรานี้ (≤10,000 ตัวอักษร) — ตรวจ exact substring (ไม่ fuzzy/embedding) หลังตัดอักขระควบคุม/มองไม่เห็น + NFC + ยุบช่องว่างทั้งสองฝั่ง · เว้นวรรคต่างจากต้นฉบับ = not_found (ต้นฉบับไทยมักเขียนติดกัน) ให้ยกมาตรงตัว
cited_sectionNoเลขมาตราที่อ้างว่าฎีกานี้อ้างถึง (คู่กับ deka_no+cited_law)

Output Schema

NameRequiredDescription
quotaNo
reasonNo
law_codeNo
warningsNo
full_textNo
disclaimerNo
source_urlNo
unit_scopeNo
attributionNo
case_statusNo
section_textNo
timeline_codeNo
statute_statusNo
duplicate_countNo
matched_snippetNo
quote_groundingNo
deka_privacy_noteNo
citation_attributionNo
title_marked_repealedNo

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations: deterministic (non-AI) checking, one quota unit per call, rejection-before-quota-charge on invalid mode combos, no quota charge when the ruling service is down, and the important limitation that it does not judge the direction of a holding. Also flags privacy handling of full_text defendant names and warns that status values are not proof of non-existence.

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?

Front-loaded with the purpose and alternatives in the first two paragraphs, then a scannable mode list and a result-reading list. It is dense and slightly long because the result-status block partly overlaps the output schema, but no line is filler.

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?

Covers everything an agent needs for a 6-parameter, mode-switched verification tool: input modes, quota behavior, failure modes, how to read verified/not_found/cannot_verify, title_marked_repealed and unit_scope caveats, and the privacy note before reusing text.

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 already 100%, so the schema carries per-field meaning; the description adds cross-parameter semantics the schema lacks, namely the two selectable modes and the rule that deka_no combines with cited_law/cited_section and/or quoted_text while law_code requires unit_label. It stops short of restating field-level formats, which is fine given 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?

Starts with a precise verb+resource: verify that one citation actually exists in the corpus, and states the motivating use case (checking before quoting a statute/ruling to a user). It also distinguishes itself from siblings by name: batch_citation_audit for multiple citations and get_deka/get_law_document when full text is needed.

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 (before presenting a มาตรา/ฎีกา/quote to a user), and spells out the two mutually exclusive input modes with their required field pairings, warning that mixing modes or omitting paired fields is rejected. Alternatives are named with the condition that selects each (batch_citation_audit for multi-citation documents, get_deka/get_law_document for reading content).

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

whoamiA
Read-onlyIdempotent
Inspect

บอกว่าการเชื่อมต่อนี้ยืนยันตัวตนแล้วหรือยัง และเป็นบัญชีใด (user_id + scopes จาก OAuth token) พร้อมอีเมลติดต่อทีมงาน. ใช้เมื่อผู้ใช้ถามว่าเชื่อมบัญชีถูกไหม หรือ tool อื่นตอบเรื่องสิทธิ์/เข้าสู่ระบบแล้วต้องการตรวจ — ไม่ต้องเรียกก่อนใช้ tool อื่น (tool อื่นตรวจสิทธิ์เอง) · โควตาคงเหลือดูจาก quota ในผลของ tool ที่นับโควตา ไม่ใช่ที่นี่ ไม่นับโควตา · อ่านอย่างเดียว · authenticated=False = ยังไม่เชื่อมบัญชี (ยังได้ support_email)

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
scopesNo
user_idNo
authenticatedNo
support_emailNo

TDQS

A4.8/5.0
Behavior5/5

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

Despite annotations already declaring readOnlyHint/idempotent/destructive=false, the description adds genuinely non-structured behavior: it does not consume quota, and authenticated=False still returns support_email as a fallback. Those are the exact facts an agent needs to interpret a negative result without retrying or escalating.

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?

Front-loaded with the outcome, then usage, then caveats — good ordering and no filler sentences. It loses a point for mild redundancy: 'ไม่นับโควตา' appears both as a quota redirect and again in the trailing characteristics list, and the parenthetical asides make the middle section denser than needed.

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?

An output schema exists and the tool has no inputs, so the description only had to cover purpose, routing and the negative-result semantics — all present. Nothing an agent needs in order to call this 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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline applies. The description instead documents the shape of the response (user_id + scopes), which is useful but sits outside this dimension's scope.

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?

Names a specific verb+resource: reports whether this connection is authenticated and which account, enumerating the returned fields (user_id, OAuth scopes, support_email). No sibling tool in the list touches identity/auth, and the description makes the boundary obvious.

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?

Gives explicit triggers ('when the user asks whether the account connection is correct', or a permission/login error from another tool) and an explicit anti-trigger ('no need to call before using other tools, they check permissions themselves'). It also redirects quota questions to the quota field in counting tools' results, so an agent cannot route that question here by mistake.

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. 3 tool updates
    • Addedcourt_ruling_lookup
    • Changeddeka_by_section1 field changed
      • changedInput schema / properties / section / description
        Previous value: -"เลขมาตราอารบิกเปล่า เช่น \"288\" · มาตราขยายใช้รูป \"193 ทวิ\" · เทียบตรงตัว: ไม่แปลงเลขไทย และไม่ตัดคำว่า \"มาตรา\" ให้ (ส่งผิดรูป = count=0 ไม่มี reason)"New value: +"เลขมาตรา เช่น \"288\" \"๒๘๘\" \"มาตรา 288\" \"193 ทวิ\" \"7/1\" — แปลงเลขไทย/ตัดคำว่า \"มาตรา\"/\"ม.\" ให้เอง · ไม่รับวรรค/อนุมาตรา (ส่งมา + ไม่พบ = reason=\"section_format_unsupported\")"
    • Changedresearch_dossier1 field changed
      • addedOutput schema / properties / court_rulings_note
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "title": "Court Rulings Note"
        +}
  2. 10 tool updates
    • Changedbatch_citation_audit1 field changed
      • changedInput schema / properties / document_text / description
        Previous value: -"เนื้อหาเอกสารเต็ม (คำฟ้อง/คำให้การ/สัญญา/บันทึกความเห็นฯลฯ) ที่ต้องการตรวจการอ้างอิงกฎหมาย/คำพิพากษาฎีกาทุกจุดรวดเดียว — สูงสุด 50,000 ตัวอักษร (ว่างเปล่า/ยาวเกิน → ValueError ก่อนเช็ค tier/quota ใดๆ)"New value: +"เนื้อหาเอกสารเต็มแบบข้อความล้วน (คำฟ้อง/คำให้การ/สัญญา/บันทึกความเห็น) 1–50,000 ตัวอักษร — เอกสารยาวกว่านั้นให้แบ่งส่ง · ว่าง/ยาวเกินถูกปฏิเสธก่อนตรวจสิทธิ์ Pro และก่อนหักโควตา"
    • Changedbrowse1 field changed
      • changedInput schema / properties / kind / description
        Previous value: -"\"law_types\" | \"subjects\" | \"law_abbreviations\" | \"coverage_stats\" — law_types: ประเภทตัวบทกฎหมาย (พระราชบัญญัติ/ประมวลกฎหมาย/...) + count — กรองใน search_law | subjects: สาขาตัวบทกฎหมาย (แพ่ง/อาญา/ภาษี/ที่ดิน/แรงงาน/...) + count — กรองใน search_law (หมวดมาจากการจำแนกชื่อกฎหมายอัตโนมัติ — best-effort; บางฉบับไม่ถูกจัดสาขา) | law_abbreviations: ตัวย่อกฎหมาย (เช่น \"ป.อ.\") ที่คำพิพากษาฎีกาอ้างจริง + จำนวนครั้งเรียงมาก→น้อย — ใช้เลือกค่าไปกรองใน deka_by_section(law=...) แทนการเดา/parse doctitle เอง | coverage_stats: จำนวนเอกสารรวมต่อ corpus + ช่วงปีที่ครอบคลุม (ราชกิจจาฯ)"New value: +"หนึ่งใน \"law_types\" | \"subjects\" | \"law_abbreviations\" | \"coverage_stats\" (สะกดตรงตัว) — law_types/subjects: ค่าพร้อมจำนวนเอกสาร (corpus=law) · law_abbreviations: ตัวย่อกฎหมาย (เช่น \"ป.อ.\") ที่ฎีกาอ้างจริงพร้อมจำนวนครั้ง เรียงมาก→น้อย · coverage_stats: จำนวนเอกสารต่อคลัง + ช่วงปีที่ครอบคลุม"
    • Changeddeka_by_section3 fields changed
      • changedInput schema / properties / law / description
        Previous value: -"ชื่อย่อกฎหมาย เช่น \"ป.อ.\" \"ป.พ.พ.\" \"ป.วิ.อ.\" \"ป.วิ.พ.\" หรือชื่อ พ.ร.บ. เช่น \"พ.ร.บ.คุ้มครองแรงงาน\" (มี/ไม่มี \"พ.ศ.xxxx\" ก็ได้)"New value: +"ชื่อย่อกฎหมาย เช่น \"ป.อ.\" \"ป.พ.พ.\" \"ป.วิ.อ.\" \"ป.วิ.พ.\" หรือชื่อ พ.ร.บ. เช่น \"พ.ร.บ.คุ้มครองแรงงาน\" (มี/ไม่มี \"พ.ศ.xxxx\" ก็ได้ — ชื่อที่มีหลายปีจะได้ ambiguous_law) · ค่าที่แน่นอนดูได้จาก browse(kind=\"law_abbreviations\") หรือ citation.law_abbrev ของ search_law"
      • changedInput schema / properties / limit / description
        Previous value: -"จำนวนสูงสุด (ค่าเริ่มต้น 20)"New value: +"จำนวนฎีกาสูงสุด 1–50 (ค่าเริ่มต้น 20)"
      • changedInput schema / properties / section / description
        Previous value: -"เลขมาตรา เช่น \"288\" (มาตราขยายใช้รูป \"193 ทวิ\")"New value: +"เลขมาตราอารบิกเปล่า เช่น \"288\" · มาตราขยายใช้รูป \"193 ทวิ\" · เทียบตรงตัว: ไม่แปลงเลขไทย และไม่ตัดคำว่า \"มาตรา\" ให้ (ส่งผิดรูป = count=0 ไม่มี reason)"
    • Changedget_deka1 field changed
      • changedInput schema / properties / deka_no / description
        Previous value: -"เลขฎีกา เช่น \"1729/2569\" (คดีรวมสำนวนใช้รูป \"257-258/2463\")"New value: +"เลขฎีการูป \"เลข/ปี พ.ศ.\" เช่น \"1729/2569\" · คดีรวมสำนวนใช้ช่วงเลข \"257-258/2463\" · ใช้เลขอารบิกเท่านั้น ไม่ใส่คำนำหน้า \"ฎีกาที่\" (เทียบตรงตัว ไม่แปลงให้)"
    • Changedget_gazette_document3 fields changed
      • changedInput schema / properties / book_no / description
        Previous value: -"เลขเล่ม (bookNo) เช่น \"142\""New value: +"เลขเล่ม เช่น \"142\" — ใช้ citation.book_no ของผล search_law"
      • changedInput schema / properties / no / description
        Previous value: -"เลขลำดับเอกสาร (จาก field \"no\" ในผล search_law) เพื่อระบุเอกสารเดียว"New value: +"เลขลำดับเอกสาร — ใช้ citation.no ของผล search_law เพื่อดึงเอกสารเดียว (ไม่ระบุ = ทุกเอกสารในเล่ม/ตอน)"
      • changedInput schema / properties / section / description
        Previous value: -"เลขตอน (section) เช่น \"1\""New value: +"เลขตอนเฉพาะตัวเลข เช่น \"1\" — ใช้ citation.section ของผล search_law (ตอนพิเศษ: คำว่า \"พิเศษ\" ใส่ใน category)"
    • Changedget_law_document1 field changed
      • changedInput schema / properties / unit_label / description
        Previous value: -"ระบุ = เฉพาะมาตรานั้น (เช่น \"มาตรา 288\", จาก citation ของผล search_law); ไม่ระบุ = ทั้งฉบับ (มี guard ด้านล่างกัน context blow-up สำหรับประมวลกฎหมายใหญ่)"New value: +"มาตราที่ต้องการ ใช้ citation.unit_label ของผล search_law เช่น \"มาตรา 288\" — ต้องมีคำนำหน้า \"มาตรา\"/\"ข้อ\" (เลขเปล่าไม่เจอ; เลขไทย/อารบิกใช้ได้) · ไม่ระบุ = ทั้งฉบับ (ฉบับยาวจะได้ section_index แทน full_text)"
    • Changedget_law_versions1 field changed
      • changedInput schema / properties / unit_label / description
        Previous value: -"เลขมาตรา จาก citation ของผล search_law (เช่น \"มาตรา 288\")"New value: +"ใช้ citation.unit_label ของผล search_law เช่น \"มาตรา 288\" — ต้องมีคำนำหน้า \"มาตรา\"/\"ข้อ\" (เลขเปล่าได้ผลว่าง)"
    • Changedresearch_dossier2 fields changed
      • addedInput schema / properties / top_k_court_rulings
        Added value: +{
        +  "default": 3,
        +  "description": "จำนวนคำวินิจฉัยชี้ขาดอำนาจหน้าที่ระหว่างศาลสูงสุด (ค่าเริ่มต้น 3, สูงสุด 20; เฉพาะแพ็กเกจ Pro — ผู้ใช้อื่นไม่มีผลต่อการเรียก)",
        +  "title": "Top K Court Rulings",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / related_court_rulings
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "title": "Related Court Rulings"
        +}
    • Changedsearch_law5 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"กรองประเภทราชกิจจาฯ — \"ก\"=กฎหมาย, \"ข\"=ฐานันดร, \"ค\"=ทะเบียนการค้า, \"ง\"=ประกาศ"New value: +"กรองประเภทราชกิจจาฯ — \"ก\"=กฎหมาย, \"ข\"=ฐานันดร, \"ค\"=ทะเบียนการค้า, \"ง\"=ประกาศ · ใช้คู่กับ corpus=\"gazette\" เสมอ (ไม่งั้นผลจากคลังอื่นถูกตัดหมด) · กรองหลังคัดผู้สมัคร หมวดแคบอาจได้ผลว่าง"
      • changedInput schema / properties / corpus / description
        Previous value: -"\"law\"=ตัวบทกฎหมาย | \"gazette\"=ราชกิจจาฯ | \"opinion\"=ความเห็นกฤษฎีกา | \"deka\"=คำพิพากษาศาลฎีกา | ไม่ระบุ=ทั้งหมด · ค่าอื่นถูกปฏิเสธโดยไม่นับโควตา"New value: +"\"law\"=ตัวบทกฎหมาย | \"gazette\"=ราชกิจจาฯ | \"opinion\"=ความเห็นกฤษฎีกา | \"deka\"=คำพิพากษาศาลฎีกา | \"court_ruling\"=คำวินิจฉัยชี้ขาดอำนาจหน้าที่ระหว่างศาล (เฉพาะแพ็กเกจ Pro; ต้องระบุเอง) | ไม่ระบุ=ค้น 4 แหล่งแรก (ไม่รวม court_ruling) · ต้องสะกดตรงทุกตัวอักษร ค่าอื่นถูกปฏิเสธโดยไม่นับโควตา"
      • changedInput schema / properties / top_k / description
        Previous value: -"จำนวนผลลัพธ์สูงสุด (ค่าเริ่มต้น 5)"New value: +"จำนวนผลลัพธ์สูงสุด 1–20 (ค่าเริ่มต้น 5; เกินช่วงถูกปรับเข้าช่วงเอง)"
      • changedInput schema / properties / year_from / description
        Previous value: -"ปี ค.ศ. เริ่มต้น (เช่น 2020)"New value: +"ปีเริ่มต้นเป็น **ค.ศ.** (เช่น 2020 = พ.ศ. 2563; พ.ศ. ลบ 543)"
      • changedInput schema / properties / year_to / description
        Previous value: -"ปี ค.ศ. สิ้นสุด"New value: +"ปีสิ้นสุดเป็น **ค.ศ.** (รวมปีนั้น)"
    • Changedverify_citation2 fields changed
      • changedInput schema / properties / quoted_text / description
        Previous value: -"ข้อความที่อ้างว่ามาจากคดี/มาตรานี้ (≤10,000 ตัวอักษร) — ตรวจ exact substring (ไม่ fuzzy/embedding) หลังตัดอักขระควบคุม/มองไม่เห็น + NFC + ยุบช่องว่าง"New value: +"ข้อความที่อ้างว่ามาจากคดี/มาตรานี้ (≤10,000 ตัวอักษร) — ตรวจ exact substring (ไม่ fuzzy/embedding) หลังตัดอักขระควบคุม/มองไม่เห็น + NFC + ยุบช่องว่างทั้งสองฝั่ง · เว้นวรรคต่างจากต้นฉบับ = not_found (ต้นฉบับไทยมักเขียนติดกัน) ให้ยกมาตรงตัว"
      • changedInput schema / properties / unit_label / description
        Previous value: -"เลขมาตรา เช่น \"มาตรา 420 ทวิ\" — บังคับถ้าระบุ law_code (ตรวจมาตราเจาะจง ไม่ใช่ทั้งฉบับ — ใช้ get_law_document แทนถ้าต้องการทั้งฉบับ)"New value: +"มาตรา เช่น \"มาตรา 420 ทวิ\" — บังคับถ้าระบุ law_code · ต้องมีคำนำหน้า \"มาตรา\"/\"ข้อ\" (เลขเปล่าผ่านด่านแต่ได้ not_found_in_corpus และหักโควตา) · ตรวจมาตราเจาะจง ไม่ใช่ทั้งฉบับ"
  3. 1 tool update
    • Changedsearch_law1 field changed
      • changedInput schema / properties / corpus / description
        Previous value: -"\"law\"=ตัวบทกฎหมาย | \"gazette\"=ราชกิจจาฯ | \"opinion\"=ความเห็นกฤษฎีกา | \"deka\"=คำพิพากษาศาลฎีกา | ไม่ระบุ=ทั้งหมด"New value: +"\"law\"=ตัวบทกฎหมาย | \"gazette\"=ราชกิจจาฯ | \"opinion\"=ความเห็นกฤษฎีกา | \"deka\"=คำพิพากษาศาลฎีกา | ไม่ระบุ=ทั้งหมด · ค่าอื่นถูกปฏิเสธโดยไม่นับโควตา"
  4. 1 tool update
    • Changedsearch_law2 fields changed
      • addedOutput schema / properties / degraded_note
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "title": "Degraded Note"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "query",
        -  "count",
        -  "results",
        -  "expanded_terms",
        -  "quota",
        -  "feedback_hint",
        -  "disclaimer",
        -  "law_freshness_note",
        -  "deka_privacy_note",
        -  "attribution"
        -]New value: +[
        +  "query",
        +  "count",
        +  "results",
        +  "expanded_terms",
        +  "quota",
        +  "feedback_hint",
        +  "degraded_note",
        +  "disclaimer",
        +  "law_freshness_note",
        +  "deka_privacy_note",
        +  "attribution"
        +]

Publisher details

Operator
Thai Legal (legaltech.in.th) — sole proprietorship based in Thailand, operating under the trade name "Thai Legal" / ผู้ประกอบกิจการในนามบุคคลธรรมดา ให้บริการภายใต้ชื่อทางการค้า "Thai Legal" · Publisher source
Operator website
https://legaltech.in.th
Vendor relationship
First-party
Trust center
Not available
Restrictions
Sign-in with a Google account is required (OAuth 2.0). Free plan: 100 lookups/month. Pro plan (THB 490/month or THB 4,900/year): 2,000 lookups/month; batch_citation_audit is Pro-only. A "lookup" is one content-delivering tool call; browsing and version lists are unmetered. Exception: batch_citation_audit uses 1 lookup per unique citation checked, up to 50 per call. Research tool, not legal advice. ต้องเข้าสู่ระบบด้วยบัญชี Google · แพ็กเกจ Free ค้นได้ 100 ครั้ง/เดือน · แพ็กเกจ Pro ฿490/เดือน หรือ ฿4,900/ปี ค้นได้ 2,000 ครั้ง/เดือน และใช้ batch_citation_audit ได้ (นับ 1 ครั้งต่อรายการอ้างอิงที่ไม่ซ้ำ สูงสุด 50 รายการต่อคำสั่ง) · เครื่องมือช่วยค้น ไม่ใช่คำแนะนำทางกฎหมาย · Publisher source

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources