LegalSearch

Public Indian legal search MCP for Roop judgments, statutes, and corpus grounding.

Should I use this

Quality & Safety

B
Description quality
88%
Schema completeness
74%
Naming quality
40%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (10)

  • LOWTool 'roop.public.corpus.status' description lacks action verbin roop.public.corpus.status
  • LOWTool 'roop.public.judgments.search' doesn't follow camelCase/snake_casein roop.public.judgments.search
  • LOWTool 'roop.public.judgments.get_packet' doesn't follow camelCase/snake_casein roop.public.judgments.get_packet
  • LOWTool 'roop.public.judgments.get_packet' name length outside 3-30 rangein roop.public.judgments.get_packet
  • LOWTool 'roop.public.judgments.get_segment' doesn't follow camelCase/snake_casein roop.public.judgments.get_segment
  • LOWTool 'roop.public.judgments.get_segment' name length outside 3-30 rangein roop.public.judgments.get_segment
  • LOWTool 'roop.public.statutes.search' doesn't follow camelCase/snake_casein roop.public.statutes.search
  • LOWTool 'roop.public.statutes.get_packet' doesn't follow camelCase/snake_casein roop.public.statutes.get_packet
  • LOWTool 'roop.public.statutes.get_packet' name length outside 3-30 rangein roop.public.statutes.get_packet
  • LOWTool 'roop.public.corpus.status' doesn't follow camelCase/snake_casein roop.public.corpus.status

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~525Tokens (tool definitions)
~700 BTypical response size
Minimal attention impact (0.41% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "legalsearch": {
      "url": "https://mcp.roopslaw.ai/mcp"
    }
  }
}

Remote endpoints

https://mcp.roopslaw.ai/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢roop.public.judgments.search(query, court, limit)

Search public Indian judgment and appellate tribunal metadata plus public snippets.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "court": {
      "type": "string",
      "description": "Optional public court or tribunal code such as SC, DELHC, or NCLAT."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
🟢roop.public.judgments.get_packet(roop_id)

Fetch a bounded public judgment or appellate tribunal packet by ROOP judgment id.

Input Schema

{
  "type": "object",
  "properties": {
    "roop_id": {
      "type": "string"
    }
  },
  "required": [
    "roop_id"
  ],
  "additionalProperties": false
}
🟢roop.public.judgments.get_segment(roop_id, offset, max_chars)

Fetch one bounded, continuable segment of an exact public judgment by ROOP judgment id.

Input Schema

{
  "type": "object",
  "properties": {
    "roop_id": {
      "type": "string"
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 2000000
    },
    "max_chars": {
      "type": "integer",
      "minimum": 1000,
      "maximum": 20000
    }
  },
  "required": [
    "roop_id"
  ],
  "additionalProperties": false
}
🟢roop.public.statutes.search(query, jurisdiction_scope, state_code, doc_kind, instrument_type, ...)

Search public statutes and subordinate legislation metadata.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "jurisdiction_scope": {
      "type": "string",
      "enum": [
        "central",
        "state"
      ]
    },
    "state_code": {
      "type": "string"
    },
    "doc_kind": {
      "type": "string",
      "enum": [
        "act",
        "subordinate",
        "draft"
      ]
    },
    "instrument_type": {
      "type": "string",
      "description": "Optional instrument type filter such as rules, regulations, notification, order, circular, or form."
    },
    "instrumentType": {
      "type": "string",
      "description": "Camel-case alias for instrument_type."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
🟢roop.public.statutes.get_packet(query, limit)

Fetch a bounded public statute packet using the public statutes search surface.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
⚪roop.public.corpus.status

Report the public corpus surfaces exposed through this DMZ MCP.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Recommended Prompts

search_research
Search for information about [topic] using LegalSearch
Expected tools: roop.public.judgments.search
find_specific
Find [specific item] using LegalSearch
Expected tools: roop.public.judgments.search
retrieve_data
Get details about [item] from LegalSearch
Expected tools: roop.public.judgments.get_packet
fetch_info
Fetch [information type] using LegalSearch
Expected tools: roop.public.judgments.get_packet
research_workflow
Search for [topic], then get detailed information about the top results using LegalSearch
Expected tools: roop.public.judgments.searchroop.public.judgments.get_packet

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools