The Chancery Lane Project
Server Details
A connector providing AI assistants searchable access to climate-aligned contract clauses, glossary terms, and practical guides from The Chancery Lane Project's curated knowledge graph.
- Status
- Healthy
- Uptime
- 100.0% over 56 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
Most tools are clearly distinct: search (semantic), entity_lookup (deterministic name match), taxonomy_content (facet filtering), taxonomy_facets (facet listing), find_legal_resources (legal instrument search), and get_legal_resource (single instrument detail). The main overlap is between find_legal_resources and taxonomy_content(scope="legal_resource"), both of which retrieve legal resources via different filtering mechanisms, and entity_lookup vs search, both of which retrieve TCLP content. Descriptions explicitly distinguish these cases, so ambiguity is limited.
Names mix several conventions: entity_lookup is noun_verb, find_legal_resources and get_legal_resource are verb_noun, search is a bare verb, and taxonomy_content/taxonomy_facets are noun_noun groupings. The retrieval verbs (lookup, find, get, search) are semantically related but not formally consistent. It remains readable and inferable, but the pattern is not predictable.
Six tools is well-scoped for a read-only knowledge graph that covers TCLP content discovery and cited legal instruments. Each tool has a distinct retrieval role—free-text search, exact entity lookup, facet discovery, facet filtering, legal resource search, and legal resource detail. No tool feels redundant or excessive.
The surface covers search, exact lookup, taxonomy exploration, and legal-resource retrieval with clear cross-references. A notable gap is the absence of a dedicated get-by-id tool for TCLP content nodes (clauses, guides, glossary terms); users must rely on search or taxonomy_content with full text enabled. Minor gaps aside, core discovery workflows are well supported.
Available Tools
6 toolsentity_lookupRead-onlyInspect
Find TCLP content (clauses, glossary terms, guides) associated with a named concept.
Unlike `search`, this performs a deterministic name match against Entity nodes in
the knowledge graph rather than a relevance-ranked semantic search. Use it when
you have a specific term or concept (e.g. "scope 3 emissions", "net zero") and
want to retrieve every clause or glossary entry that explicitly references it.
Args:
name: The entity or concept name to look up (exact match, case-insensitive).
limit: Maximum number of results to return (1–50).
include_full_text: Include each hit's full body text (Markdown). Off by
default — bodies are large; request only when you need the content,
and prefer a small `limit` when you do.
Returns:
JSON with "meta" and "results" where each hit includes the source content
node and the entity names that matched.
Each hit's "references" lists the instruments it cites: pass a
reference's `work_id` to `get_legal_resource` for details. A reference's
`edge` (governs, references, describes) says how the content relates to
the instrument; it is not a statement of the instrument's legal effect.
An empty list means the hit cites no instruments. null with "lrsf" in
meta.degraded means references could not be loaded: do not conclude
that the hit cites no instruments.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| limit | No | ||
| include_full_text | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | Yes | |
| results | Yes |
find_legal_resourcesARead-onlyInspect
Find the laws, regulations, standards, frameworks and guidance that TCLP content refers to.
This is not a general legal database: it holds only the instruments that TCLP
clauses, guides and glossary terms cite.
Status "stub": identity confirmed, metadata minimal; a null or empty field means
not yet recorded, not that it does not apply.
On a stub, `nature` may be an unreviewed inference, and is often null. Do not
fill in missing fields from your own knowledge, and do not state an
instrument's legal effect.
A filter on nature, sector or bindingness excludes works where that field is
not recorded. Most works do not record these yet, so an empty result does not
mean that TCLP content cites no such instrument; prefer `query` or
`jurisdiction`.
Args:
query: Case-insensitive substring match on name and aliases (e.g. "CSRD"),
at most 200 characters. An exact name or alias match ranks first.
nature: Any of "legislation", "regulation", "standard", "framework", "guidance".
jurisdiction: Jurisdiction slugs, matched exactly: lower-case letters,
digits and hyphens (e.g. "european-union"). Get valid values from
`taxonomy_facets(scope="legal_resource")`.
sector: Sector slugs, matched exactly: lower-case letters, digits and
hyphens. Get valid values from `taxonomy_facets(scope="legal_resource")`.
bindingness: Any of "binding", "comply_or_explain", "voluntary", "depends".
Each list filter takes at most 20 values.
limit: Maximum results (1–100, default 20).
offset: Result offset for paging (0–10000, default 0).
Returns:
JSON with "meta" (total_available, limit, offset) and "results" (one entry
per instrument, with `work_id` for `get_legal_resource` and `citing_count`).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| nature | No | ||
| offset | No | ||
| sector | No | ||
| bindingness | No | ||
| jurisdiction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | Yes | |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint/openWorldHint/destructiveHint=false; the description goes far beyond by explaining stub records, that null/empty means 'not yet recorded' rather than 'not applicable', that `nature` on a stub may be unreviewed inference, and that filters silently exclude works with unrecorded fields. It also instructs the agent not to fabricate missing fields or assert legal effect.
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?
Front-loads scope, then caveats, then args, then returns – a clean progression with no filler. Minor redundancy: the query length cap and the nature/bindingness enums restate constraints already present in the schema, and the Returns section is somewhat unnecessary given an output schema exists.
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 7-parameter, zero-required, open-world search tool, everything an agent needs is present: scope limits, record-maturity semantics, filter pitfalls with a workaround, valid-value sources, and pagination/return shape. Nothing material is left to inference.
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?
With 0% schema description coverage, the description carries the full burden and does so: query is a case-insensitive substring on name and aliases with exact-match ranking and a 200-char cap, jurisdiction/sector are exact-match slugs with a source for valid values, bindingness enumerates its four values, and limit/offset ranges are stated.
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 verb (find) and resource (laws, regulations, standards, frameworks, guidance cited by TCLP content), and explicitly scopes it against the obvious misinterpretation ("not a general legal database"). It also points at the sibling get_legal_resource via work_id, so an agent can distinguish it without inspecting schemas.
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?
Gives explicit when-to-use guidance and alternatives: use taxonomy_facets to obtain valid jurisdiction/sector slugs, prefer `query` or `jurisdiction` when a field-based filter returns empty, and use get_legal_resource for a full record. It even warns that an empty filtered result is not evidence of absence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_legal_resourceARead-onlyInspect
Get one law, regulation, standard, framework or guidance, and the TCLP content citing it.
Versions are not tracked yet, so every citation has `staleness: "unpinned"`:
the content cites the instrument without naming a version. There is no
description yet; do not supply one from your own knowledge, and do not state
the instrument's legal effect.
Args:
work_id: The instrument's `work_id`, from `find_legal_resources` or from a
search result's "references".
citing_limit: Maximum citing content items to return (1–100, default 20).
Returns:
JSON with "resource", "citing" (each with id, title, url, content_type,
edge, staleness) and "citing_total". `edge` (governs, references,
describes) says how the content relates to the instrument; it is not a
statement of the instrument's legal effect.
| Name | Required | Description | Default |
|---|---|---|---|
| work_id | Yes | ||
| citing_limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | Yes | |
| citing | Yes | |
| resource | Yes | |
| citing_total | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover only the safety profile (readOnly, non-destructive, openWorld), yet the description adds substantial behavioral context: versions are untracked so every citation carries staleness 'unpinned', there is no description field and the agent must not fabricate one, and the agent must not assert legal effect. It also explains the 'edge' relation semantics, which is exactly the kind of context annotations cannot supply.
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?
Front-loaded with purpose, then caveats, then explicit Args and Returns sections. Despite its length, every sentence conveys a distinct constraint (staleness, no-fabrication rule, no-legal-effect rule, edge semantics) rather than padding.
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?
Although an output schema exists and returns need not be described, the description still enumerates the return keys (resource, citing, citing_total, edge, staleness) and flags the staleness caveat an agent would otherwise misread. For a read-only lookup with two parameters, nothing material is missing.
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 carries the burden and does so well: it explains that work_id is the instrument's identifier sourced from find_legal_resources or a search result's references, and that citing_limit caps citing items (1–100, default 20). It does not restate the maxLength constraint, but the semantics added are meaningful.
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 verb and resource: 'Get one law, regulation, standard, framework or guidance, and the TCLP content citing it.' It also clarifies the secondary payload (citing content), which cleanly distinguishes it from the plural sibling find_legal_resources.
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?
It routes the agent by stating where work_id comes from — 'from find_legal_resources or from a search result's "references"' — which implicitly tells the agent this is a follow-up lookup rather than a search entry point. It stops short of an explicit when-not statement, so it is clear context without full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchRead-onlyInspect
Search the TCLP knowledge graph using fusion search (semantic + BM25).
Args:
query: Free-text search query (max 1000 characters).
node_type: Content scope — "tclp" (clauses, glossary terms, guides) or "all".
Laws, regulations, standards and frameworks are not searchable here:
use `find_legal_resources`.
limit: Maximum number of results to return (1–50).
rerank: Whether to apply RRF reranking when combining graph and text results.
include_full_text: Include each hit's full body text (Markdown). Off by
default — bodies are large; request only when you need the content,
and prefer a small `limit` when you do.
Returns:
JSON with "meta" (totals, timing) and "results" (ranked hits with title,
url, content_type, scores, optionally relationships_text, related and
full_text).
Each hit's "references" lists the instruments it cites: pass a
reference's `work_id` to `get_legal_resource` for details. A reference's
`edge` (governs, references, describes) says how the content relates to
the instrument; it is not a statement of the instrument's legal effect.
An empty list means the hit cites no instruments. null with "lrsf" in
meta.degraded means references could not be loaded: do not conclude
that the hit cites no instruments.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| rerank | No | ||
| node_type | No | all | |
| include_full_text | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | Yes | |
| results | Yes |
taxonomy_contentARead-onlyInspect
List TCLP content (clauses, guides) or legal resources filtered by taxonomy facet=value.
Multi-facet filters are combined with AND. Call `taxonomy_facets` first
to learn which facet names and slugs exist; using a name not in that
list returns a 400.
Args:
filters: Mapping of facet name to value slug, e.g.
`{"sector": "real-estate", "practice_area": "commercial"}`.
Each facet may appear at most once.
scope: `clause` (ClauseName only), `guide` (Guide only), `legal_resource`
(laws, regulations, standards and frameworks; facets `jurisdiction`
and `sector` only), or `all` (clauses and guides, the default).
limit: Maximum results to return (1–100, default 25).
offset: Result offset for paging (default 0).
sort: `title`, `date_published_desc`, or `date_modified_desc`.
Returns:
JSON with "meta" (totals, scope, filters echoed back) and "results"
(each hit has `id`, `url`, `title`, `content_type`, dates, and a
`facets` map of all taxonomy arrays on the node). `content_type` is
`clause`, `guide` or `legal_resource`, the same values that `search`
returns.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | title | |
| limit | No | ||
| scope | No | all | |
| offset | No | ||
| filters | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | Yes | |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, but the description adds genuinely useful behavior: multi-facet filters combine with AND, each facet may appear at most once, and invalid facet names yield a 400. Those error and composition semantics are not derivable from the annotations or schema.
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?
Front-loaded one-line summary, then clearly labeled Args and Returns blocks; every sentence is informative. The Returns block is partly redundant with the existing output schema, though the content_type cross-reference to `search` adds value, so a small deduction.
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 5-parameter, nested-object, enum-heavy tool, the description covers the prerequisite call, filter syntax and constraints, scope semantics, paging/sorting, and result shape. An agent has everything needed to invoke it correctly on the first try.
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 carries the full burden and does: `filters` is a facet-name→slug map with a worked example and a cardinality rule, `scope` explains all four enum values including the legal_resource restriction, and `limit`/`offset`/`sort` get ranges, defaults and allowed values.
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 verb (List) and resource (TCLP content / legal resources) plus the filtering mechanism (taxonomy facet=value), and enumerates the scope variants. It cross-references the sibling `search` and `taxonomy_facets`, but never explicitly says why an agent should pick this over `search` or `find_legal_resources`, which overlap on content_type and legal_resource respectively.
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?
Gives a concrete prerequisite ('Call `taxonomy_facets` first') and the failure condition (unknown facet name returns 400), plus per-scope guidance such as legal_resource accepting only `jurisdiction` and `sector`. It stops short of stating when to prefer this tool over the sibling search/find_legal_resources tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxonomy_facetsARead-onlyInspect
List taxonomy facets and their value slugs across TCLP content.
Facets are taxonomy categories like `sector`, `practice_area`,
`application`, and `jurisdiction`. Each facet returns the list of slugs
that actually appear on the graph, with counts. Use this to discover
the vocabulary, then call `taxonomy_content` with chosen slugs.
Args:
scope: Which labels to include — `clause` (ClauseName only), `guide`
(Guide only), `legal_resource` (laws, regulations, standards and
frameworks; facets `jurisdiction` and `sector` only), or `all`
(clauses and guides, the default).
Returns:
JSON with "meta" and "facets". Each facet has `name`, `applies_to`
(list of Neo4j labels carrying it), and `values` (list of
`{slug, count}`, sorted by count desc).
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | Yes | |
| facets | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, openWorld), so the bar is lower. The description adds genuinely useful behavior: facets are filtered by graph labels, counts reflect slugs that 'actually appear on the graph', and legal_resource scope is restricted to jurisdiction/sector facets only.
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?
Front-loaded with purpose then Args/Returns, with little waste. The Returns section partly restates what the output schema would provide, but it also clarifies that values are count-sorted, so it mostly earns its place.
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 single-parameter discovery tool with an output schema and annotations, the description covers purpose, workflow routing, scope semantics, and return shape. Nothing an agent needs to invoke it correctly is missing.
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% (only an enum with no descriptions), so the description must carry semantics. It defines all four scope values, including the non-obvious restriction that legal_resource yields only jurisdiction and sector facets, and gives the default.
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 verb and resource ('List taxonomy facets and their value slugs') with the scope of content it covers ('across TCLP content'). It also names the sibling it feeds into ('then call taxonomy_content'), so an agent can distinguish it from related taxonomy tools.
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?
Explicitly prescribes the workflow: use this to discover the vocabulary, then call taxonomy_content with chosen slugs. That is a clear when-to-use statement plus a named alternative, leaving nothing to inference.
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.
6 tool updates
- Changed
entity_lookup6 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / name / maxLengthAdded value: +1000 - added
Input schema / properties / name / minLengthAdded value: +1 - removed
Output schema / $defs / _EntityHit / properties / relationshipsRemoved value: -{ - "anyOf": [ - { - "items": { - "$ref": "#/$defs/_Relationship" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "title": "Relationships" -} - removed
Output schema / $defs / _RelationshipRemoved value: -{ - "properties": { - "path_types": { - "items": { - "type": "string" - }, - "title": "Path Types", - "type": "array" - }, - "target_id": { - "title": "Target Id", - "type": "string" - }, - "target_label": { - "title": "Target Label", - "type": "string" - }, - "target_name": { - "title": "Target Name", - "type": "string" - }, - "target_url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Target Url" - } - }, - "required": [ - "path_types", - "target_id", - "target_label", - "target_name", - "target_url" - ], - "title": "_Relationship", - "type": "object" -}
- Changed
find_legal_resources9 fields changed- changed
Input schema / properties / bindingness / anyOfPrevious value: -[ - { - "items": { - "enum": [ - "binding", - "comply_or_explain", - "voluntary", - "depends" - ], - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "enum": [ + "binding", + "comply_or_explain", + "voluntary", + "depends" + ], + "type": "string" + }, + "maxItems": 20, + "type": "array" + }, + { + "type": "null" + } +] - changed
Input schema / properties / jurisdiction / anyOfPrevious value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "maxLength": 64, + "pattern": "^[a-z0-9-]+$", + "type": "string" + }, + "maxItems": 20, + "type": "array" + }, + { + "type": "null" + } +] - added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - changed
Input schema / properties / nature / anyOfPrevious value: -[ - { - "items": { - "enum": [ - "legislation", - "regulation", - "standard", - "framework", - "guidance" - ], - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "enum": [ + "legislation", + "regulation", + "standard", + "framework", + "guidance" + ], + "type": "string" + }, + "maxItems": 20, + "type": "array" + }, + { + "type": "null" + } +] - added
Input schema / properties / offset / maximumAdded value: +10000 - added
Input schema / properties / offset / minimumAdded value: +0 - changed
Input schema / properties / query / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / sector / anyOfPrevious value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "maxLength": 64, + "pattern": "^[a-z0-9-]+$", + "type": "string" + }, + "maxItems": 20, + "type": "array" + }, + { + "type": "null" + } +]
- Changed
get_legal_resource4 fields changed- added
Input schema / properties / citing_limit / maximumAdded value: +100 - added
Input schema / properties / citing_limit / minimumAdded value: +1 - added
Input schema / properties / work_id / maxLengthAdded value: +500 - added
Input schema / properties / work_id / minLengthAdded value: +1
- Changed
search4 fields changed- added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / query / maxLengthAdded value: +1000 - added
Input schema / properties / query / minLengthAdded value: +1
- Changed
taxonomy_content5 fields changed- added
Input schema / properties / limit / maximumAdded value: +100 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / offset / minimumAdded value: +0 - added
Input schema / properties / scope / enumAdded value: +[ + "clause", + "guide", + "legal_resource", + "all" +] - added
Input schema / properties / sort / enumAdded value: +[ + "title", + "date_published_desc", + "date_modified_desc" +]
- Changed
taxonomy_facets1 field changed- added
Input schema / properties / scope / enumAdded value: +[ + "clause", + "guide", + "legal_resource", + "all" +]
4 tool updates
- Changed
entity_lookup2 fields changed- added
Output schema / $defs / _EntityHit / properties / referencesAdded value: +{ + "anyOf": [ + { + "items": { + "$ref": "#/$defs/_Reference" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "References" +} - added
Output schema / $defs / _ReferenceAdded value: +{ + "properties": { + "edge": { + "title": "Edge", + "type": "string" + }, + "jurisdiction": { + "items": { + "type": "string" + }, + "title": "Jurisdiction", + "type": "array" + }, + "name": { + "title": "Name", + "type": "string" + }, + "nature": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Nature" + }, + "staleness": { + "title": "Staleness", + "type": "string" + }, + "status": { + "title": "Status", + "type": "string" + }, + "work_id": { + "title": "Work Id", + "type": "string" + } + }, + "required": [ + "edge", + "work_id", + "name", + "nature", + "jurisdiction", + "status", + "staleness" + ], + "title": "_Reference", + "type": "object" +}
- Added
find_legal_resources - Added
get_legal_resource - Changed
search5 fields changed- added
Input schema / properties / node_type / enumAdded value: +[ + "tclp", + "all" +] - added
Output schema / $defs / _ReferenceAdded value: +{ + "properties": { + "edge": { + "title": "Edge", + "type": "string" + }, + "jurisdiction": { + "items": { + "type": "string" + }, + "title": "Jurisdiction", + "type": "array" + }, + "name": { + "title": "Name", + "type": "string" + }, + "nature": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Nature" + }, + "staleness": { + "title": "Staleness", + "type": "string" + }, + "status": { + "title": "Status", + "type": "string" + }, + "work_id": { + "title": "Work Id", + "type": "string" + } + }, + "required": [ + "edge", + "work_id", + "name", + "nature", + "jurisdiction", + "status", + "staleness" + ], + "title": "_Reference", + "type": "object" +} - added
Output schema / $defs / _RelatedAdded value: +{ + "properties": { + "id": { + "title": "Id", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Url" + } + }, + "required": [ + "id", + "name", + "url" + ], + "title": "_Related", + "type": "object" +} - added
Output schema / $defs / _SearchHit / properties / referencesAdded value: +{ + "anyOf": [ + { + "items": { + "$ref": "#/$defs/_Reference" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "References" +} - added
Output schema / $defs / _SearchHit / properties / relatedAdded value: +{ + "items": { + "$ref": "#/$defs/_Related" + }, + "title": "Related", + "type": "array" +}
4 tool updates
- Changed
entity_lookup1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "_EntityHit": { + "properties": { + "content_type": { + "title": "Content Type", + "type": "string" + }, + "entity_matches": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Entity Matches" + }, + "full_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Full Text" + }, + "id": { + "title": "Id", + "type": "string" + }, + "ranks": { + "$ref": "#/$defs/_SearchRanks" + }, + "relationships": { + "anyOf": [ + { + "items": { + "$ref": "#/$defs/_Relationship" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Relationships" + }, + "scores": { + "$ref": "#/$defs/_SearchScores" + }, + "title": { + "title": "Title", + "type": "string" + }, + "url": { + "title": "Url", + "type": "string" + } + }, + "title": "_EntityHit", + "type": "object" + }, + "_Relationship": { + "properties": { + "path_types": { + "items": { + "type": "string" + }, + "title": "Path Types", + "type": "array" + }, + "target_id": { + "title": "Target Id", + "type": "string" + }, + "target_label": { + "title": "Target Label", + "type": "string" + }, + "target_name": { + "title": "Target Name", + "type": "string" + }, + "target_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Target Url" + } + }, + "required": [ + "path_types", + "target_id", + "target_label", + "target_name", + "target_url" + ], + "title": "_Relationship", + "type": "object" + }, + "_SearchMeta": { + "properties": { + "degraded": { + "items": { + "type": "string" + }, + "title": "Degraded", + "type": "array" + }, + "graph_total": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Graph Total" + }, + "request_id": { + "title": "Request Id", + "type": "string" + }, + "text_total": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Text Total" + }, + "took_ms": { + "title": "Took Ms", + "type": "integer" + }, + "total_available": { + "title": "Total Available", + "type": "integer" + } + }, + "title": "_SearchMeta", + "type": "object" + }, + "_SearchRanks": { + "properties": { + "bm25": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Bm25" + }, + "combined": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Combined" + }, + "graph": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Graph" + } + }, + "title": "_SearchRanks", + "type": "object" + }, + "_SearchScores": { + "properties": { + "bm25": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Bm25" + }, + "graph": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Graph" + } + }, + "title": "_SearchScores", + "type": "object" + } + }, + "properties": { + "meta": { + "$ref": "#/$defs/_SearchMeta" + }, + "results": { + "items": { + "$ref": "#/$defs/_EntityHit" + }, + "title": "Results", + "type": "array" + } + }, + "required": [ + "meta", + "results" + ], + "title": "EntityLookupResult", + "type": "object" +}
- Changed
search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "_SearchHit": { + "properties": { + "content_type": { + "title": "Content Type", + "type": "string" + }, + "entity_matches": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Entity Matches" + }, + "full_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Full Text" + }, + "id": { + "title": "Id", + "type": "string" + }, + "ranks": { + "$ref": "#/$defs/_SearchRanks" + }, + "relationships_text": { + "title": "Relationships Text", + "type": "string" + }, + "scores": { + "$ref": "#/$defs/_SearchScores" + }, + "title": { + "title": "Title", + "type": "string" + }, + "url": { + "title": "Url", + "type": "string" + } + }, + "title": "_SearchHit", + "type": "object" + }, + "_SearchMeta": { + "properties": { + "degraded": { + "items": { + "type": "string" + }, + "title": "Degraded", + "type": "array" + }, + "graph_total": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Graph Total" + }, + "request_id": { + "title": "Request Id", + "type": "string" + }, + "text_total": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Text Total" + }, + "took_ms": { + "title": "Took Ms", + "type": "integer" + }, + "total_available": { + "title": "Total Available", + "type": "integer" + } + }, + "title": "_SearchMeta", + "type": "object" + }, + "_SearchRanks": { + "properties": { + "bm25": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Bm25" + }, + "combined": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Combined" + }, + "graph": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Graph" + } + }, + "title": "_SearchRanks", + "type": "object" + }, + "_SearchScores": { + "properties": { + "bm25": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Bm25" + }, + "graph": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Graph" + } + }, + "title": "_SearchScores", + "type": "object" + } + }, + "properties": { + "meta": { + "$ref": "#/$defs/_SearchMeta" + }, + "results": { + "items": { + "$ref": "#/$defs/_SearchHit" + }, + "title": "Results", + "type": "array" + } + }, + "required": [ + "meta", + "results" + ], + "title": "SearchResult", + "type": "object" +}
- Changed
taxonomy_content1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "_TaxonomyContentHit": { + "properties": { + "content_type": { + "title": "Content Type", + "type": "string" + }, + "date_modified": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Date Modified" + }, + "date_published": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Date Published" + }, + "facets": { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "title": "Facets", + "type": "object" + }, + "id": { + "title": "Id", + "type": "string" + }, + "title": { + "title": "Title", + "type": "string" + }, + "url": { + "title": "Url", + "type": "string" + } + }, + "title": "_TaxonomyContentHit", + "type": "object" + }, + "_TaxonomyContentMeta": { + "properties": { + "filters": { + "additionalProperties": { + "type": "string" + }, + "title": "Filters", + "type": "object" + }, + "request_id": { + "title": "Request Id", + "type": "string" + }, + "scope": { + "title": "Scope", + "type": "string" + }, + "took_ms": { + "title": "Took Ms", + "type": "integer" + }, + "total_available": { + "title": "Total Available", + "type": "integer" + } + }, + "required": [ + "total_available", + "took_ms", + "request_id", + "scope", + "filters" + ], + "title": "_TaxonomyContentMeta", + "type": "object" + } + }, + "properties": { + "meta": { + "$ref": "#/$defs/_TaxonomyContentMeta" + }, + "results": { + "items": { + "$ref": "#/$defs/_TaxonomyContentHit" + }, + "title": "Results", + "type": "array" + } + }, + "required": [ + "meta", + "results" + ], + "title": "TaxonomyContentResult", + "type": "object" +}
- Changed
taxonomy_facets1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$defs": { + "_TaxonomyFacet": { + "properties": { + "applies_to": { + "items": { + "type": "string" + }, + "title": "Applies To", + "type": "array" + }, + "name": { + "title": "Name", + "type": "string" + }, + "values": { + "items": { + "$ref": "#/$defs/_TaxonomyFacetValue" + }, + "title": "Values", + "type": "array" + } + }, + "required": [ + "name", + "applies_to", + "values" + ], + "title": "_TaxonomyFacet", + "type": "object" + }, + "_TaxonomyFacetValue": { + "properties": { + "count": { + "title": "Count", + "type": "integer" + }, + "slug": { + "title": "Slug", + "type": "string" + } + }, + "required": [ + "slug", + "count" + ], + "title": "_TaxonomyFacetValue", + "type": "object" + }, + "_TaxonomyFacetsMeta": { + "properties": { + "request_id": { + "title": "Request Id", + "type": "string" + }, + "took_ms": { + "title": "Took Ms", + "type": "integer" + } + }, + "required": [ + "took_ms", + "request_id" + ], + "title": "_TaxonomyFacetsMeta", + "type": "object" + } + }, + "properties": { + "facets": { + "items": { + "$ref": "#/$defs/_TaxonomyFacet" + }, + "title": "Facets", + "type": "array" + }, + "meta": { + "$ref": "#/$defs/_TaxonomyFacetsMeta" + } + }, + "required": [ + "meta", + "facets" + ], + "title": "TaxonomyFacetsResult", + "type": "object" +}
4 tool updates
- First observed
entity_lookup - First observed
search - First observed
taxonomy_content - First observed
taxonomy_facets
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1624 npm1MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs117 npmMIT
- AlicenseAqualityCmaintenanceRevnuvo Company Intelligence tells AI agents what changed at a company, with evidence. It observes company websites, technologies, and DNS over time and returns timestamped, confidence-aware changes, signals, and monitoring.9MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.