AI Legal Watch MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AI Legal Watch MCPPropose adding today's FTC AI enforcement action to the tracker."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AI Legal Watch MCP
MCP server for append-only maintenance of an AI legal developments tracker stored as CSV.
It validates candidate rows, checks for duplicates, preserves historical CSV formatting, and helps rank possible article candidates without directly browsing or judging legal authority.
What it does
Reads a tracker CSV and exposes filtered list/digest views
Dry-runs candidate additions before writing anything
Appends exactly one approved row when the tracker fingerprint still matches
Uses a lock to prevent duplicate concurrent appends
Suggests article candidates with transparent scoring
Related MCP server: cv-builder
What it does not do
It does not browse the web or verify the legal source for you
It does not rewrite existing tracker history
It does not silently merge or normalize old rows beyond tolerated legacy repairs
It does not require a content archive, though it can fail open when one is configured
Requirements
Node.js
20or newerA local MCP client that can launch a stdio server
Installation
cd tools/ai-legal-watch-mcp
npm install
npm test
npm run smokeMCP client setup
Example stdio configuration:
{
"mcpServers": {
"ai-legal-watch": {
"command": "node",
"args": ["/absolute/path/to/ai-legal-watch-mcp/server.mjs"],
"env": {
"AI_LEGAL_WATCH_WORKSPACE": "/absolute/path/to/workspace"
}
}
}
}The tracker defaults to ai-legal-watch-tracker.csv in the chosen workspace. Override it with AI_LEGAL_WATCH_TRACKER if needed.
If you want candidate suggestion to exclude already-covered rows using a local content archive, set AI_LEGAL_WATCH_ARCHIVE_ROOT or CLEARON_CONTENT_ARCHIVE_ROOT.
Safety model
propose_tracker_updatenever writesapply_tracker_updateappends only one encoded CSV row and requires the exact SHA-256 fingerprint returned by the proposalThe tracker lock, fingerprint check, and duplicate check are all repeated while the lock is held
Existing rows are not reserialized, preserving tolerated historical formatting quirks
New rows must use legal classifications, not publication workflow labels
Tools
list_watch_itemsfind_duplicate_developmentpropose_tracker_updateapply_tracker_updategenerate_watch_digestsuggest_article_candidates
Example workflow
Call
find_duplicate_developmentwith the topic, development date, and official source URL.Call
propose_tracker_updatewith the full candidate row.Verify the underlying primary source and legal classification outside this MCP.
Call
apply_tracker_updatewith the exacttracker_sha256and unchangedcandidate.If the fingerprint is stale, generate a fresh proposal instead of retrying an old payload.
Development
npm test
npm run smoke
npm run syntaxAvailable Tools
6 toolsapply_tracker_updateB
Append an approved proposal if the tracker fingerprint and proposal fingerprint still match and no duplicate exists.
| Name | Required | Description | Default |
|---|---|---|---|
| candidate | Yes | ||
| tracker_sha256 | Yes | ||
| proposal_sha256 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden and does convey the key conditional behavior: the append occurs only when the two fingerprints match and no duplicate exists. It does not disclose what happens on mismatch/duplicate (error vs no-op), return value, or side effects beyond append.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the action and quickly states the two guarding conditions. There is no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a required nested candidate object, zero annotations, and no output schema, the description is too minimal to fully support a correct call. It explains neither candidate semantics nor expected outcomes for failed checks, and does not place the tool in the propose/apply workflow beyond 'approved'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only loosely maps tracker_sha256 and proposal_sha256 to 'tracker fingerprint' and 'proposal fingerprint'. The candidate object, which is complex and required, receives no explanation of its fields or how it relates to an approved proposal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific conditional operation: appending an approved proposal, guarded by fingerprint matching and duplicate checking. The phrase 'approved proposal' hints at distinction from propose_tracker_update, though it does not name the sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies this tool is for applying already-approved proposals, and the stated match/no-duplicate conditions describe when the append can happen. However, it never tells an agent when to choose this over propose_tracker_update or the other siblings, leaving the selection largely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_duplicate_developmentB
Check for blocking duplicates and related-source warnings before proposing an update.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| item_date | Yes | ||
| source_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a checking action, but does not say whether the tool is read-only, what it returns, how blocking is signaled, or what side effects (if any) occur. This is a significant transparency gap for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler words. It is concise and readable, but it is somewhat under-specified for a tool with three undocumented required parameters and no output schema, so it is not perfectly 'appropriately sized'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations, output schema, and parameter descriptions, the definition is too thin for reliable invocation. It gives a purpose and timing but leaves critical unknowns: what constitutes a 'blocking' duplicate, what warnings look like, what the function returns, and how the parameters should be supplied and interpreted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not mention any of the three required parameters (topic, item_date, source_url). An agent cannot determine expected formats, how each parameter contributes to duplicate detection, or why all three are required. The description adds no parameter-level meaning beyond the bare schema names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Check for blocking duplicates and related-source warnings') and frames it as a pre-update step, which distinguishes it from siblings like propose_tracker_update and apply_tracker_update. It is not a tautology and adds meaningful specificity, though terms like 'blocking' and 'related-source warnings' are not fully defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear contextual placement: use this before proposing an update. This implies the tool is a prerequisite check for propose_tracker_update. However, it does not explicitly state when not to use it or name alternatives, so it falls short of fully explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_watch_digestC
Summarize tracker entries checked or dated since a YYYY-MM-DD date.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| since | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It adds one useful nuance — entries are included if 'checked or dated' since the date — but does not disclose whether the call has side effects (read-only vs generating/storing output), the output shape, or how the summary is computed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; every word contributes. It is appropriately sized for a two-parameter tool, though slightly under-specified rather than merely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description omits critical context: whether this is a safe read operation, what the returned digest looks like, and how it relates to list_watch_items. For a tool with two optional params and five siblings, these gaps are material.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain both parameters. It clarifies 'since' as a YYYY-MM-DD date filter, but 'limit' is never mentioned and remains semantically undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Summarize') and resource ('tracker entries') with a clear date-scoped filter ('since a YYYY-MM-DD date'). It is distinguishable from siblings whose verbs differ (list, find, suggest, propose, apply), though 'summarize' leaves unspecified what the digest actually contains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to choose this tool over list_watch_items or other siblings. The date filter weakly implies a use case (recent summaries), but no alternatives, exclusions, or contextual triggers are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_watch_itemsB
List tracker items with optional filters.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| topic | No | ||
| source | No | ||
| status | No | Exact clearon_status value. Historical tracker rows may use workflow labels as well as legal classifications. | |
| priority | No | ||
| next_action | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It only says 'List ... with optional filters', which implies a read operation but does not explain filter matching semantics (exact vs partial, AND vs OR), default limit, ordering, pagination, or what fields are returned for each item.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or repetition. It communicates the core operation ('List tracker items') and the key qualifier ('optional filters') efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given six optional parameters, no output schema, and no annotations, this one-line description is insufficient for confident invocation. It does not describe return shape, how filters combine, or any defaults, so an agent would need to infer or probe behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17%, with only `status` having a description. The description's phrase 'optional filters' adds minimal meaning beyond the schema's required-fields list, and does not explain `limit`, `topic`, `source`, `priority`, or `next_action` semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a clear resource ('tracker items'), immediately distinguishing it from sibling tools that generate, propose, or apply updates. It also signals that filtering is available, giving a concise statement of the tool's core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus siblings like generate_watch_digest, propose_tracker_update, or suggest_article_candidates. The only usage signal is the verb 'List', which is implied by the name, so the agent gets little help selecting among related options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_tracker_updateB
Validate and dry-run an append-only tracker update without changing the CSV.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | Yes | ||
| topic | Yes | ||
| source | Yes | ||
| priority | Yes | ||
| item_date | Yes | ||
| source_url | Yes | ||
| next_action | Yes | ||
| checked_at_et | Yes | ||
| clearon_status | Yes | Choose the most advanced applicable procedural classification. Definitions: allegation: A reported or asserted claim that has not been adjudicated and is not better classified by a filed complaint. investigation: An announced inquiry or compulsory information-gathering process without a filed enforcement complaint. complaint filed: A civil, administrative, or enforcement complaint has been filed; allegations remain unproven. preliminary ruling: A non-final judicial ruling, including a preliminary injunction or interlocutory order. final holding: A final merits holding by the deciding court, subject to any stated appeal posture. appeal pending: An appeal has been filed or officially docketed and remains unresolved. proposed legislation: A legislative proposal has been announced or published but has not been formally introduced as a pending bill. pending bill: A bill has been formally introduced and has not been enacted or finally rejected. enacted law: Legislation has completed enactment; note effective dates separately. proposed regulation: A proposed rule or formal rulemaking text is open or pending and is not yet final. final regulation: A regulation has been finally adopted; note publication and effective dates separately. guidance: Official nonbinding or interpretive agency guidance. court rule: A formally adopted rule governing court procedure or practice. professional responsibility: A formal ethics or professional-responsibility development not better classified as a court rule. enforcement order: A final agency or court enforcement order, excluding a negotiated settlement. settlement: A consent order, settlement, or negotiated resolution without a litigated final holding. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the most important behavioral trait — that the CSV is not modified — and the append-only data model constraint. However, it does not disclose what happens on validation failure, whether any side effects occur at all, or what the tool returns, which are material for a validation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with the critical non-mutation fact front-loaded. Every word earns its place, though 'validate' and 'dry-run' slightly overlap in meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter validation tool with no output schema and no annotations, the description is too thin. An agent calling this correctly needs to know expected formats (timestamps, dates), what validation failure looks like, the shape of the returned proposal, and whether anything else is persisted. Only the no-CSV-change guarantee is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11%, and the tool description adds nothing about the 9 required parameters. Only clearon_status has in-schema definitions; the other 8 parameters (checked_at_et, item_date, source_url, etc.) have bare types with no format, syntax, or example guidance. With coverage this low, the description was obligated to compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('validate and dry-run'), a specific resource ('append-only tracker update'), and the key constraint ('without changing the CSV'). It is clearly distinguishable from the sibling apply_tracker_update, which would be the tool that actually writes the change.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The dry-run framing implies this tool is the pre-flight check before apply_tracker_update, but the description never states that explicitly, never names the alternative, and gives no when-to-use vs when-not-to-use guidance. Usage is only implied by the 'dry-run' wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_article_candidatesC
Rank tracker entries as possible Clearon article candidates using transparent heuristics.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| include_published | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It mentions 'transparent heuristics' but does not explain what behavior this implies, whether the operation is read-only, what ranking criteria are used, or how results are ordered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence with no filler. It front-loads the core action and purpose, though brevity comes at the cost of parameter and usage detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and no parameter documentation, the description is too thin. An agent cannot confidently determine output behavior, parameter semantics, or how this tool differs from closely related proposal tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning for 'limit' or 'include_published'. The parameter names are somewhat self-explanatory, but the description does not clarify defaults, allowed ranges, or what 'include_published' actually includes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Rank') with a clear resource ('tracker entries') and outcome ('possible Clearon article candidates'). It is understandable and distinguishable from most siblings, though it doesn't explicitly contrast it with propose_tracker_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as propose_tracker_update or list_watch_items. The phrase 'using transparent heuristics' hints at intent but does not explain when an agent should choose this over sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
apply_tracker_update - First observed
find_duplicate_development - First observed
generate_watch_digest - First observed
list_watch_items - First observed
propose_tracker_update - First observed
suggest_article_candidates
TDQS
Each tool addresses a distinct stage of the workflow: listing, duplicate-checking, digest generation, candidate ranking, proposal dry-run, and final append. There is no meaningful overlap or likely misselection between tools.
All tool names use snake_case and an action-first style, which is consistent and predictable. The only minor deviation is that 'find_duplicate_development' is less immediately readable and its noun phrase is somewhat awkward, but it still follows the same pattern.
Six tools is a well-scoped size for this domain. The set covers the full workflow without redundant utilities or unnecessary complexity.
The tools cover reading, analyzing, summarizing, ranking, proposing, and applying updates. The append-only nature is intentional and enforced, so the absence of update or delete tools is not a gap.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Append-only decisions with provenance, supersession, retrieval, and audited MCP actions.
Resolve, search and verify legal citations against the official sources, with provenance.
- kanonikOAuthai.kanonik
Governance runtime for compliance: verified, human-approved writes to a tamper-evident record.
Read-only game, setup, place, evidence and travel decision tools with explicit provenance.
Related MCP Servers
- AlicenseBqualityAmaintenanceLocal-first MCP server that transforms civil case PDFs into queryable cases with structural provenance, evidence IDs, and page-level verification for drafting and factual review.22Apache 2.0
- FlicenseNot gradedqualityBmaintenanceProvides MCP tools for managing a CV as structured content, including a SQLite-backed snippet library with tools to list, create, update, and match job postings, compose role-tailored CV variants, and manage drafts.-
- AlicenseNot gradedqualityBmaintenanceA local-first LinkedIn workspace that turns your own documents, CVs, repositories, and exports into a verifiable claim ledger and evidence-backed canonical profile, enabling evidence import, claim verification, profile patching, post drafting, content planning, analytics, and publication approvals through MCP tools — all stored locally in SQLite with an optional human-review dashboard.15MIT
- AlicenseBqualityCmaintenanceEnables users to maintain append-only content history with verified publication and social follow-through outcomes, search for overlaps, and run read-only integrity verification of stored snapshots.16MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kwgoodwin/ai-legal-watch-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server