Koskamo

Workers' Rights MCP

A read-only MCP server providing AI agents with access to a 145,000+ court-ruling research corpus, public-source attorney directories, and federal/state employment law data. It supports tools for searching rulings, finding similar cases, checking employer/attorney track records, explaining rights, and accessing EEOC process guides.

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.

Workers' Rights MCP logo, by Workers' RightsVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Workers' Rights
MCP endpoint (Streamable HTTP)
https://www.workers-rights.com/api/mcp
Vendor documentation

What its tools do

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

9 of 9 have a description · 9 of 9 declare behavior hints · 8 of 8 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 workers-rights.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search published employment-law rulings by claim type, state, or industry
  • Find similar legal cases based on specific employment disputes
  • Retrieve employer track records from public court dockets
  • Explain worker rights under specific federal statutes like Title VII or ADA

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
workers-rights 1.0.0
MCP protocol negotiated in check
2025-06-18
Tools
9 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

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

Workers' Rights exposes read-only published employment-law research results plus public-source attorney lookup with available docket-linked case history and federal/state rights data. Use search_rulings and find_similar_cases to ground answers about employment discrimination, retaliation, and wrongful-termination outcomes in real case law. Always relay the attribution footer and treat results as educational, not legal advice.

Tools

9 advertised

search_rulings — Search employment-law rulings
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Search published employment-law rulings from our research corpus by keyword, law, court, federal circuit, state, outcome, and date. Returns published opinions with citations, outcomes, procedural stage, employers, claim types, recorded monetary amounts, and links to the full opinion. Use this to ground any claim about how employment cases have been decided. Results are quality-filtered (low-confidence and junk rows excluded).

search_rulings input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "law": {
      "type": "string",
      "maxLength": 40,
      "description": "Filter by a stored law association (not a verified holding), e.g. \"title-vii\", \"adea\", \"ada\", \"fmla\", \"flsa\"."
    },
    "court": {
      "type": "string",
      "maxLength": 40,
      "description": "Filter by CourtListener court id, e.g. \"scotus\", \"ca11\" (11th Circuit)."
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 25,
      "minimum": 1,
      "description": "Max rulings to return (1–25)."
    },
    "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Lexical search across case name, opinion excerpt, stored summary and employer. Every word must match; a match does not verify a claim or holding."
    },
    "state": {
      "type": "string",
      "maxLength": 2,
      "minLength": 2,
      "description": "Two-letter US state code the case was filed in, e.g. \"FL\", \"CA\"."
    },
    "circuit": {
      "type": "string",
      "maxLength": 40,
      "description": "Filter to a federal appeals circuit (the appeals court plus its district courts). Preferred values: first-circuit, second-circuit, third-circuit, fourth-circuit, fifth-circuit, sixth-circuit, seventh-circuit, eighth-circuit, ninth-circuit, tenth-circuit, eleventh-circuit, dc-circuit, federal-circuit. Display forms like \"Eleventh Circuit\" or \"11th\" are also accepted."
    },
    "date_to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Latest filing date (YYYY-MM-DD)."
    },
    "outcome": {
      "enum": [
        "plaintiff_win",
        "defendant_win",
        "settlement",
        "dismissed",
        "mixed",
        "remanded"
      ],
      "type": "string",
      "description": "Filter to a specific case outcome."
    },
    "date_from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Earliest filing date (YYYY-MM-DD)."
    }
  },
  "additionalProperties": false
}
search_rulings annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
find_similar_cases — Find how similar cases were decided
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Given the facts of an employment situation — claim types, protected class, employer, state — analyze how similar real cases in the corpus were decided. Returns the aggregate plaintiff (employee) win rate, settlement rate, typical damages range, the topics courts discussed most in opinions employees won vs. lost, and a few representative example cases. Counts are returned at three levels (nationwide, the federal courts of the state's region, and the state) with a detailed breakdown for one level: who won, award amounts, what happened at each stage, and topics. Relay which level a figure describes. A level with few opinions returns counts without a win rate. Each example says what happened and why it matched. Topic rows record what opinions discussed, not what courts found. Educational statistics from published opinions: never present a historical percentage as this person’s probability of winning. Not a prediction or legal advice. In structured stages: won and wonPct count opinions the worker won in whole or in part (wonPct leaves rulings sent back out of its base), and sentBack counts rulings sent back to a lower court. wentForward and wentForwardPct include rulings sent back to a lower court and are kept for compatibility.

find_similar_cases input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "level": {
      "enum": [
        "national",
        "circuit",
        "state"
      ],
      "type": "string",
      "default": "national",
      "description": "Which level the detailed breakdown and examples describe: \"national\" (default), \"circuit\" (federal courts of the state's region), or \"state\". All three levels' counts are returned either way."
    },
    "state": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Two-letter US state code the situation arose in, e.g. \"FL\", \"CA\"."
    },
    "law_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 80,
        "minLength": 1
      },
      "maxItems": 20,
      "description": "Related law ids, federal or state, e.g. [\"title-vii\",\"adea\",\"ada\",\"fmla\",\"flsa\",\"fl-fcra\",\"ca-feha\"]."
    },
    "industry": {
      "type": "string",
      "maxLength": 80,
      "minLength": 1,
      "description": "Employer industry, e.g. \"healthcare\", \"retail\", \"transportation\"."
    },
    "claim_types": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 80,
        "minLength": 1
      },
      "maxItems": 20,
      "description": "Claim types alleged, snake_case, e.g. [\"retaliation\",\"wrongful_termination\",\"discrimination\",\"harassment\"]. The single highest-value signal."
    },
    "employer_name": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1,
      "description": "Employer / defendant name, e.g. \"Union Pacific Railroad\". Used for a fuzzy match."
    },
    "narrow_to_laws": {
      "type": "boolean",
      "default": false,
      "description": "Only count opinions that mention one of law_ids (a federal law or its state analogue). Default false: every opinion sharing the claim type, under any law."
    },
    "protected_classes": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 80,
        "minLength": 1
      },
      "maxItems": 20,
      "description": "Protected classes at issue, e.g. [\"sex\",\"race\",\"age\",\"disability\",\"pregnancy\",\"national_origin\"]."
    }
  },
  "additionalProperties": false
}
find_similar_cases annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
get_employer_track_record — Get an employer's litigation track record
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Given an employer/company name, return distinct federal cases and trusted published employment opinions that involve that employer, the breakdown of outcomes (employee wins, employer wins, settlements, dismissals), the most notable recent opinions, AND the count of federal docket records on file (cases that may not have a written opinion). Use this when a user names their employer and wants that company's litigation history + footprint.

get_employer_track_record input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "employer"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 8,
      "maximum": 25,
      "minimum": 1,
      "description": "Number of example published opinions to return (1–25). The total count and outcome breakdown reflect the full corpus, not just these examples."
    },
    "employer": {
      "type": "string",
      "maxLength": 120,
      "minLength": 2,
      "description": "Employer/company name to look up, e.g. \"Walmart\", \"Acme Corporation\". Common suffixes like Inc/Corp/LLC are ignored when matching."
    }
  },
  "additionalProperties": false
}
get_employer_track_record annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
get_attorney_track_record — Get an employment attorney's case track record
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Given an employment attorney name (or profile slug), return the federal employment-law cases on file in which that attorney appeared — case caption, court, year, nature-of-suit, and the side they appeared for when on record. Use this when a user names an attorney and wants their public litigation history. Facts only, sourced from federal court dockets. Attorney identities are algorithmically matched; ambiguous and lower-confidence matches are excluded. One case is one normalized court+docket number, so duplicate source rows do not inflate the count.

get_attorney_track_record input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "attorney"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 25,
      "minimum": 1,
      "description": "Number of example cases to return (1–25). Counts reflect all cases on file, not just these."
    },
    "attorney": {
      "type": "string",
      "maxLength": 120,
      "minLength": 2,
      "description": "Employment attorney full name (e.g. \"Jane Doe\") or their workers-rights.com profile slug."
    }
  },
  "additionalProperties": false
}
get_attorney_track_record annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
explain_my_rights — Explain applicable employment-law rights
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Explain which federal (and state, if a state is given) employment laws may protect a worker based on the type of issue (e.g. discrimination, harassment, retaliation, wrongful termination) and/or the protected class involved (e.g. race, sex, age, disability, pregnancy). Returns the relevant statutes with citations, who they cover (employer-size thresholds), filing deadlines and agencies, and available remedies. Use this to ground an answer about a worker’s legal protections. Deadline guidance covers private-sector and state/local government workers; federal employees follow a separate process with a much shorter deadline (45 days to contact their agency's EEO counselor). Educational information, not legal advice.

explain_my_rights input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "issue": {
      "type": "string",
      "maxLength": 80,
      "description": "Type of workplace issue, e.g. \"discrimination\", \"harassment\", \"retaliation\", \"wrongful termination\", \"unpaid wages\", \"disability accommodation\"."
    },
    "state": {
      "type": "string",
      "maxLength": 40,
      "description": "US state (2-letter code or full name) to include state-specific protections and the correct EEOC filing deadline."
    },
    "employer_sector": {
      "enum": [
        "private",
        "government",
        "federal_government"
      ],
      "type": "string",
      "description": "Whether the employer is private, state/local government, or a federal agency."
    },
    "protected_class": {
      "type": "string",
      "maxLength": 60,
      "description": "Protected characteristic involved, e.g. \"race\", \"sex\", \"age\", \"disability\", \"religion\", \"national origin\", \"pregnancy\"."
    }
  },
  "additionalProperties": false
}
explain_my_rights annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
get_eeoc_process — Explain the EEOC charge process
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Plain-English guide to the 9 stages of an EEOC discrimination/retaliation charge, from pre-filing through resolution. Call with no arguments for an overview of all stages with typical durations; call with a stage number (1-9) for a deep-dive on that stage: what to expect, how long it takes, the key tip, and do/don't guidance. Use this whenever someone asks what happens after filing with the EEOC, how long the process takes, what a position statement or rebuttal is, or what to do at the stage they are currently in. Covers private-sector and state/local government workers; federal employees follow a separate EEO process with a much shorter deadline (45 days to contact their agency's EEO counselor).

get_eeoc_process input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "stage": {
      "type": "integer",
      "maximum": 9,
      "minimum": 1,
      "description": "Stage number 1-9 for a deep-dive on one stage. Omit for an overview of all nine stages."
    }
  },
  "additionalProperties": false
}
get_eeoc_process annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
get_evidence_preservation_checklist — Evidence preservation checklist (before losing access)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Concrete checklist for a worker who senses termination coming or is in a deteriorating work situation: what to write down, which records are already theirs to gather (pay records, documents they were given), and how to list everything else so an attorney can ask the employer to preserve it. It does not advise copying or forwarding material from an employer’s systems. Use this whenever someone says they think they are about to be fired, fears retaliation is escalating, mentions a PIP or sudden access changes, or asks what to do before reporting discrimination. Sections: 'today' (highest-leverage, minutes matter), 'this-week', 'quiet' (low-priority prep). Time-sensitive — employers often revoke system access during the termination call itself.

get_evidence_preservation_checklist input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "group": {
      "enum": [
        "today",
        "this-week",
        "quiet"
      ],
      "type": "string",
      "description": "Checklist section for a focused list: 'today' (highest-leverage, do first), 'this-week', or 'quiet' (lower-priority quiet prep). Omit for the full checklist."
    }
  },
  "additionalProperties": false
}
get_evidence_preservation_checklist annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
find_employment_attorney — Find an employment attorney
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Find public-source employment-law attorney listings near a US location. Returns source-attributed identity, firm, location, and contact data sorted by proximity. Person-specific filters and fields apply only where the underlying directory supports them; Google Places metrics are labeled as firm/office listing data, never individual ratings. Listings are not state-bar verification or an endorsement.

find_employment_attorney input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "lat": {
      "type": "number",
      "description": "Optional precise latitude. Overrides city/state when paired with lng."
    },
    "lng": {
      "type": "number",
      "description": "Optional precise longitude. Overrides city/state when paired with lat."
    },
    "city": {
      "type": "string",
      "maxLength": 60,
      "description": "Optional city to tighten the search center (e.g. \"Tampa\")."
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 25,
      "minimum": 1,
      "description": "Max attorneys to return (1–25)."
    },
    "state": {
      "type": "string",
      "maxLength": 40,
      "description": "US state — 2-letter code or full name (e.g. \"FL\" or \"Florida\"). Required unless lat/lng given."
    },
    "language": {
      "type": "string",
      "maxLength": 40,
      "description": "Filter on attorney-supplied language data. Most listings are public office records that do not publish it; when none in range do, the tool returns total 0 with unsupported_filters rather than silently implying no attorneys are nearby."
    },
    "min_rating": {
      "type": "number",
      "default": 0,
      "maximum": 5,
      "minimum": 0,
      "description": "Minimum individual-profile rating. Office/business ratings are never treated as an attorney rating, so this matches only hand-managed profiles and returns nothing where none exist."
    },
    "radius_miles": {
      "type": "integer",
      "default": 100,
      "maximum": 500,
      "minimum": 5,
      "description": "Search radius. Defaults to 100mi for broad statewide coverage."
    },
    "contingency_fee": {
      "type": "boolean",
      "description": "Filter on attorney-supplied fee data. Most listings are public office records that do not publish it; when none in range do, the tool returns total 0 with unsupported_filters rather than implying no attorneys are nearby."
    },
    "free_consultation": {
      "type": "boolean",
      "description": "Filter on attorney-supplied fee data. Most listings are public office records that do not publish it; when none in range do, the tool returns total 0 with unsupported_filters rather than implying no attorneys are nearby."
    }
  },
  "additionalProperties": false
}
find_employment_attorney annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
get_corpus_stats — Get corpus size and freshness
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Return live statistics about the Workers' Rights corpus: total number of collected court records in the research corpus, number of public attorney listings, number of monitored legal data sources, the date the corpus was last updated, and the distribution of reportable outcomes before the employment browse filter. Use this to establish scale/credibility or to answer 'how much data do you have / how current is it'.

get_corpus_stats input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {},
  "additionalProperties": false
}
get_corpus_stats annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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
512 ms
95th percentile latency
512 ms

Maintenance history

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

  • · probe · passed · 512 ms · metadata changed · 9 tool(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 workers-rights-mcp https://www.workers-rights.com/api/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 workers-rights-mcp --url https://www.workers-rights.com/api/mcp

Cursor

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

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start workers-rights-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "workers-rights-mcp": {
      "type": "http",
      "url": "https://www.workers-rights.com/api/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 workers-rights-mcp https://www.workers-rights.com/api/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://www.workers-rights.com/api/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": {
    "workers-rights-mcp": {
      "serverUrl": "https://www.workers-rights.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Workers' Rights 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 Workers' Rights 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