Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,528Letters: 13Defects: 1,322counted just now
teppi

Server definition

Hash
sha256:f02d42fbb24d6c8c9f7788d88b5c1b71847994189527887754f30f087df3b022
What it is
What a remote MCP server returned when asked what it offers: 7 tools

The blob, as servednamed by its sha256

{ "instructions": "Pakistan Case Law — 232,000+ reported judgments (Supreme Court, Federal Shariat\nCourt, High Courts and tribunals, 1970 onward) across every subject: criminal, family, property,\ncivil procedure, tax, service, constitutional. Each judgment is linked by a full citation graph.\n\nOnly four things you cannot work out from the tools themselves — the rest is your judgement, and\nadapting as you see results beats following any fixed recipe:\n\n1. HOW THIS SEARCH RANKS (counter-intuitive). It is precision-first: it prefers judgments\n containing ALL your terms. So a bare legal principle or a bare Latin maxim is the WEAKEST query\n possible — it matches thousands of unrelated judgments across every subject. Anchor the\n principle to its CONTEXT (the body, office, statute, procedural stage or fact pattern):\n weak : \"approbate and reprobate\" -> 730 hits, none on point\n strong: \"approbate and reprobate candidate unsuccessful challenge recruitment\"\n Too few results: drop a context word. Thousands: add one.\n Ordering is NEARNESS first, then senior court > larger bench > more recent > more cited.\n sort='newest' for the current state of the law (amendments supersede); sort='court' for\n authority — but some subjects live almost entirely in the High Courts, so never discard\n on-point High Court authority.\n\n2. ONE SEARCH IS NEVER ENOUGH. Re-phrase and search again, and follow the citation graph from\n what you have found (see the get_citations / get_cited_by tools) — it routinely surfaces\n authority that no search phrasing reaches. Go where the material leads; ask the user first\n only if a further round would be genuinely large or slow.\n You MAY, between rounds, put questions to the user — to narrow the issue, settle a fact that\n changes which line of authority applies, or offer a promising direction the material has opened\n up. This is a capability to use when it will sharpen the research, not a step you owe on every\n round; if the question is already clear, just carry on.\n\n3. REPORT THE OUTCOME OF EACH CASE. Every judgment carries the court's own recorded disposition\n (\"result\": e.g. Appeal dismissed / Appeal allowed / Bail granted / Leave refused / Case\n remanded). Always state it alongside the citation, because a judgment can lay down the very\n principle you rely on while the applicant still LOST on the facts — and the reader must know\n which. Report it neutrally as a fact about the case; it is not a comment on the judgment's\n correctness or weight.\n\n4. HEADNOTE COVERAGE IS PARTIAL and growing. caselaw_get_case(section='summary') returns an AI\n headnote for some judgments — the cheapest way to judge relevance. Its ABSENCE says nothing\n about a case's importance. Use section='full' only for cases you will actually rely on;\n judgments can exceed 700,000 characters.\n\nREPORT HONESTLY. Quote the passage relied on; give the citation AND the /case/ URL so it can be\nchecked. List authority that cuts AGAINST the user's position as well as for it. If the corpus\ndoes not support a proposition, say so rather than stretching a weak case. This is research\nassistance, not legal advice — the user must verify against the official report (PLD, SCMR, CLC,\nYLR, PLC, MLD...) before relying on anything.\n", "tools": [ { "description": "Fetch one judgment by id.\n\n section='summary' (default) returns metadata + the headnote (plain-language summary, the\n laws/provisions referred, and keyword tags) — read this first to judge relevance cheaply.\n section='full' additionally returns the judgment body text (capped at ~40,000 chars; the\n response flags body_truncated/body_chars_total when longer).\n ", "inputSchema": { "properties": { "case_id": { "description": "Numeric judgment id (from a search/lookup/graph result)", "minimum": 1, "title": "Case Id", "type": "integer" }, "response_format": { "default": "markdown", "enum": [ "markdown", "json" ], "title": "Response Format", "type": "string" }, "section": { "default": "summary", "description": "'summary' = metadata + headnote (cheap); 'full' = + judgment text", "enum": [ "summary", "full" ], "title": "Section", "type": "string" } }, "required": [ "case_id" ], "title": "caselaw_get_caseArguments", "type": "object" }, "name": "caselaw_get_case", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "caselaw_get_caseOutput", "type": "object" } }, { "description": "Walk the citation graph FORWARD: list the in-corpus cases that THIS judgment cites\n (the precedents it relied on). Combine with caselaw_get_cited_by to traverse precedent\n backward and forward until a research question is resolved.\n\n Most useful on RECENT judgments: a 2024-25 case usually has nobody citing it yet, but its\n own citation list is a curated map of the established authority on the point.\n ", "inputSchema": { "properties": { "case_id": { "description": "Numeric judgment id", "minimum": 1, "title": "Case Id", "type": "integer" }, "limit": { "default": 20, "maximum": 50, "minimum": 1, "title": "Limit", "type": "integer" }, "offset": { "default": 0, "minimum": 0, "title": "Offset", "type": "integer" }, "response_format": { "default": "markdown", "enum": [ "markdown", "json" ], "title": "Response Format", "type": "string" } }, "required": [ "case_id" ], "title": "caselaw_get_citationsArguments", "type": "object" }, "name": "caselaw_get_citations", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "caselaw_get_citationsOutput", "type": "object" } }, { "description": "Walk the citation graph BACKWARD: list later cases that cite THIS judgment\n (how it was subsequently treated — followed, distinguished, relied upon). Returns newest first.\n\n Most useful on OLDER or landmark judgments: it shows whether the case is still followed and\n where the principle has been applied since. A leading case can have hundreds of citing cases.\n ", "inputSchema": { "properties": { "case_id": { "description": "Numeric judgment id", "minimum": 1, "title": "Case Id", "type": "integer" }, "limit": { "default": 20, "maximum": 50, "minimum": 1, "title": "Limit", "type": "integer" }, "offset": { "default": 0, "minimum": 0, "title": "Offset", "type": "integer" }, "response_format": { "default": "markdown", "enum": [ "markdown", "json" ], "title": "Response Format", "type": "string" } }, "required": [ "case_id" ], "title": "caselaw_get_cited_byArguments", "type": "object" }, "name": "caselaw_get_cited_by", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "caselaw_get_cited_byOutput", "type": "object" } }, { "description": "Find the judgment(s) at an exact law-report citation.\n\n Example: journal='PLD', year=1995, page=34 → PLD 1995 Supreme Court 34.\n Omit page to list everything reported in that journal+year. Returns the same case shape\n as caselaw_search.\n ", "inputSchema": { "properties": { "journal": { "description": "Law-report code, e.g. 'PLD', 'SCMR', 'CLC'", "maxLength": 30, "minLength": 1, "title": "Journal", "type": "string" }, "limit": { "default": 20, "maximum": 50, "minimum": 1, "title": "Limit", "type": "integer" }, "offset": { "default": 0, "minimum": 0, "title": "Offset", "type": "integer" }, "page": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "description": "Page/serial number in the report (optional)", "title": "Page" }, "response_format": { "default": "markdown", "enum": [ "markdown", "json" ], "title": "Response Format", "type": "string" }, "year": { "maximum": 2100, "minimum": 1900, "title": "Year", "type": "integer" } }, "required": [ "journal", "year" ], "title": "caselaw_lookup_citationArguments", "type": "object" }, "name": "caselaw_lookup_citation", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "caselaw_lookup_citationOutput", "type": "object" } }, { "description": "List the most-cited (landmark) judgments in the corpus, ranked by how many other cases\n cite them. A good entry point for the leading authorities on Pakistani law.\n ", "inputSchema": { "properties": { "limit": { "default": 20, "maximum": 50, "minimum": 1, "title": "Limit", "type": "integer" }, "offset": { "default": 0, "minimum": 0, "title": "Offset", "type": "integer" }, "response_format": { "default": "markdown", "enum": [ "markdown", "json" ], "title": "Response Format", "type": "string" } }, "title": "caselaw_most_citedArguments", "type": "object" }, "name": "caselaw_most_cited", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "caselaw_most_citedOutput", "type": "object" } }, { "description": "Full-text search of Pakistani judgments (Supreme Court, High Courts, Federal Shariat Court\n and tribunals, 1970 onward), with optional filters by court, judge, law report and year.\n\n Ranking follows how lawyers research: nearness to the legal point decides which cases are\n returned; among comparably-near cases, more senior court > larger bench > more recent >\n more cited. For the current state of the law, add year_from (e.g. 2025); use sort='court'\n for the most authoritative first.\n\n With no query, the filters list judgments newest first - e.g. court='Supreme Court' gives the\n latest Supreme Court judgments, journal='PLD' with year_from=year_to=2024 gives that volume,\n and sort='recently_added' alone shows what was added to the site most recently.\n\n Returns cases with id, title, citation, court, year, outcome and the public URL. For an exact\n report citation use caselaw_lookup_citation. To read a case, pass its id to caselaw_get_case.\n ", "inputSchema": { "properties": { "court": { "anyOf": [ { "maxLength": 100, "type": "string" }, { "type": "null" } ], "default": null, "description": "Only this court: 'Supreme Court', 'Lahore High Court' (or 'LHC'), 'Sindh High Court', 'Peshawar High Court', 'Islamabad High Court', 'Balochistan High Court', 'Federal Shariat Court', or a tribunal's name", "title": "Court" }, "journal": { "anyOf": [ { "maxLength": 20, "type": "string" }, { "type": "null" } ], "default": null, "description": "Only judgments reported in this law report: 'PLD', 'SCMR', 'CLC', 'YLR', 'PLC(CS)', 'PTD' ... With year_from/year_to it selects that volume, e.g. SCMR 2025.", "title": "Journal" }, "judge": { "anyOf": [ { "maxLength": 100, "type": "string" }, { "type": "null" } ], "default": null, "description": "Only judgments where this judge sat on the bench. Spelling-tolerant: 'Asif Khosa', 'Qazi Faez Isa'. The reply names the judge it matched.", "title": "Judge" }, "limit": { "default": 20, "maximum": 50, "minimum": 1, "title": "Limit", "type": "integer" }, "offset": { "default": 0, "minimum": 0, "title": "Offset", "type": "integer" }, "query": { "anyOf": [ { "maxLength": 200, "minLength": 2, "type": "string" }, { "type": "null" } ], "default": null, "description": "Keywords, e.g. 'bail murder 302' or 'khula dower'. May be left out when a filter is given.", "title": "Query" }, "response_format": { "default": "markdown", "enum": [ "markdown", "json" ], "title": "Response Format", "type": "string" }, "sort": { "default": "relevance", "description": "relevance (default: nearest on the point, then court/bench/recency/citations) | newest (the ~200 closest matches in strict date order) | court (most senior court first) | recently_added (newest additions to the site). For the CURRENT law on a point, keep relevance and set year_from (e.g. 2025): strict date order can surface judgments that only mention the point in passing.", "title": "Sort", "type": "string" }, "year_from": { "anyOf": [ { "maximum": 2100, "minimum": 1900, "type": "integer" }, { "type": "null" } ], "default": null, "description": "Earliest year (inclusive)", "title": "Year From" }, "year_to": { "anyOf": [ { "maximum": 2100, "minimum": 1900, "type": "integer" }, { "type": "null" } ], "default": null, "description": "Latest year (inclusive)", "title": "Year To" } }, "title": "caselaw_searchArguments", "type": "object" }, "name": "caselaw_search", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "caselaw_searchOutput", "type": "object" } }, { "description": "Find judgments by the QUESTION they settle, rather than by words they contain.\n\n Every judgment summary on this corpus records the questions that judgment actually decides — e.g.\n \"Does delay in lodging the FIR by itself entitle the accused to bail?\" This searches those\n questions, so it matches the shape a legal problem arrives in rather than the vocabulary a\n 1987 bench happened to use.\n\n COVERAGE IS PARTIAL: only some judgments have a summary with questions yet (the response's\n `coverage_note` gives the current live ratio, which keeps growing). An empty result means no\n *summarised* judgment matched — it does NOT mean no such judgment exists. Fall back to\n caselaw_search, which covers the whole corpus.\n\n The questions are prepared from the judgment text. They are a finding aid, not a\n holding: cite the judgment, never the question. Pass an id to caselaw_get_case to read it.\n ", "inputSchema": { "properties": { "court": { "anyOf": [ { "maxLength": 100, "type": "string" }, { "type": "null" } ], "default": null, "description": "Only this court, e.g. 'Supreme Court' or 'Lahore High Court'", "title": "Court" }, "judge": { "anyOf": [ { "maxLength": 100, "type": "string" }, { "type": "null" } ], "default": null, "description": "Only judgments where this judge sat on the bench (spelling-tolerant, e.g. 'Mansoor Ali Shah')", "title": "Judge" }, "limit": { "default": 20, "maximum": 50, "minimum": 1, "title": "Limit", "type": "integer" }, "offset": { "default": 0, "minimum": 0, "title": "Offset", "type": "integer" }, "query": { "description": "The legal question or its subject, in the words a judgment would use — 'delay in lodging FIR', 'concurrent findings of fact', 'pre-arrest bail murder'", "maxLength": 200, "minLength": 2, "title": "Query", "type": "string" }, "response_format": { "default": "markdown", "enum": [ "markdown", "json" ], "title": "Response Format", "type": "string" }, "year_from": { "anyOf": [ { "maximum": 2100, "minimum": 1900, "type": "integer" }, { "type": "null" } ], "default": null, "description": "Earliest year (inclusive)", "title": "Year From" }, "year_to": { "anyOf": [ { "maximum": 2100, "minimum": 1900, "type": "integer" }, { "type": "null" } ], "default": null, "description": "Latest year (inclusive)", "title": "Year To" } }, "required": [ "query" ], "title": "caselaw_search_questionsArguments", "type": "object" }, "name": "caselaw_search_questions", "outputSchema": { "properties": { "result": { "title": "Result", "type": "string" } }, "required": [ "result" ], "title": "caselaw_search_questionsOutput", "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:f02d42fbb24d6c8c9f7788d88b5c1b71847994189527887754f30f087df3b022 | sha256sum