eDiscovery Decoder News/Calc

Free educational MCP for read-only eDiscovery news and TAR/review calculators.

Should I use this

Quality & Safety

A
Description quality
99%
Schema completeness
68%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~5,704Tokens (tool definitions)
~3.4 KBTypical response size
Significant attention impact (4.46% 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": {
    "mcp": {
      "url": "https://mcp.ediscoverydecoder.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.ediscoverydecoder.com/mcpstreamable-http

What it can do

Tool inventory

Tools (15)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢ping

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "server": {
      "type": "string"
    },
    "version": {
      "type": "string"
    }
  },
  "required": [
    "ok",
    "server",
    "version"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_capabilities

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "server": {
      "type": "string"
    },
    "version": {
      "type": "string"
    },
    "purpose": {
      "type": "string"
    },
    "endpoint": {
      "type": "string"
    },
    "tools": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "purpose": {
            "type": "string"
          },
          "example_prompt": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "purpose",
          "example_prompt"
        ],
        "additionalProperties": false
      }
    },
    "prompts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "purpose": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "purpose"
        ],
        "additionalProperties": false
      }
    },
    "resources": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "uri": {
            "type": "string"
          },
          "purpose": {
            "type": "string"
          }
        },
        "required": [
          "uri",
          "purpose"
        ],
        "additionalProperties": false
      }
    },
    "demo_flow": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "safety_boundaries": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "claude_note": {
      "type": "string"
    }
  },
  "required": [
    "server",
    "version",
    "purpose",
    "endpoint",
    "tools",
    "prompts",
    "resources",
    "demo_flow",
    "safety_boundaries",
    "claude_note"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_demo_guide

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string"
    },
    "endpoint": {
      "type": "string"
    },
    "purpose": {
      "type": "string"
    },
    "tools": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "prompts": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "resources": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "suggested_test_prompts": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "safety_boundaries": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "title",
    "endpoint",
    "purpose",
    "tools",
    "prompts",
    "resources",
    "suggested_test_prompts",
    "safety_boundaries"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_resource_content(uri)

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.

Input Schema

{
  "type": "object",
  "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})$"
    }
  },
  "required": [
    "uri"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "uri": {
      "type": "string"
    },
    "mimeType": {
      "type": "string"
    },
    "text": {
      "type": "string"
    },
    "payload": {
      "type": "object",
      "additionalProperties": {}
    }
  },
  "required": [
    "uri",
    "mimeType",
    "text",
    "payload"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_prompt_template(prompt_name, audience, matter_description, week_start)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "prompt_name": {
      "type": "string",
      "enum": [
        "mcp-demo-tour",
        "tar-matter-kickoff",
        "weekly-digest"
      ]
    },
    "audience": {
      "type": "string",
      "minLength": 1
    },
    "matter_description": {
      "type": "string",
      "minLength": 1
    },
    "week_start": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "required": [
    "prompt_name"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "arguments": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "template_text": {
      "type": "string"
    },
    "messages": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "role": {
            "type": "string",
            "enum": [
              "user",
              "assistant"
            ]
          },
          "content": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "const": "text"
              },
              "text": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "text"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "role",
          "content"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "name",
    "arguments",
    "template_text",
    "messages"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_news(query, tags, date_from, date_to, limit)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "date_from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "date_to": {
      "$ref": "#/properties/date_from"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 10
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "source_url": {
            "type": "string"
          },
          "published_at": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "title",
          "summary",
          "source_url",
          "published_at",
          "tags"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "items"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_news_brief(current_limit, week_limit)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "current_limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 7
    },
    "week_limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "default": 3
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "generated_at": {
      "type": "string"
    },
    "source_url": {
      "type": "string"
    },
    "formatted_brief": {
      "type": "string"
    },
    "story_bullets": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "source_url": {
            "type": "string"
          },
          "published_at": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "why_it_matters": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "summary",
          "source_url",
          "published_at",
          "tags",
          "why_it_matters"
        ],
        "additionalProperties": false
      }
    },
    "top_stories": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "source_url": {
            "type": "string"
          },
          "published_at": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "title",
          "summary",
          "source_url",
          "published_at",
          "tags"
        ],
        "additionalProperties": false
      }
    },
    "week_so_far": {
      "type": "object",
      "properties": {
        "generated_at": {
          "type": "string"
        },
        "source_url": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/properties/top_stories/items"
          }
        },
        "breakdowns": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "$ref": "#/properties/top_stories/items/properties/id"
              },
              "title": {
                "$ref": "#/properties/top_stories/items/properties/title"
              },
              "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"
              },
              "tags": {
                "$ref": "#/properties/top_stories/items/properties/tags"
              },
              "why_it_matters": {
                "type": "string"
              },
              "reasons": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "score": {
                "type": "number"
              },
              "score_breakdown": {
                "type": "object",
                "additionalProperties": {
                  "type": "number"
                }
              }
            },
            "required": [
              "id",
              "title",
              "summary",
              "source_url",
              "published_at",
              "tags"
            ],
            "additionalProperties": false
          }
        }
      },
      "required": [
        "generated_at",
        "source_url",
        "items",
        "breakdowns"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "generated_at",
    "source_url",
    "formatted_brief",
    "story_bullets",
    "top_stories",
    "week_so_far"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calculate_review_metrics(true_positives, false_positives, false_negatives, true_negatives)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "true_positives": {
      "type": "integer",
      "minimum": 0
    },
    "false_positives": {
      "type": "integer",
      "minimum": 0
    },
    "false_negatives": {
      "type": "integer",
      "minimum": 0
    },
    "true_negatives": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "true_positives",
    "false_positives",
    "false_negatives",
    "true_negatives"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "recall": {
      "type": "object",
      "properties": {
        "value": {
          "type": [
            "number",
            "null"
          ]
        },
        "formula": {
          "type": "string"
        },
        "note": {
          "type": "string"
        }
      },
      "required": [
        "value",
        "formula"
      ],
      "additionalProperties": false
    },
    "precision": {
      "$ref": "#/properties/recall"
    },
    "f1": {
      "$ref": "#/properties/recall"
    },
    "accuracy": {
      "$ref": "#/properties/recall"
    },
    "elusion_in_sample": {
      "$ref": "#/properties/recall"
    }
  },
  "required": [
    "recall",
    "precision",
    "f1",
    "accuracy",
    "elusion_in_sample"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calculate_elusion(relevant_found_in_sample, sample_size, confidence_level)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "relevant_found_in_sample": {
      "type": "integer",
      "minimum": 0
    },
    "sample_size": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "confidence_level": {
      "type": "number",
      "exclusiveMinimum": 0,
      "exclusiveMaximum": 1,
      "default": 0.95
    }
  },
  "required": [
    "relevant_found_in_sample",
    "sample_size"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "elusion_rate": {
      "type": "number"
    },
    "confidence_interval": {
      "type": "object",
      "properties": {
        "lower": {
          "type": "number"
        },
        "upper": {
          "type": "number"
        },
        "method": {
          "type": "string",
          "const": "wilson"
        }
      },
      "required": [
        "lower",
        "upper",
        "method"
      ],
      "additionalProperties": false
    },
    "formula": {
      "type": "string"
    },
    "assumptions": {
      "type": "object",
      "properties": {
        "relevant_found_in_sample": {
          "type": "number"
        },
        "sample_size": {
          "type": "number"
        },
        "confidence_level": {
          "type": "number"
        },
        "z_score": {
          "type": "number"
        }
      },
      "required": [
        "relevant_found_in_sample",
        "sample_size",
        "confidence_level",
        "z_score"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "elusion_rate",
    "confidence_interval",
    "formula",
    "assumptions"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calculate_sample_size(population_size, confidence_level, margin_of_error, estimated_prevalence)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "population_size": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "confidence_level": {
      "type": "number",
      "exclusiveMinimum": 0,
      "exclusiveMaximum": 1,
      "default": 0.95
    },
    "margin_of_error": {
      "type": "number",
      "exclusiveMinimum": 0,
      "exclusiveMaximum": 1
    },
    "estimated_prevalence": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "default": 0.5
    }
  },
  "required": [
    "population_size",
    "margin_of_error"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "recommended_sample_size": {
      "type": "integer",
      "minimum": 0
    },
    "raw_sample_size": {
      "type": "number",
      "minimum": 0
    },
    "assumptions": {
      "type": "object",
      "properties": {
        "population_size": {
          "type": "number"
        },
        "confidence_level": {
          "type": "number"
        },
        "margin_of_error": {
          "type": "number"
        },
        "estimated_prevalence": {
          "type": "number"
        },
        "z_score": {
          "type": "number"
        }
      },
      "required": [
        "population_size",
        "confidence_level",
        "margin_of_error",
        "estimated_prevalence",
        "z_score"
      ],
      "additionalProperties": false
    },
    "formula": {
      "type": "string"
    }
  },
  "required": [
    "recommended_sample_size",
    "raw_sample_size",
    "assumptions",
    "formula"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calculate_tar_recall_estimate(responsive_found, excluded_population_size, elusion_responsive_hits, elusion_sample_size, confidence_level)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "responsive_found": {
      "type": "integer",
      "minimum": 0
    },
    "excluded_population_size": {
      "type": "integer",
      "minimum": 0
    },
    "elusion_responsive_hits": {
      "type": "integer",
      "minimum": 0
    },
    "elusion_sample_size": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "confidence_level": {
      "type": "number",
      "exclusiveMinimum": 0,
      "exclusiveMaximum": 1,
      "default": 0.95
    }
  },
  "required": [
    "responsive_found",
    "excluded_population_size",
    "elusion_responsive_hits",
    "elusion_sample_size"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "responsiveFound": {
      "type": "integer",
      "minimum": 0
    },
    "excludedPopulationSize": {
      "type": "integer",
      "minimum": 0
    },
    "elusion": {
      "type": "object",
      "properties": {
        "sampleSize": {
          "type": "integer",
          "minimum": 0
        },
        "responsiveHits": {
          "type": "integer",
          "minimum": 0
        },
        "pointEstimate": {
          "type": [
            "number",
            "null"
          ]
        },
        "confidenceInterval": {
          "type": "object",
          "properties": {
            "lower": {
              "type": [
                "number",
                "null"
              ]
            },
            "upper": {
              "type": [
                "number",
                "null"
              ]
            },
            "method": {
              "type": "string",
              "const": "wilson"
            }
          },
          "required": [
            "lower",
            "upper",
            "method"
          ],
          "additionalProperties": false
        },
        "estimatedMissed": {
          "type": [
            "number",
            "null"
          ]
        },
        "estimatedMissedLower": {
          "type": [
            "number",
            "null"
          ]
        },
        "estimatedMissedUpper": {
          "type": [
            "number",
            "null"
          ]
        },
        "confidenceLevel": {
          "type": "number"
        }
      },
      "required": [
        "sampleSize",
        "responsiveHits",
        "pointEstimate",
        "confidenceInterval",
        "estimatedMissed",
        "estimatedMissedLower",
        "estimatedMissedUpper",
        "confidenceLevel"
      ],
      "additionalProperties": false
    },
    "estimatedRecall": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "estimate": {
              "type": "number"
            },
            "lower": {
              "type": "number"
            },
            "upper": {
              "type": "number"
            }
          },
          "required": [
            "estimate",
            "lower",
            "upper"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "formula": {
      "type": "string"
    },
    "assumptions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "responsiveFound",
    "excludedPopulationSize",
    "elusion",
    "estimatedRecall",
    "formula",
    "assumptions"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calculate_prevalence_richness(positive_hits, sample_size, population_size, confidence_level)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "positive_hits": {
      "type": "integer",
      "minimum": 0
    },
    "sample_size": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "population_size": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "confidence_level": {
      "type": "number",
      "exclusiveMinimum": 0,
      "exclusiveMaximum": 1,
      "default": 0.95
    }
  },
  "required": [
    "positive_hits",
    "sample_size"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "sampleSize": {
      "type": "integer",
      "minimum": 0
    },
    "positiveHits": {
      "type": "integer",
      "minimum": 0
    },
    "pointEstimate": {
      "type": "number"
    },
    "confidenceInterval": {
      "type": "object",
      "properties": {
        "lower": {
          "type": "number"
        },
        "upper": {
          "type": "number"
        },
        "method": {
          "type": "string",
          "const": "wilson"
        }
      },
      "required": [
        "lower",
        "upper",
        "method"
      ],
      "additionalProperties": false
    },
    "confidenceLevel": {
      "type": "number"
    },
    "estimatedPositiveCount": {
      "type": [
        "number",
        "null"
      ]
    },
    "estimatedPositiveLower": {
      "type": [
        "number",
        "null"
      ]
    },
    "estimatedPositiveUpper": {
      "type": [
        "number",
        "null"
      ]
    },
    "formula": {
      "type": "string"
    }
  },
  "required": [
    "sampleSize",
    "positiveHits",
    "pointEstimate",
    "confidenceInterval",
    "confidenceLevel",
    "estimatedPositiveCount",
    "estimatedPositiveLower",
    "estimatedPositiveUpper",
    "formula"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢calculate_control_set_recall(relevant_found, relevant_missed, confidence_level)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "relevant_found": {
      "type": "integer",
      "minimum": 0
    },
    "relevant_missed": {
      "type": "integer",
      "minimum": 0
    },
    "confidence_level": {
      "type": "number",
      "exclusiveMinimum": 0,
      "exclusiveMaximum": 1,
      "default": 0.95
    }
  },
  "required": [
    "relevant_found",
    "relevant_missed"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "relevantFound": {
      "type": "integer",
      "minimum": 0
    },
    "relevantMissed": {
      "type": "integer",
      "minimum": 0
    },
    "totalRelevant": {
      "type": "integer",
      "minimum": 0
    },
    "recall": {
      "type": [
        "number",
        "null"
      ]
    },
    "confidenceInterval": {
      "type": "object",
      "properties": {
        "lower": {
          "type": [
            "number",
            "null"
          ]
        },
        "upper": {
          "type": [
            "number",
            "null"
          ]
        },
        "method": {
          "type": "string",
          "const": "wilson"
        }
      },
      "required": [
        "lower",
        "upper",
        "method"
      ],
      "additionalProperties": false
    },
    "confidenceLevel": {
      "type": "number"
    },
    "formula": {
      "type": "string"
    }
  },
  "required": [
    "relevantFound",
    "relevantMissed",
    "totalRelevant",
    "recall",
    "confidenceInterval",
    "confidenceLevel",
    "formula"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢compare_tar_cutoffs(scored_document_count, cutoffs)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "scored_document_count": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "cutoffs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1
          },
          "cutoff": {
            "type": "number"
          },
          "document_count": {
            "type": "integer",
            "minimum": 0
          },
          "responsive_count": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "cutoff",
          "document_count"
        ],
        "additionalProperties": false
      },
      "minItems": 1
    }
  },
  "required": [
    "scored_document_count",
    "cutoffs"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "scoredDocumentCount": {
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "cutoffs": {
      "type": "array",
      "items": {
        "type": "object",
        "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"
            ]
          }
        },
        "required": [
          "label",
          "cutoff",
          "documentCount",
          "shareOfScored",
          "responsiveCount",
          "precisionEstimate"
        ],
        "additionalProperties": false
      }
    },
    "questions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "scoredDocumentCount",
    "cutoffs",
    "questions"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢validate_sample_design(population_size, sample_size, confidence_level, margin_of_error, sampling_frame, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "population_size": {
      "type": "integer"
    },
    "sample_size": {
      "type": "integer"
    },
    "confidence_level": {
      "type": "number",
      "exclusiveMinimum": 0,
      "exclusiveMaximum": 1,
      "default": 0.95
    },
    "margin_of_error": {
      "type": "number",
      "exclusiveMinimum": 0,
      "exclusiveMaximum": 1
    },
    "sampling_frame": {
      "type": "string",
      "minLength": 1
    },
    "sampling_method": {
      "type": "string",
      "minLength": 1
    },
    "random_seed": {
      "type": "string",
      "minLength": 1
    },
    "generated_at": {
      "type": "string",
      "minLength": 1
    },
    "excluded_population_size": {
      "type": "integer"
    }
  },
  "required": [
    "population_size",
    "sample_size"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "ready",
        "needs_attention",
        "blocked"
      ]
    },
    "issues": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "severity": {
            "type": "string",
            "enum": [
              "info",
              "warning",
              "critical"
            ]
          },
          "detail": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "severity",
          "detail"
        ],
        "additionalProperties": false
      }
    },
    "summary": {
      "type": "object",
      "properties": {
        "populationSize": {
          "type": "integer"
        },
        "sampleSize": {
          "type": "integer"
        },
        "samplingRate": {
          "type": [
            "number",
            "null"
          ]
        },
        "confidenceLevel": {
          "type": "number"
        },
        "marginOfError": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "required": [
        "populationSize",
        "sampleSize",
        "samplingRate",
        "confidenceLevel",
        "marginOfError"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "status",
    "issues",
    "summary"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded15 tools
verifiedversion not recorded15 tools