Skip to content
Back to Lawmadi OS

Card snapshot

lawmadi-os-v60-938146962157.asia-northeast3.run.app · 2026-08-23 21:04:50 UTC · d9d32fb6e3bb445fd5809897f2513dd595307271dfff6f664bb879e8dcc10003

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "name": "Lawmadi OS",
  "description": "\ubc95\ub9c8\ub514(Lawmadi) OS \u2014 LLM \uad50\uccb4 \uac00\ub2a5\ud55c \ud55c\uad6d \ubc95\ub960 AI \uc6b4\uc601\uccb4\uc81c(LLM-independent legal-AI OS). \ub2f5\ubcc0 \ud488\uc9c8\uc740 LLM\uc774 \uc544\ub2c8\ub77c \uac80\uc99d \uc790\uc0b0(SSOT)\u00b7\uadf8\ub77c\uc6b4\ub529\u00b7law.go.kr \uc2e4\uc2dc\uac04 fail-closed \uac80\uc99d\uc774 \ubcf4\uc7a5\ud558\uba70 LLM\uc740 \uad50\uccb4 \uac00\ub2a5\ud55c \ubd80\ud488\uc785\ub2c8\ub2e4(\uc778\uc6a9 \ud560\ub8e8\uc2dc\ub124\uc774\uc158 0). 60\uac1c \ub3c4\uba54\uc778 \uc804\ubb38 \ub9ac\ub354\uac00 \uac80\uc99d \uc790\uc0b0 48,510\uac74(\ud310\ub840 17,248\u00b7\uc870\ubb38 31,262)\uc744 \uadfc\uac70\ub85c \ub2f5\ud558\uace0 \ubcc0\ud638\uc0ac\uc2dc\ud5d8 \uae08\ub2f5\uc548 \ucf54\ud37c\uc2a4\ub97c \ud3ec\ud568\ud569\ub2c8\ub2e4. Korean & English. \ub85c\uadf8\uc778 \uc2dc \ubb34\ub8cc \ud06c\ub808\ub527 3\uac1c 1\ud68c \uc9c0\uae09(\uc7ac\ucda9\uc804 \uc5c6\uc74c).",
  "url": "https://lawmadi.com/mcp",
  "transport": "streamable-http",
  "version": "60.0.0",
  "auth": {
    "type": "bearer",
    "header": "Authorization",
    "description": "Queries need a key. lookup_precedent / lookup_statute answer without one at preview depth. Each user gets 3 free credits one time on login (non-recurring); after that, purchase credits. Authenticated calls are not unlimited \u2014 see rate_limits.",
    "required": false
  },
  "capabilities": {
    "tools": [
      {
        "name": "ask",
        "title": "Ask",
        "description": "Ask a Korean legal question. Routes to 1 of 60 specialist AI legal leaders and returns a statute-verified analysis (real-time law.go.kr check). Supports Korean and English.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "query": {
              "type": "string",
              "description": "Legal question in Korean or English (max 2000 chars)."
            },
            "lang": {
              "type": "string",
              "enum": [
                "ko",
                "en",
                ""
              ],
              "description": "Response language. Auto-detected if omitted."
            }
          },
          "required": [
            "query"
          ]
        }
      },
      {
        "name": "ask_expert",
        "title": "Ask Expert",
        "description": "Expert mode legal analysis \u2014 runs the full verification pipeline for a more detailed, deeply-cited answer. Slower than `ask`.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "query": {
              "type": "string",
              "description": "Legal question in Korean or English (max 2000 chars)."
            },
            "lang": {
              "type": "string",
              "enum": [
                "ko",
                "en",
                ""
              ],
              "description": "Response language. Auto-detected if omitted."
            }
          },
          "required": [
            "query"
          ]
        }
      },
      {
        "name": "search",
        "title": "Search",
        "description": "Search Korean statutes, precedents and legal terms via law.go.kr. Returns matching law topics.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "q": {
              "type": "string",
              "description": "Search query (min 2 chars). Example: '\uadfc\ub85c\uae30\uc900\ubc95'."
            },
            "limit": {
              "type": "integer",
              "description": "Max results (1-100, default 10)."
            }
          },
          "required": [
            "q"
          ]
        }
      },
      {
        "name": "get_leaders",
        "title": "Get Leaders",
        "description": "List all 60+ specialist legal leaders with their names and specialties.",
        "inputSchema": {
          "type": "object",
          "properties": {}
        }
      },
      {
        "name": "chat_leader",
        "title": "Chat Leader",
        "description": "Chat 1:1 with a specific legal leader. Provide the leader_id (e.g. 'L01', 'L32', 'CCO') from get_leaders.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "leader_id": {
              "type": "string",
              "description": "Leader identifier (e.g. 'L01'). See get_leaders."
            },
            "query": {
              "type": "string",
              "description": "Question to ask the leader (max 2000 chars)."
            }
          },
          "required": [
            "leader_id",
            "query"
          ]
        }
      },
      {
        "name": "suggest_questions",
        "title": "Suggest Questions",
        "description": "Generate relevant follow-up legal questions for a given query.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "query": {
              "type": "string",
              "description": "Current user question (max 500 chars)."
            }
          },
          "required": [
            "query"
          ]
        }
      },
      {
        "name": "lookup_precedent",
        "title": "Lookup Precedent",
        "description": "Look up a Korean court case by docket number in Lawmadi's verified-asset corpus (11,018 precedents, each confirmed against law.go.kr). Returns court, decision date, case name, holding (\ud310\uc2dc\uc0ac\ud56d), summary (\ud310\uacb0\uc694\uc9c0), referenced articles and a direct law.go.kr full-text link. Deterministic \u2014 no LLM, no hallucination. Accepts '2020\ub3c43050', '\ub300\ubc95\uc6d0 2020. 3. 26. \uc120\uace0 2020\ub3c43050 \ud310\uacb0', or '2016\ud5cc\ub9c890'.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "case_no": {
              "type": "string",
              "description": "Docket number or full citation. Example: '2020\ub3c43050'."
            }
          },
          "required": [
            "case_no"
          ]
        }
      },
      {
        "name": "lookup_statute",
        "title": "Lookup Statute",
        "description": "Look up a Korean statute article in Lawmadi's verified-asset corpus (30,995 articles). Returns the article title, body text and law.go.kr link. Deterministic \u2014 no LLM. Example input: '\ubbfc\ubc95 \uc81c750\uc870', '\ud615\ubc95 \uc81c307\uc870 \uc81c1\ud56d'.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "reference": {
              "type": "string",
              "description": "Statute reference. Example: '\ubbfc\ubc95 \uc81c750\uc870'."
            }
          },
          "required": [
            "reference"
          ]
        }
      },
      {
        "name": "verify_citations",
        "title": "Verify Citations",
        "description": "Fact-check the Korean legal citations inside any text \u2014 including text another LLM produced. Extracts every statute article and case docket, then checks each one against Lawmadi's verified-asset corpus. Returns per-citation status (verified_in_corpus / not_in_corpus) with source links. Costs 1 credit per call. Deterministic, no LLM. IMPORTANT: 'not_in_corpus' means the citation is NOT in this corpus \u2014 it is a flag to check manually at law.go.kr, not proof that the citation is fabricated.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "text": {
              "type": "string",
              "description": "Text containing Korean legal citations (max 20000 chars)."
            }
          },
          "required": [
            "text"
          ]
        }
      },
      {
        "name": "bar_exam_search",
        "title": "Bar Exam Search",
        "description": "Search the Korean bar exam (\ubcc0\ud638\uc0ac\uc2dc\ud5d8) corpus \u2014 all 15 rounds, 2,340 questions (2,250 MCQ + 45 case-type + 45 record-type) with gold-standard answers whose citations passed law.go.kr verification. Query by docket ('2014\ub3c46992'), statute article ('\ud615\ubc95 \uc81c310\uc870') or keyword. Returns round, subject, question number, official answer, stem, cited statutes/cases and a link.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "q": {
              "type": "string",
              "description": "Docket, statute article or keyword."
            },
            "round": {
              "type": "integer",
              "description": "Filter by exam round 1-15 (optional)."
            },
            "subject": {
              "type": "string",
              "description": "Filter by subject: \uacf5\ubc95 / \ubbfc\uc0ac\ubc95 / \ud615\uc0ac\ubc95 (optional)."
            },
            "limit": {
              "type": "integer",
              "description": "Max results (1-20, default 5)."
            }
          },
          "required": [
            "q"
          ]
        }
      },
      {
        "name": "get_exam_answer",
        "title": "Get Exam Answer",
        "description": "Fetch ONE bar-exam question with its full gold answer. MCQ (\uc120\ud0dd\ud615): pass round + subject + no \u2192 official stem, all five choices, the Ministry of Justice answer key, the reasoning, a note per choice, and the cited statutes/precedents. Essay (\uc0ac\ub840\ud615) and record-type (\uae30\ub85d\ud615): pass round + subject + format \u2192 document type, outline and the full answer text. Every citation passed law.go.kr verification before publishing. One item per call \u2014 this corpus is proprietary and not available for bulk export.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "round": {
              "type": "integer",
              "description": "Exam round 1-15 (\uc81cN\ud68c)."
            },
            "subject": {
              "type": "string",
              "description": "\uacf5\ubc95 \u00b7 \ubbfc\uc0ac\ubc95 \u00b7 \ud615\uc0ac\ubc95 (\uc120\ud0dd\uacfc\ubaa9\uba85\ub3c4 \uac00\ub2a5)."
            },
            "format": {
              "type": "string",
              "enum": [
                "\uc120\ud0dd\ud615",
                "\uc0ac\ub840\ud615",
                "\uae30\ub85d\ud615"
              ],
              "description": "Default \uc120\ud0dd\ud615 when `no` is given."
            },
            "no": {
              "type": "integer",
              "description": "Question number (\uc120\ud0dd\ud615 only)."
            }
          },
          "required": [
            "round",
            "subject"
          ]
        }
      },
      {
        "name": "get_daily_content",
        "title": "Get Daily Content",
        "description": "Fetch one published daily post in full-record form: \uc624\ub298\uc758 \ubc95\ub960\uc0c1\uc2dd(daily \u2014 includes the verified statute list and the FAQ), \uc804\ub7b5 \uce7c\ub7fc(strategy) / \uae30\uc220 \uce7c\ub7fc(tech) with their live-checked references, \ub9ac\uac78\ud14c\ud06c \ub274\uc2a4(news) with source domains, \uc218\ud5d8 \ud310\ub840 \uac15\uc758\ub178\ud2b8(bar), \uc624\ub298\uc758 \ud310\ub840(precedent \u2014 enriched with the verified case record). Pass a date, or omit it for the latest post in that stream.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "stream": {
              "type": "string",
              "enum": [
                "daily",
                "strategy",
                "tech",
                "news",
                "bar",
                "precedent"
              ],
              "description": "Content stream."
            },
            "date": {
              "type": "string",
              "description": "YYYY-MM-DD. Omit for the latest post."
            }
          },
          "required": [
            "stream"
          ]
        }
      },
      {
        "name": "list_document_types",
        "title": "List Document Types",
        "description": "List the legal document types Lawmadi can draft (\uace0\uc18c\uc7a5\u00b7\uc18c\uc7a5\u00b7\ub0b4\uc6a9\uc99d\uba85\u00b7\ub2f5\ubcc0\uc11c\u00b7\ud0c4\uc6d0\uc11c\u00b7\ud569\uc758\uc11c\u00b7\ubc95\ub960\uc758\uacac\uc11c etc.), with Korean and English labels.",
        "inputSchema": {
          "type": "object",
          "properties": {}
        }
      },
      {
        "name": "generate_document",
        "title": "Generate Document",
        "description": "Draft a Korean legal document (complaint, civil petition, content-certified mail, answer brief, settlement agreement, legal opinion, \u2026) from the user's facts. Every statute/precedent citation in the draft goes through the same fail-closed law.go.kr verification as `ask`. Use list_document_types first for valid doc_type keys.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "doc_type": {
              "type": "string",
              "description": "Document type key from list_document_types (e.g. 'complaint')."
            },
            "context": {
              "type": "string",
              "description": "The user's facts/situation the document must be built from."
            },
            "lang": {
              "type": "string",
              "enum": [
                "ko",
                "en",
                ""
              ],
              "description": "Default ko."
            },
            "extra_instructions": {
              "type": "string",
              "description": "Optional extra drafting instructions."
            }
          },
          "required": [
            "doc_type",
            "context"
          ]
        }
      },
      {
        "name": "search_legal_forms",
        "title": "Search Legal Forms",
        "description": "Search official Korean statutory forms and appendix tables (\ubcc4\ud45c\u00b7\uc11c\uc2dd) served by law.go.kr \u2014 e.g. the exact form to file an application under a given act.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "query": {
              "type": "string",
              "description": "Form or statute name to search."
            },
            "knd": {
              "type": "string",
              "enum": [
                "",
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "description": "Kind: 1 \ubcc4\ud45c \u00b7 2 \uc11c\uc2dd \u00b7 3 \ubcc4\uc9c0 \u00b7 4 \ubcc4\ub3c4 \u00b7 5 \ubd80\ub85d (blank = all)."
            },
            "limit": {
              "type": "integer",
              "description": "Max results (1-100, default 20)."
            }
          },
          "required": [
            "query"
          ]
        }
      },
      {
        "name": "find_village_lawyer",
        "title": "Find Village Lawyer",
        "description": "Find the Ministry of Justice '\ub9c8\uc744\ubcc0\ud638\uc0ac' (village lawyer) assigned to a Korean locality \u2014 a free legal-consultation contact point. Search by province, city or township name (e.g. '\uac15\uc6d0 \uac15\ub989', '\uc740\ud3c9\uad6c'). Public data, no LLM.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "region": {
              "type": "string",
              "description": "Region name. Example: '\uac15\ub989\uc2dc'."
            },
            "limit": {
              "type": "integer",
              "description": "Max results (1-50, default 10)."
            }
          },
          "required": [
            "region"
          ]
        }
      },
      {
        "name": "get_pricing",
        "title": "Get Pricing",
        "description": "How to get access and what it costs. Returns the sign-up flow, where to issue an API key, the free allowance, credit-pack prices (KRW/USD), what one credit buys, and direct checkout links. **Callable without authentication** \u2014 an AI agent arriving for the first time should call this to learn how to obtain access.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "lang": {
              "type": "string",
              "enum": [
                "ko",
                "en",
                ""
              ],
              "description": "Default en."
            }
          }
        }
      },
      {
        "name": "get_account",
        "title": "Get Account",
        "description": "Your account status for the API key in use \u2014 remaining credits, plan, and a top-up link. Call this before a long run of metered queries so you can purchase in advance instead of hitting an exhausted balance mid-task.",
        "inputSchema": {
          "type": "object",
          "properties": {}
        }
      },
      {
        "name": "latest_content",
        "title": "Latest Content",
        "description": "Get Lawmadi's latest daily legal content \u2014 \uc624\ub298\uc758 \ubc95\ub960\uc0c1\uc2dd(daily), \uc804\ub7b5 \uce7c\ub7fc(strategy), \uae30\uc220 \uce7c\ub7fc(tech), \ub9ac\uac78\ud14c\ud06c \ub274\uc2a4(news), \uc218\ud5d8 \ud310\ub840 \uac15\uc758\ub178\ud2b8(bar), \uc624\ub298\uc758 \ud310\ub840(precedent). Every post passed its publishing gate (statute/precedent citations verified against law.go.kr, sources live-checked).",
        "inputSchema": {
          "type": "object",
          "properties": {
            "stream": {
              "type": "string",
              "enum": [
                "",
                "daily",
                "strategy",
                "tech",
                "news",
                "bar",
                "precedent"
              ],
              "description": "Single stream, or blank for the latest of each."
            },
            "limit": {
              "type": "integer",
              "description": "Posts per stream (1-20, default 5)."
            }
          }
        }
      }
    ],
    "prompts": [
      {
        "name": "legal_question",
        "description": "Ask a Korean legal question \u2014 routed to the best specialist among 60 agents"
      },
      {
        "name": "expert_analysis",
        "description": "Deep 4-stage expert legal analysis with full statute verification"
      },
      {
        "name": "find_specialist",
        "description": "Find the right legal specialist for your situation"
      }
    ],
    "resources": [
      {
        "uri": "lawmadi://about",
        "name": "About Lawmadi OS",
        "description": "Overview of the Korean Legal AI service"
      },
      {
        "uri": "lawmadi://domains",
        "name": "Legal Domains",
        "description": "All 60 specialized legal domains covered"
      }
    ],
    "domains": [
      "Civil Law",
      "Real Estate",
      "Construction",
      "Medical Law",
      "Damages",
      "Traffic Accidents",
      "Lease & Housing",
      "Commercial Law",
      "Corporate & M&A",
      "Startup & Venture",
      "Tax & Finance",
      "Criminal Law",
      "Labor & Employment",
      "Family & Divorce",
      "Intellectual Property",
      "Immigration",
      "Environmental Law",
      "Consumer Protection",
      "Data & AI Ethics"
    ],
    "languages": [
      "ko",
      "en"
    ],
    "agents": 60
  },
  "rate_limits": {
    "anonymous": {
      "queries": 0,
      "preview_lookups_per_day": 20,
      "preview_tools": [
        "lookup_precedent",
        "lookup_statute"
      ],
      "note": "Queries need a key. lookup_precedent / lookup_statute answer without one at preview depth (metadata + law.go.kr link + first 200 chars); the full holding, summary and referenced articles need a key, which is free to issue."
    },
    "signup_bonus": {
      "credits": 3,
      "recurring": false,
      "note": "one-time on login, never resets"
    },
    "authenticated": {
      "no_credit_tools_per_day": 60,
      "uncharged_llm_tools_per_day": 20,
      "allowances": {
        "lookup": {
          "tools": [
            "lookup_precedent",
            "lookup_statute"
          ],
          "free_per_day": 30,
          "then": "1 credit per 10 calls",
          "daily_ceiling": 300
        },
        "exam": {
          "tools": [
            "get_exam_answer"
          ],
          "free_per_day": 3,
          "then": "1 credit each",
          "daily_ceiling": 100
        }
      },
      "resets": "00:00 KST",
      "note": "Caps are not raised by buying credits; allowances are \u2014 see get_pricing."
    },
    "pricing_url": {
      "ko": "https://lawmadi.com/pricing",
      "en": "https://lawmadi.com/pricing-en"
    }
  },
  "contact": {
    "email": "admin@lawmadi.com"
  },
  "links": {
    "website": "https://lawmadi.com",
    "terms": "https://lawmadi.com/terms",
    "privacy": "https://lawmadi.com/privacy",
    "openapi": "https://lawmadi.com/.well-known/openapi-public.json",
    "llms_txt": "https://lawmadi.com/llms.txt"
  }
}