Koskamo

eDiscovery Decoder MCP

A free, read-only MCP server providing access to eDiscovery news, Technology-Assisted Review (TAR) calculators (prevalence, elusion, richness, precision/recall), and educational reference materials like glossaries and workflow guides for legal and eDiscovery professionals.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

eDiscovery Decoder MCP logo, by eDiscovery DecoderVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by eDiscovery Decoder
MCP endpoint (Streamable HTTP)
https://mcp.ediscoverydecoder.com/mcp
Vendor documentation

What its tools do

15 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

15 of 15 have a description · 15 of 15 declare behavior hints · 0 of 12 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to ediscoverydecoder.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Estimate prevalence and review burden from random samples
  • Calculate precision, recall, and F1 metrics
  • Access eDiscovery news and case law updates
  • Retrieve TAR glossary definitions and workflow guides

Source and maintenance

Vendor evidenceRegistry 0.1.0

Protocol and capabilities

Server
ediscovery-decoder-news-calc 0.1.0
MCP protocol negotiated in check
2025-11-25
Tools
15 advertised
Resources
9 advertised
Resource templates
1 advertised
Prompts
3 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  },
  "completions": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

eDiscovery Decoder (free educational non-commercial preview): curated eDiscovery / legal-tech news plus deterministic Technology-Assisted Review (TAR) and document-review statistics calculators. Reach for this server whenever the user mentions eDiscovery, TAR, predictive coding, document review, recall / precision, elusion, prevalence / richness, sample size, control sets, or review validation / defensibility — or wants recent eDiscovery news. Pick a calculator by the question being asked: - How many docs to sample? -> calculate_sample_size - How much was missed in a culled / null set? -> calculate_elusion (rate) or calculate_tar_recall_estimate (overall recall %) - Recall / precision / F1 from a coded matrix? -> calculate_review_metrics - Recall against a known control set? -> calculate_control_set_recall - How rich / prevalent is the population? -> calculate_prevalence_richness - Compare score / rank cutoffs? -> compare_tar_cutoffs - Is a sampling plan defensible? -> validate_sample_design For news, use search_news (find stories by topic/date) or get_news_brief (ready-made roundup). If you are unsure what is available, call list_capabilities first. Calculators take aggregate counts only (no case files) and produce deterministic math for education and planning — not legal advice. AI/software can make mistakes; outputs require independent human and professional review.

Tools

15 advertised

ping — Ping
Advertised by the server during the last successful anonymous check.
Advertised read-only

Health check: confirm the eDiscovery Decoder News/Calc MCP server is reachable before a demo or when troubleshooting a connection. Returns server name and version. No inputs.

ping input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
ping output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ok",
    "server",
    "version"
  ],
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "server": {
      "type": "string"
    },
    "version": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
ping annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_capabilities — List eDiscovery Decoder MCP Capabilities
Advertised by the server during the last successful anonymous check.
Advertised read-only

List the full eDiscovery Decoder MCP surface — every tool, prompt, and resource, plus the suggested demo flow and safety boundaries — with an example prompt for each. Call this first when you are unsure which tool fits the user's question, or when tool-search shows only a partial list.

list_capabilities input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
list_capabilities output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "server",
    "version",
    "purpose",
    "endpoint",
    "tools",
    "prompts",
    "resources",
    "demo_flow",
    "safety_boundaries",
    "claude_note"
  ],
  "properties": {
    "tools": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "purpose",
          "example_prompt"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "purpose": {
            "type": "string"
          },
          "example_prompt": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "server": {
      "type": "string"
    },
    "prompts": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "purpose"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "purpose": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "purpose": {
      "type": "string"
    },
    "version": {
      "type": "string"
    },
    "endpoint": {
      "type": "string"
    },
    "demo_flow": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "resources": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "uri",
          "purpose"
        ],
        "properties": {
          "uri": {
            "type": "string"
          },
          "purpose": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "claude_note": {
      "type": "string"
    },
    "safety_boundaries": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false
}
list_capabilities annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_demo_guide — Get eDiscovery Decoder MCP Demo Guide
Advertised by the server during the last successful anonymous check.
Advertised read-only

Return a short, human-readable walkthrough for testing this server: the endpoint, the tool/prompt/resource names, and ready-to-paste sample prompts. Use to give someone a guided demo. For the full machine-readable capability catalog, use list_capabilities instead.

get_demo_guide input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
get_demo_guide output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "title",
    "endpoint",
    "purpose",
    "tools",
    "prompts",
    "resources",
    "suggested_test_prompts",
    "safety_boundaries"
  ],
  "properties": {
    "title": {
      "type": "string"
    },
    "tools": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "prompts": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "purpose": {
      "type": "string"
    },
    "endpoint": {
      "type": "string"
    },
    "resources": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "safety_boundaries": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "suggested_test_prompts": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false
}
get_demo_guide annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_resource_content — Get MCP Resource Content
Advertised by the server during the last successful anonymous check.
Advertised read-only

Fetch the JSON behind a supported edd:// resource — the demo guide, TAR learning path, glossary, or news (latest / brief / by-date). Use when you want resource content but the client cannot read MCP resources directly, e.g. to pull glossary definitions or the news brief as a normal tool result.

get_resource_content input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "uri"
  ],
  "properties": {
    "uri": {
      "type": "string",
      "pattern": "^edd:\\/\\/(?:mcp\\/demo-guide|resources\\/tar-learning-path|glossary\\/core|news\\/latest|news\\/brief|news\\/\\d{4}-\\d{2}-\\d{2})$"
    }
  },
  "additionalProperties": false
}
get_resource_content output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "uri",
    "mimeType",
    "text",
    "payload"
  ],
  "properties": {
    "uri": {
      "type": "string"
    },
    "text": {
      "type": "string"
    },
    "payload": {
      "type": "object",
      "additionalProperties": {}
    },
    "mimeType": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_resource_content annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_prompt_template — Get MCP Prompt Template
Advertised by the server during the last successful anonymous check.
Advertised read-only

Return the rendered text of one of this server's guided prompts (mcp-demo-tour, tar-matter-kickoff, weekly-digest). Use when the client can call tools but cannot open MCP prompts directly, or when you want to inspect a prompt's wording before using it.

get_prompt_template input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "prompt_name"
  ],
  "properties": {
    "audience": {
      "type": "string",
      "minLength": 1
    },
    "week_start": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "prompt_name": {
      "enum": [
        "mcp-demo-tour",
        "tar-matter-kickoff",
        "weekly-digest"
      ],
      "type": "string"
    },
    "matter_description": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false
}
get_prompt_template output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "name",
    "arguments",
    "template_text",
    "messages"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "messages": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "role",
          "content"
        ],
        "properties": {
          "role": {
            "enum": [
              "user",
              "assistant"
            ],
            "type": "string"
          },
          "content": {
            "type": "object",
            "required": [
              "type",
              "text"
            ],
            "properties": {
              "text": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "const": "text"
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      }
    },
    "arguments": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "description": {
      "type": "string"
    },
    "template_text": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_prompt_template annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_news — Search eDiscovery News
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Find recent eDiscovery / legal-AI / TAR news by topic, tag, or date range. Use when the user asks what's new or recent in eDiscovery, wants stories on a subject, or asks about a time window. For a ready-made top-stories roundup instead, use get_news_brief.

search_news input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "tags": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 50,
      "minimum": 1
    },
    "query": {
      "type": "string",
      "minLength": 1
    },
    "date_to": {
      "$ref": "#/properties/date_from"
    },
    "date_from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "additionalProperties": false
}
search_news output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "items"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "summary",
          "source_url",
          "published_at",
          "tags"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "source_url": {
            "type": "string"
          },
          "published_at": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
search_news annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_news_brief — Get eDiscovery News Brief
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get the current eDiscovery Decoder news brief: top stories plus a Week in Review breakdown, returned both as structured data and as display-ready Markdown (formatted_brief) with a 'why it matters' line per story. Use when the user wants a roundup or summary of current eDiscovery AI news rather than a keyword search.

get_news_brief input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "week_limit": {
      "type": "integer",
      "default": 3,
      "maximum": 10,
      "minimum": 1
    },
    "current_limit": {
      "type": "integer",
      "default": 7,
      "maximum": 20,
      "minimum": 1
    }
  },
  "additionalProperties": false
}
get_news_brief output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "generated_at",
    "source_url",
    "formatted_brief",
    "story_bullets",
    "top_stories",
    "week_so_far"
  ],
  "properties": {
    "source_url": {
      "type": "string"
    },
    "top_stories": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "summary",
          "source_url",
          "published_at",
          "tags"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "source_url": {
            "type": "string"
          },
          "published_at": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "week_so_far": {
      "type": "object",
      "required": [
        "generated_at",
        "source_url",
        "items",
        "breakdowns"
      ],
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/properties/top_stories/items"
          }
        },
        "breakdowns": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "title",
              "summary",
              "source_url",
              "published_at",
              "tags"
            ],
            "properties": {
              "id": {
                "$ref": "#/properties/top_stories/items/properties/id"
              },
              "tags": {
                "$ref": "#/properties/top_stories/items/properties/tags"
              },
              "score": {
                "type": "number"
              },
              "title": {
                "$ref": "#/properties/top_stories/items/properties/title"
              },
              "reasons": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "summary": {
                "$ref": "#/properties/top_stories/items/properties/summary"
              },
              "source_url": {
                "$ref": "#/properties/top_stories/items/properties/source_url"
              },
              "published_at": {
                "$ref": "#/properties/top_stories/items/properties/published_at"
              },
              "why_it_matters": {
                "type": "string"
              },
              "score_breakdown": {
                "type": "object",
                "additionalProperties": {
                  "type": "number"
                }
              }
            },
            "additionalProperties": false
          }
        },
        "source_url": {
          "type": "string"
        },
        "generated_at": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "generated_at": {
      "type": "string"
    },
    "story_bullets": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "summary",
          "source_url",
          "published_at",
          "tags",
          "why_it_matters"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "source_url": {
            "type": "string"
          },
          "published_at": {
            "type": "string"
          },
          "why_it_matters": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "formatted_brief": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_news_brief annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_review_metrics — Calculate Review Metrics
Advertised by the server during the last successful anonymous check.
Advertised read-only

Score a coded sample when you have a full confusion matrix (true/false positives and negatives) — e.g. comparing a TAR model's calls against a reviewer's. Returns recall, precision, F1, accuracy, and in-sample elusion. Use calculate_control_set_recall if you only have relevant-found vs relevant-missed; calculate_elusion for a discard/null-set sample. Aggregate counts only; not legal advice.

calculate_review_metrics input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "true_positives",
    "false_positives",
    "false_negatives",
    "true_negatives"
  ],
  "properties": {
    "true_negatives": {
      "type": "integer",
      "minimum": 0
    },
    "true_positives": {
      "type": "integer",
      "minimum": 0
    },
    "false_negatives": {
      "type": "integer",
      "minimum": 0
    },
    "false_positives": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false
}
calculate_review_metrics output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "recall",
    "precision",
    "f1",
    "accuracy",
    "elusion_in_sample"
  ],
  "properties": {
    "f1": {
      "$ref": "#/properties/recall"
    },
    "recall": {
      "type": "object",
      "required": [
        "value",
        "formula"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "value": {
          "type": [
            "number",
            "null"
          ]
        },
        "formula": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "accuracy": {
      "$ref": "#/properties/recall"
    },
    "precision": {
      "$ref": "#/properties/recall"
    },
    "elusion_in_sample": {
      "$ref": "#/properties/recall"
    }
  },
  "additionalProperties": false
}
calculate_review_metrics annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_elusion — Calculate Elusion
Advertised by the server during the last successful anonymous check.
Advertised read-only

Estimate how much responsive/relevant material may remain in a set you chose NOT to review (the discard, null, or 'elusion' set). Use when a random sample of that excluded set has been coded — e.g. 'we sampled 400 culled docs and found 2 relevant.' Returns the elusion rate and a Wilson confidence interval. For an overall recall % from the same sample, use calculate_tar_recall_estimate. Aggregate counts only; not legal advice.

calculate_elusion input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "relevant_found_in_sample",
    "sample_size"
  ],
  "properties": {
    "sample_size": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "confidence_level": {
      "type": "number",
      "default": 0.95,
      "exclusiveMaximum": 1,
      "exclusiveMinimum": 0
    },
    "relevant_found_in_sample": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false
}
calculate_elusion output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "elusion_rate",
    "confidence_interval",
    "formula",
    "assumptions"
  ],
  "properties": {
    "formula": {
      "type": "string"
    },
    "assumptions": {
      "type": "object",
      "required": [
        "relevant_found_in_sample",
        "sample_size",
        "confidence_level",
        "z_score"
      ],
      "properties": {
        "z_score": {
          "type": "number"
        },
        "sample_size": {
          "type": "number"
        },
        "confidence_level": {
          "type": "number"
        },
        "relevant_found_in_sample": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "elusion_rate": {
      "type": "number"
    },
    "confidence_interval": {
      "type": "object",
      "required": [
        "lower",
        "upper",
        "method"
      ],
      "properties": {
        "lower": {
          "type": "number"
        },
        "upper": {
          "type": "number"
        },
        "method": {
          "type": "string",
          "const": "wilson"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
calculate_elusion annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_sample_size — Calculate Sample Size
Advertised by the server during the last successful anonymous check.
Advertised read-only

Work out how many documents to randomly sample to estimate a proportion (e.g. richness or elusion) at a target confidence level and margin of error, with finite-population correction. Use when planning a sample before review — 'how big a sample do we need?' Aggregate inputs only; not legal advice.

calculate_sample_size input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "population_size",
    "margin_of_error"
  ],
  "properties": {
    "margin_of_error": {
      "type": "number",
      "exclusiveMaximum": 1,
      "exclusiveMinimum": 0
    },
    "population_size": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "confidence_level": {
      "type": "number",
      "default": 0.95,
      "exclusiveMaximum": 1,
      "exclusiveMinimum": 0
    },
    "estimated_prevalence": {
      "type": "number",
      "default": 0.5,
      "maximum": 1,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
calculate_sample_size output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "recommended_sample_size",
    "raw_sample_size",
    "assumptions",
    "formula"
  ],
  "properties": {
    "formula": {
      "type": "string"
    },
    "assumptions": {
      "type": "object",
      "required": [
        "population_size",
        "confidence_level",
        "margin_of_error",
        "estimated_prevalence",
        "z_score"
      ],
      "properties": {
        "z_score": {
          "type": "number"
        },
        "margin_of_error": {
          "type": "number"
        },
        "population_size": {
          "type": "number"
        },
        "confidence_level": {
          "type": "number"
        },
        "estimated_prevalence": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "raw_sample_size": {
      "type": "number",
      "minimum": 0
    },
    "recommended_sample_size": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false
}
calculate_sample_size annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_tar_recall_estimate — Calculate TAR Recall Estimate
Advertised by the server during the last successful anonymous check.
Advertised read-only

Estimate overall TAR recall and how many responsive docs were missed, by combining the responsive count already found with an elusion sample of the excluded set. Use when the user wants a recall % for the whole workflow, not just the elusion rate. For only the elusion rate and its interval, use calculate_elusion. Aggregate counts only; not legal advice.

calculate_tar_recall_estimate input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "responsive_found",
    "excluded_population_size",
    "elusion_responsive_hits",
    "elusion_sample_size"
  ],
  "properties": {
    "confidence_level": {
      "type": "number",
      "default": 0.95,
      "exclusiveMaximum": 1,
      "exclusiveMinimum": 0
    },
    "responsive_found": {
      "type": "integer",
      "minimum": 0
    },
    "elusion_sample_size": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "elusion_responsive_hits": {
      "type": "integer",
      "minimum": 0
    },
    "excluded_population_size": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false
}
calculate_tar_recall_estimate output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "responsiveFound",
    "excludedPopulationSize",
    "elusion",
    "estimatedRecall",
    "formula",
    "assumptions"
  ],
  "properties": {
    "elusion": {
      "type": "object",
      "required": [
        "sampleSize",
        "responsiveHits",
        "pointEstimate",
        "confidenceInterval",
        "estimatedMissed",
        "estimatedMissedLower",
        "estimatedMissedUpper",
        "confidenceLevel"
      ],
      "properties": {
        "sampleSize": {
          "type": "integer",
          "minimum": 0
        },
        "pointEstimate": {
          "type": [
            "number",
            "null"
          ]
        },
        "responsiveHits": {
          "type": "integer",
          "minimum": 0
        },
        "confidenceLevel": {
          "type": "number"
        },
        "estimatedMissed": {
          "type": [
            "number",
            "null"
          ]
        },
        "confidenceInterval": {
          "type": "object",
          "required": [
            "lower",
            "upper",
            "method"
          ],
          "properties": {
            "lower": {
              "type": [
                "number",
                "null"
              ]
            },
            "upper": {
              "type": [
                "number",
                "null"
              ]
            },
            "method": {
              "type": "string",
              "const": "wilson"
            }
          },
          "additionalProperties": false
        },
        "estimatedMissedLower": {
          "type": [
            "number",
            "null"
          ]
        },
        "estimatedMissedUpper": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "formula": {
      "type": "string"
    },
    "assumptions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "estimatedRecall": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "estimate",
            "lower",
            "upper"
          ],
          "properties": {
            "lower": {
              "type": "number"
            },
            "upper": {
              "type": "number"
            },
            "estimate": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "responsiveFound": {
      "type": "integer",
      "minimum": 0
    },
    "excludedPopulationSize": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false
}
calculate_tar_recall_estimate annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_prevalence_richness — Calculate Prevalence Or Richness
Advertised by the server during the last successful anonymous check.
Advertised read-only

Estimate how rich or prevalent a population is — the share that is responsive/relevant/positive — from positive hits in a random sample, with a Wilson confidence interval. Use for 'what % of this set is relevant?' or to size review scope and cost expectations. Aggregate counts only; not legal advice.

calculate_prevalence_richness input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "positive_hits",
    "sample_size"
  ],
  "properties": {
    "sample_size": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "positive_hits": {
      "type": "integer",
      "minimum": 0
    },
    "population_size": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "confidence_level": {
      "type": "number",
      "default": 0.95,
      "exclusiveMaximum": 1,
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
calculate_prevalence_richness output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "sampleSize",
    "positiveHits",
    "pointEstimate",
    "confidenceInterval",
    "confidenceLevel",
    "estimatedPositiveCount",
    "estimatedPositiveLower",
    "estimatedPositiveUpper",
    "formula"
  ],
  "properties": {
    "formula": {
      "type": "string"
    },
    "sampleSize": {
      "type": "integer",
      "minimum": 0
    },
    "positiveHits": {
      "type": "integer",
      "minimum": 0
    },
    "pointEstimate": {
      "type": "number"
    },
    "confidenceLevel": {
      "type": "number"
    },
    "confidenceInterval": {
      "type": "object",
      "required": [
        "lower",
        "upper",
        "method"
      ],
      "properties": {
        "lower": {
          "type": "number"
        },
        "upper": {
          "type": "number"
        },
        "method": {
          "type": "string",
          "const": "wilson"
        }
      },
      "additionalProperties": false
    },
    "estimatedPositiveCount": {
      "type": [
        "number",
        "null"
      ]
    },
    "estimatedPositiveLower": {
      "type": [
        "number",
        "null"
      ]
    },
    "estimatedPositiveUpper": {
      "type": [
        "number",
        "null"
      ]
    }
  },
  "additionalProperties": false
}
calculate_prevalence_richness annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_control_set_recall — Calculate Control Set Recall
Advertised by the server during the last successful anonymous check.
Advertised read-only

Calculate recall against a known control set: the share of documents already confirmed relevant that the workflow found, with a Wilson confidence interval. Use when you have relevant-found and relevant-missed counts from a fixed reference set. For recall from a confusion matrix use calculate_review_metrics; from a discard-set sample use calculate_tar_recall_estimate. Aggregate counts only; not legal advice.

calculate_control_set_recall input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "relevant_found",
    "relevant_missed"
  ],
  "properties": {
    "relevant_found": {
      "type": "integer",
      "minimum": 0
    },
    "relevant_missed": {
      "type": "integer",
      "minimum": 0
    },
    "confidence_level": {
      "type": "number",
      "default": 0.95,
      "exclusiveMaximum": 1,
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
calculate_control_set_recall output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "relevantFound",
    "relevantMissed",
    "totalRelevant",
    "recall",
    "confidenceInterval",
    "confidenceLevel",
    "formula"
  ],
  "properties": {
    "recall": {
      "type": [
        "number",
        "null"
      ]
    },
    "formula": {
      "type": "string"
    },
    "relevantFound": {
      "type": "integer",
      "minimum": 0
    },
    "totalRelevant": {
      "type": "integer",
      "minimum": 0
    },
    "relevantMissed": {
      "type": "integer",
      "minimum": 0
    },
    "confidenceLevel": {
      "type": "number"
    },
    "confidenceInterval": {
      "type": "object",
      "required": [
        "lower",
        "upper",
        "method"
      ],
      "properties": {
        "lower": {
          "type": [
            "number",
            "null"
          ]
        },
        "upper": {
          "type": [
            "number",
            "null"
          ]
        },
        "method": {
          "type": "string",
          "const": "wilson"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
calculate_control_set_recall annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_tar_cutoffs — Compare TAR Cutoffs
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compare candidate TAR score or rank cutoffs side by side: for each cutoff, how many docs sit above it, its share of the scored set, and (if responsive counts are given) an estimated precision. Use when deciding where to draw the review/cull line. Aggregate counts only; not legal advice.

compare_tar_cutoffs input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "scored_document_count",
    "cutoffs"
  ],
  "properties": {
    "cutoffs": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "cutoff",
          "document_count"
        ],
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1
          },
          "cutoff": {
            "type": "number"
          },
          "document_count": {
            "type": "integer",
            "minimum": 0
          },
          "responsive_count": {
            "type": "integer",
            "minimum": 0
          }
        },
        "additionalProperties": false
      },
      "minItems": 1
    },
    "scored_document_count": {
      "type": "integer",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
compare_tar_cutoffs output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "scoredDocumentCount",
    "cutoffs",
    "questions"
  ],
  "properties": {
    "cutoffs": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "label",
          "cutoff",
          "documentCount",
          "shareOfScored",
          "responsiveCount",
          "precisionEstimate"
        ],
        "properties": {
          "label": {
            "type": "string"
          },
          "cutoff": {
            "type": "number"
          },
          "documentCount": {
            "type": "integer",
            "minimum": 0
          },
          "shareOfScored": {
            "type": "number"
          },
          "responsiveCount": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "precisionEstimate": {
            "type": [
              "number",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "questions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "scoredDocumentCount": {
      "type": "integer",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
compare_tar_cutoffs annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
validate_sample_design — Validate Sample Design
Advertised by the server during the last successful anonymous check.
Advertised read-only

QC a TAR validation sampling plan: check whether it has the documented elements needed for a defensibility discussion (population, sample size, confidence level, sampling frame/method, randomization, etc.) and flag what is missing or inconsistent. Use to sanity-check a sampling protocol before relying on it. Reviews metadata only — not a legal sufficiency opinion.

validate_sample_design input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "population_size",
    "sample_size"
  ],
  "properties": {
    "random_seed": {
      "type": "string",
      "minLength": 1
    },
    "sample_size": {
      "type": "integer"
    },
    "generated_at": {
      "type": "string",
      "minLength": 1
    },
    "sampling_frame": {
      "type": "string",
      "minLength": 1
    },
    "margin_of_error": {
      "type": "number",
      "exclusiveMaximum": 1,
      "exclusiveMinimum": 0
    },
    "population_size": {
      "type": "integer"
    },
    "sampling_method": {
      "type": "string",
      "minLength": 1
    },
    "confidence_level": {
      "type": "number",
      "default": 0.95,
      "exclusiveMaximum": 1,
      "exclusiveMinimum": 0
    },
    "excluded_population_size": {
      "type": "integer"
    }
  },
  "additionalProperties": false
}
validate_sample_design output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "status",
    "issues",
    "summary"
  ],
  "properties": {
    "issues": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "severity",
          "detail"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          },
          "severity": {
            "enum": [
              "info",
              "warning",
              "critical"
            ],
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "status": {
      "enum": [
        "ready",
        "needs_attention",
        "blocked"
      ],
      "type": "string"
    },
    "summary": {
      "type": "object",
      "required": [
        "populationSize",
        "sampleSize",
        "samplingRate",
        "confidenceLevel",
        "marginOfError"
      ],
      "properties": {
        "sampleSize": {
          "type": "integer"
        },
        "samplingRate": {
          "type": [
            "number",
            "null"
          ]
        },
        "marginOfError": {
          "type": [
            "number",
            "null"
          ]
        },
        "populationSize": {
          "type": "integer"
        },
        "confidenceLevel": {
          "type": "number"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
validate_sample_design annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

3 advertised

mcp-demo-tour — MCP Demo Tour

Advertised by the server during the last successful anonymous check.

Guide a user through this eDiscovery Decoder MCP demo and explain tools, resources, and prompts with safe example calls.

audience
Who the tour is for.
tar-matter-kickoff — TAR Matter Kickoff

Advertised by the server during the last successful anonymous check.

Turn a matter description into TAR scoping, sampling, validation, controls, and explanation questions for human review.

matter_description
Short description of the matter, document population, review goal, or TAR question. (required)
audience
Audience for the planning output.
weekly-digest — Weekly Digest

Advertised by the server during the last successful anonymous check.

Draft a weekly eDiscovery Decoder news digest from read-only news items for human review.

week_start
First day of the digest week in YYYY-MM-DD format. (required)
audience
Intended audience, such as newsletter subscribers or litigation teams. (required)

Resources

9 advertised

mcp-demo-guide — eDiscovery Decoder MCP Demo Guide

Advertised by the server during the last successful anonymous check.

Plain-English guide to this free hosted MCP demo, its tools, resources, prompts, and safety boundaries.

mcp-demo-guide URI
edd://mcp/demo-guide

MIME type: application/json

tar-learning-path — TAR Learning Path

Advertised by the server during the last successful anonymous check.

Curated eDiscovery Decoder learning path for TAR, AI-assisted review, validation, glossary terms, and calculators. Read when a user is new to TAR or asks where to start.

tar-learning-path URI
edd://resources/tar-learning-path

MIME type: application/json

glossary-core — Core TAR Glossary

Advertised by the server during the last successful anonymous check.

Compact definitions for TAR, sampling, and validation terms (recall, precision, elusion, richness, control set, confidence interval, sampling error). Read when a user needs a term defined or you must disambiguate which calculator they want.

glossary-core URI
edd://glossary/core

MIME type: application/json

news-latest — Latest eDiscovery News

Advertised by the server during the last successful anonymous check.

Most recent curated eDiscovery Decoder news digest.

news-latest URI
edd://news/latest

MIME type: application/json

news-brief — eDiscovery News Brief

Advertised by the server during the last successful anonymous check.

Top current eDiscovery AI stories and Week in Review breakdown.

news-brief URI
edd://news/brief

MIME type: application/json

news-2026-11-06 — eDiscovery News - 2026-11-06

Advertised by the server during the last successful anonymous check.

Curated eDiscovery Decoder news digest for a specific YYYY-MM-DD date.

news-2026-11-06 URI
edd://news/2026-11-06

MIME type: application/json

news-2026-11-05 — eDiscovery News - 2026-11-05

Advertised by the server during the last successful anonymous check.

Curated eDiscovery Decoder news digest for a specific YYYY-MM-DD date.

news-2026-11-05 URI
edd://news/2026-11-05

MIME type: application/json

news-2026-11-04 — eDiscovery News - 2026-11-04

Advertised by the server during the last successful anonymous check.

Curated eDiscovery Decoder news digest for a specific YYYY-MM-DD date.

news-2026-11-04 URI
edd://news/2026-11-04

MIME type: application/json

news-2026-10-31 — eDiscovery News - 2026-10-31

Advertised by the server during the last successful anonymous check.

Curated eDiscovery Decoder news digest for a specific YYYY-MM-DD date.

news-2026-10-31 URI
edd://news/2026-10-31

MIME type: application/json

news-by-date — eDiscovery News by Date

Advertised by the server during the last successful anonymous check.

Curated eDiscovery Decoder news digest for a specific YYYY-MM-DD date.

news-by-date URI template
edd://news/{date}

MIME type: application/json

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (6 of 6 answered).

  1. 2026-11-06: 1 of 1 checks answered
  2. 2026-11-07: 2 of 2 checks answered
  3. 2026-11-09: 1 of 1 checks answered
  4. 2026-11-10: 2 of 2 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1904 ms
95th percentile latency
1904 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1904 ms · metadata changed · 15 tool(s), 9 resource(s), 1 resource template(s), 3 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http ediscovery-decoder-mcp https://mcp.ediscoverydecoder.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add ediscovery-decoder-mcp --url https://mcp.ediscoverydecoder.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable ediscovery-decoder-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "ediscovery-decoder-mcp": {
      "url": "https://mcp.ediscoverydecoder.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "ediscovery-decoder-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.ediscoverydecoder.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start ediscovery-decoder-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "ediscovery-decoder-mcp": {
      "type": "http",
      "url": "https://mcp.ediscoverydecoder.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http ediscovery-decoder-mcp https://mcp.ediscoverydecoder.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://mcp.ediscoverydecoder.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "ediscovery-decoder-mcp": {
      "serverUrl": "https://mcp.ediscoverydecoder.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like eDiscovery Decoder MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run eDiscovery Decoder MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing