Sponsored by Deepsite.site

Pasal.id - Indonesian Law

创建者
Ilham Firdausi Putra6 months ago
Search and access Indonesian legislation with structured data and real legal citations. Full-text search across 67,000+ regulations, retrieve specific articles (pasal), check amendment status, and browse laws by type and year. Tools: search_laws, get_pasal, get_law_status, list_laws.
概览

Pasal.id

The First Open, AI-Native Platform for Indonesian Law

Demo Video · Website · Connect to Claude · REST API · AGPL-3.0 License

Legal Data by Pasal.id MCP Server Built with Opus 4.6 Next.js Supabase License: AGPL-3.0


The Problem

280 million Indonesians have no practical way to read their own laws. The official legal database (peraturan.go.id) offers only PDF downloads: no search, no structure, no API. When you ask AI about Indonesian law, you get hallucinated articles and wrong citations because no grounded data source exists.

Try It Now

Connect Claude to real Indonesian legal data in one command:

claude mcp add --transport http pasal-id https://pasal-mcp-server-production.up.railway.app/mcp

Then ask:

"Apa saja hak pekerja kontrak menurut UU Ketenagakerjaan?" (What are contract worker rights under the Labor Law?) "Jelaskan pasal tentang perlindungan data pribadi" (Explain articles on personal data protection) "Apakah UU Perkawinan 1974 masih berlaku?" (Is the 1974 Marriage Law still in force?)

Claude searches 40,000+ regulations and 937,000+ structured articles, cites specific Pasal (articles), and gives grounded answers. No hallucination.

Or browse the web app at pasal.id.

What We Built

FeatureDescription
SearchFull-Text Legal SearchIndonesian stemmer + 3-tier fallback across 937,000+ articles
ReadStructured ReaderThree-column law reader with TOC, amendment timeline, and verification badges
AIMCP Server4 grounded tools giving Claude access to actual legislation with exact citations
APIREST APIPublic JSON endpoints for search, browsing, and article retrieval
CorrectCrowd-Sourced CorrectionsAnyone can submit corrections; AI verifies before applying
VerifyAI Verification AgentOpus 4.6 vision compares parsed text against original PDF images
TrackAmendment ChainsFull relationship tracking: amendments, revocations, cross-references
GlobeBilingual UIIndonesian + English interface via next-intl (legal content stays Indonesian)

How Opus 4.6 Powers the Platform

The entire codebase, from the Next.js frontend to the MCP server to the data pipeline, was built with Claude Opus 4.6 via Claude Code during the hackathon period. But Opus 4.6 isn't just the development tool. It's embedded in the product itself, running a self-improving correction flywheel that makes the platform more accurate over time:

                    ┌───────────────────────────────┐
                    │     Users submit corrections   │
                    │     via pasal.id web app       │
                    └──────────────┬────────────────┘
                    ┌───────────────────────────────┐
                    │  Opus 4.6 Verification Agent   │
                    │  Uses VISION to compare text   │
                    │  against original PDF images   │
                    │  → accept / reject / correct   │
                    └──────┬───────────────┬────────┘
                           │               │
              ≥85% conf    │               │    parser_feedback
              auto-apply   │               │    from each review
                           ▼               ▼
                    ┌──────────┐   ┌───────────────────────┐
                    │ Database │   │  Opus 4.6 reads the   │
                    │ updated  │   │  parser source code   │
                    │ via safe │   │  + aggregated feedback │
                    │ revision │   │  → creates GitHub     │
                    │ function │   │    issues with fixes   │
                    └──────────┘   └───────────────────────┘

Claude gets 4 tools to search real legislation, retrieve specific articles, check amendment status, and browse regulations. All returning real data with exact citations, not generated text.

2. Multimodal Verification Agent

When users submit corrections, Opus 4.6 uses vision to compare the parsed text against the original PDF page image. It reads the actual PDF, character by character, and makes accept/reject/correct decisions with confidence scores. (scripts/agent/opus_verify.py)

3. Self-Improving Feedback Loop

Every verification produces parser_feedback: notes on why the parser got it wrong. Opus 4.6 aggregates this feedback, fetches the parser source code from GitHub, analyzes systematic bugs, and creates GitHub issues with specific code fixes. The AI improves the pipeline that feeds it. (scripts/agent/parser_improver.py)

4. Human-in-the-Loop Safety

High-confidence corrections (≥85%) are auto-applied through a transaction-safe revision function. Below that threshold, corrections are queued for admin review. Every mutation is logged in an append-only audit trail. Nothing is silently overwritten.

5. Claude Code as Development Tool

The entire platform was built with Claude Code guided by 489 lines of CLAUDE.md specifications across 4 directories (root, web app, MCP server, and data pipeline), encoding architecture decisions, coding conventions, database invariants, and domain knowledge.

Architecture

                ┌──────────────────────────────────────┐
                │          Supabase (PostgreSQL)        │
                │   40,143 regulations · 937,155 Pasal  │
                │   49 migrations · FTS · RLS            │
                └─────────┬──────────────┬─────────────┘
                          │              │
         ┌────────────────┘              └────────────────┐
         ▼                                                ▼
┌─────────────────────┐                     ┌───────────────────────┐
│   MCP Server (Py)   │                     │   Next.js 16 Web App  │
│   FastMCP · Railway │                     │   Vercel · pasal.id   │
│                     │                     │                       │
│  · search_laws      │                     │  · /search            │
│  · get_pasal        │                     │  · /jelajahi          │
│  · get_law_status   │                     │  · /peraturan/[type]  │
│  · list_laws        │                     │  · /connect · /api    │
└─────────┬───────────┘                     └───────────────────────┘
          ▼                                 ┌───────────────────────┐
┌─────────────────────┐                     │  Opus 4.6 Correction  │
│   Claude / AI       │                     │  Agent · Railway      │
│   Grounded answers  │                     │                       │
│   with citations    │                     │  Verify · Auto-apply  │
└─────────────────────┘                     │  Parser improvement   │
                                            └───────────────────────┘

Built to Last: Technical Depth

This isn't a weekend hack. Key engineering decisions:

  • 49 SQL migrations with iterative schema evolution, not a single dump
  • 3-layer search with identity fast-path: regex-detected regulation IDs (score 1000) → works FTS (score 1-15) → content FTS with 3-tier fallback (websearch_to_tsqueryplainto_tsqueryILIKE), capped candidate CTEs to prevent O(N) snippet generation
  • Append-only revision audit trail: content is never directly UPDATE'd; all mutations go through apply_revision() SQL function in a single transaction (revision insert + node update + suggestion update)
  • Transaction-safe content mutations: if any step fails, everything rolls back
  • Row-Level Security on all tables with public read policies for legal data
  • Input sanitization: [^a-zA-Z0-9 ] stripped before tsquery to prevent injection
  • ISR with on-demand revalidation for static generation + instant updates when content changes
  • Atomic job claiming: FOR UPDATE SKIP LOCKED prevents duplicate processing in the scraper pipeline
  • 11 regulation types covering laws from 1945 to 2026, from official government sources

MCP Tools

ToolDescription
search_lawsFull-text keyword search across all legal provisions with Indonesian stemming
get_pasalGet the exact text of a specific article (Pasal) by law and number
get_law_statusCheck if a law is in force, amended, or revoked with full amendment chain
list_lawsBrowse available regulations with type, year, and status filters

Tech Stack

LayerTechnology
FrontendNext.js 16 (App Router), React 19, TypeScript, Tailwind v4, shadcn/ui
DatabaseSupabase (PostgreSQL FTS with indonesian stemmer + pg_trgm)
MCP ServerPython + FastMCP, deployed on Railway
Correction AgentClaude Opus 4.6 (vision + code analysis), deployed on Railway
Data PipelinePython, httpx, PyMuPDF, BeautifulSoup
Search3-layer: identity fast-path → works FTS → content FTS with ILIKE fallback
i18nnext-intl with Indonesian (default) + English

Currently covers 40,143 regulations across 11 types including:

  • UU (Undang-Undang) · Primary laws from parliament
  • PP (Peraturan Pemerintah) · Government regulations
  • Perpres (Peraturan Presiden) · Presidential regulations
  • UUD · The 1945 Constitution
  • Permen, Perda, and more from official government sources

Development

# Frontend
cd apps/web && npm install && npm run dev

# MCP Server
cd apps/mcp-server && pip install -r requirements.txt && python server.py

# Correction Agent
cd scripts && pip install -r requirements.txt
python -m scripts.agent.run_correction_agent

Built with Claude Opus 4.6 for the Claude Code Hackathon
AGPL-3.0

服务器配置

{
  "mcpServers": {
    "pasal-id": {
      "command": "npx",
      "args": [
        "-y",
        "@anthropic-ai/mcp-proxy",
        "https://pasal-mcp-server-production.up.railway.app/mcp"
      ]
    }
  }
}
推荐的 MCP Server
TraeBuild with Free GPT-4.1 & Claude 3.7. Fully MCP-Ready.
EdgeOne Pages MCPAn MCP service designed for deploying HTML content to EdgeOne Pages and obtaining an accessible public URL.
Jina AI MCP ToolsA Model Context Protocol (MCP) server that integrates with Jina AI Search Foundation APIs.
AiimagemultistyleA Model Context Protocol (MCP) server for image generation and manipulation using fal.ai's Stable Diffusion model.
Visual Studio Code - Open Source ("Code - OSS")Visual Studio Code
RedisA Model Context Protocol server that provides access to Redis databases. This server enables LLMs to interact with Redis key-value stores through a set of standardized tools.
Serper MCP ServerA Serper MCP Server
Zhipu Web SearchZhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, URLs, summaries, site names, site icons, etc.). This helps AI applications achieve "dynamic knowledge acquisition" and "precise scenario adaptation" capabilities.
MCP AdvisorMCP Advisor & Installation - Use the right MCP server for your needs
Amap Maps高德地图官方 MCP Server
Playwright McpPlaywright MCP server
Howtocook Mcp基于Anduin2017 / HowToCook (程序员在家做饭指南)的mcp server,帮你推荐菜谱、规划膳食,解决“今天吃什么“的世纪难题; Based on Anduin2017/HowToCook (Programmer's Guide to Cooking at Home), MCP Server helps you recommend recipes, plan meals, and solve the century old problem of "what to eat today"
Tavily Mcp
Baidu Map百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
DeepChatYour AI Partner on Desktop
WindsurfThe new purpose-built IDE to harness magic
CursorThe AI Code Editor
MiniMax MCPOfficial MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
BlenderBlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.
ChatWiseThe second fastest AI chatbot™
Y GuiA web-based graphical interface for AI chat interactions with support for multiple AI models and MCP (Model Context Protocol) servers.