Skip to main content
Glama

entity_lookup

Read-only

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, its plain-text `summary` (null when it has none) 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.

Input Schema

NameRequiredDescriptionDefault
nameYes
limitNo
include_full_textNo

Output Schema

NameRequiredDescriptionDefault
metaYes
resultsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / $defs / _EntityHit / properties / summary
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "title": "Summary"
      +}
  2. Changed6 schema fields changed
    • addedInput schema / properties / limit / maximum
      Added value: +50
    • addedInput schema / properties / limit / minimum
      Added value: +1
    • addedInput schema / properties / name / maxLength
      Added value: +1000
    • addedInput schema / properties / name / minLength
      Added value: +1
    • removedOutput schema / $defs / _EntityHit / properties / relationships
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "items": {
      -        "$ref": "#/$defs/_Relationship"
      -      },
      -      "type": "array"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "title": "Relationships"
      -}
    • removedOutput schema / $defs / _Relationship
      Removed 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"
      -}
  3. Changed2 schema fields changed
    • addedOutput schema / $defs / _EntityHit / properties / references
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "$ref": "#/$defs/_Reference"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "title": "References"
      +}
    • addedOutput schema / $defs / _Reference
      Added 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"
      +}
  4. Changed1 schema field changed
    • changedOutput 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"
      +}
  5. First observed

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover read-only/open-world safety, but the description adds substantial behavior: exact case-insensitive matching, the body-text cost tradeoff with `include_full_text`, and a critical degraded-mode caveat ('null with "lrsf" in meta.degraded means references could not be loaded: do not conclude that the hit cites no instruments'). It also warns that `edge` semantics are not a statement of legal effect, preventing a plausible misinterpretation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the sibling contrast are front-loaded in the first two sentences, which is exactly right. The Returns block is longer than necessary given an output schema already exists, though it earns part of its length with the non-obvious degraded-mode and `edge` caveats.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter read tool with an output schema, the description covers matching semantics, result shape, cross-tool handoff ('pass a reference's `work_id` to `get_legal_resource`'), and failure modes. Nothing an agent needs to call it correctly and interpret results is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

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: `name` is exact case-insensitive match, `limit` is bounded 1-50 (schema also enforces this), and `include_full_text` is off by default with an explicit rationale ('bodies are large; request only when you need the content'). Each parameter gains meaning beyond its type declaration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Find TCLP content... associated with a named concept') and enumerates the content types it covers (clauses, glossary terms, guides). It explicitly contrasts itself with the `search` sibling via 'deterministic name match against Entity nodes... rather than a relevance-ranked semantic search', so an agent can distinguish the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Directly names the alternative ('Unlike `search`...') and states the selecting condition: use this when you have a specific term or concept and want every clause or glossary entry referencing it. That is an explicit when-to-use plus an implicit when-not-to-use (fuzzy/conceptual queries belong to `search`).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.