Skip to main content
Glama
vengtoo

@vengtoo/mcp-server

by vengtoo

@vengtoo/mcp-server

Early access0.x releases may have breaking changes. Pin your version if stability matters.

Manage your Vengtoo authorization model and check access through any MCP-compatible AI tool.

Exposes your Vengtoo tenant as MCP tools — create resource types, subjects, roles, and policies; assign them; and check authorization decisions — all from a conversation.

Install

First, create an API key in the Vengtoo dashboard under Settings → API Access. Then add the server to your MCP client config (Claude Code, Cursor, Windsurf, Cline, or any MCP-compatible tool):

{
  "mcpServers": {
    "vengtoo": {
      "command": "npx",
      "args": ["@vengtoo/mcp-server"],
      "env": {
        "VENGTOO_API_KEY": "vgt_..."
      }
    }
  }
}

Or with OAuth2 client credentials:

{
  "mcpServers": {
    "vengtoo": {
      "command": "npx",
      "args": ["@vengtoo/mcp-server"],
      "env": {
        "VENGTOO_CLIENT_ID": "client_...",
        "VENGTOO_CLIENT_SECRET": "vgt_cs_..."
      }
    }
  }
}

Claude Code shortcut:

claude mcp add vengtoo -e VENGTOO_API_KEY=vgt_... -- npx @vengtoo/mcp-server

Related MCP server: Databricks Permissions MCP Server

Local build (development)

npm install
npm run build
node dist/index.js

Point at a local agent instead of cloud:

"env": {
  "VENGTOO_API_KEY": "vgt_...",
  "VENGTOO_BASE_URL": "http://localhost:8181"
}

Tools

Tool

What it does

list_resource_types / create_resource_type / get_resource_type / delete_resource_type

Resource type management

list_resources / create_resource / get_resource / delete_resource

Resource management

list_subjects / create_subject / get_subject / delete_subject

Subject management

assign_role_to_subject / unassign_role_from_subject

Role membership

list_roles / create_role / get_role / delete_role

Role management

list_policies / create_policy / get_policy / delete_policy

Policy management

assign_policy / unassign_policy

Policy assignment (with optional starts_at/expires_at for JIT access)

evaluate_access

Evaluate whether a subject can perform an action on a resource

list_pending_tools / approve_tool / block_tool

MCP governance — review, then approve or block the tools an AI agent can call through a gateway

Environment variables

Variable

Required

Description

VENGTOO_API_KEY

One of these two

API key starting with vgt_. Create one in the dashboard under Settings → API Access

VENGTOO_CLIENT_ID + VENGTOO_CLIENT_SECRET

One of these two

OAuth2 client credentials

VENGTOO_BASE_URL

No

Override API base URL. Default: https://api.vengtoo.com

Docs

vengtoo.com/docs

License

MIT

Available Tools

29 tools
assign_policyA

Assign a policy to a subject, role, or group. This is what actually grants access — creating a policy alone does nothing until it is assigned.

entity_type must be "subject", "role", or "group".

For time-boxed (JIT) access: set expires_at. For future-dated access: also set starts_at.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYesUUID of the subject, role, or group
policy_idYesPolicy UUID
starts_atNoRFC3339 timestamp when the assignment becomes active. If omitted, active immediately.
expires_atNoRFC3339 timestamp when the assignment expires. If omitted, does not expire.
entity_typeYesWhat type of entity to assign the policy to

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided, but the description explains the behavior of starts_at and expires_at, and notes that assignment is what grants access. It lacks mention of potential error conditions or idempotency, but is otherwise transparent.

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

Conciseness5/5

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

The description is concise with three short paragraphs. The main purpose is front-loaded, and every sentence adds value. No unnecessary text.

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

Completeness4/5

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

Given no output schema and no annotations, the description covers essential information: what the tool does, required parameters, and optional parameters with timing semantics. It does not mention return values or error cases, but for a mutation tool this is acceptable.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds practical usage context for entity_type and time-based parameters (JIT vs future-dated), which goes beyond the schema's property descriptions.

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?

The description clearly states the tool assigns a policy to a subject, role, or group, and explains that creating a policy alone does nothing until assigned. This distinguishes it from create_policy and other sibling tools.

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?

Explicitly specifies entity_type must be 'subject', 'role', or 'group', and provides guidance on when to use starts_at and expires_at for time-boxed access. It also implies when to use this tool (after creating a policy) versus other tools.

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

assign_role_to_subjectA

Give a subject a role. The subject inherits all policies assigned to the role. Use this to build RBAC: create a role, assign policies to it, then assign the role to subjects.

ParametersJSON Schema
NameRequiredDescriptionDefault
role_idYesRole UUID
subject_idYesSubject UUID

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description must cover behavioral traits. It explains the side effect: 'The subject inherits all policies assigned to the role.' It does not mention prerequisites (e.g., existence of role/subject) or error conditions, but for a simple mutation, the key behavioral aspect is clear. Good, but could be more thorough.

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

Conciseness5/5

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

The description is two sentences with no wasted words. The first sentence states the action, the second provides context. It is front-loaded and efficient.

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

Completeness4/5

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

Given the tool's simplicity (2 parameters, no output schema), the description covers the purpose, usage guidelines, and basic behavioral transparency. It does not address idempotency or error states, but the core functionality is well-explained. Slightly better than minimum viable.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides good descriptions for both parameters ('Role UUID', 'Subject UUID') with 100% coverage. The description does not add new semantics beyond the schema; it simply reinforces that the tool assigns a role to a subject. Baseline 3 is appropriate.

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?

The description uses specific verbs ('Give a subject a role') and clearly states the resource and action. It mentions inheritance of policies, which distinguishes it from siblings like 'assign_policy' and 'unassign_role_from_subject'.

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?

The description explicitly states when to use this tool: 'Use this to build RBAC: create a role, assign policies to it, then assign the role to subjects.' This provides a workflow context and implies not to use it before role/policy creation.

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

check_authorizationA

Ask Vengtoo whether a subject can perform an action on a resource. Returns decision: true (allowed) or false (denied), plus the reason and which policy/access path was responsible.

Identify the subject and resource using either their Vengtoo UUID (id) or your system's own identifier (external_id). external_id is preferred in production — it avoids the need to store Vengtoo UUIDs.

For type-level checks (does this user have ANY access to this type of resource?): set resource_type and omit resource_id and resource_external_id. For instance-level checks (does this user have access to THIS specific resource?): set resource_id or resource_external_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAction to check, e.g. "read" or "delete"
subject_idNoVengtoo subject UUID. Use subject_external_id instead when possible.
resource_idNoVengtoo resource UUID. Use resource_external_id instead when possible.
subject_typeYesSubject type, e.g. "user" or "service"
resource_typeYesResource type name or UUID, e.g. "document"
subject_external_idNoYour system's own subject ID (recommended). Mutually exclusive with subject_id.
resource_external_idNoYour system's own resource ID. Mutually exclusive with resource_id.

TDQS

A4.7/5.0
Behavior4/5

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 explains the return value (decision, reason, policy) and implies a pure read/check operation with no side effects. While it does not mention error cases or rate limits, it provides sufficient transparency for typical use.

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?

The description is well-structured and front-loaded with the main purpose. Each sentence adds value, though it is slightly longer than necessary. No fluff, but could be marginally more concise.

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?

Given the absence of an output schema, the description adequately explains the return values. It covers both usage modes, clarifies optional vs required parameters, and provides enough context for the agent to use the tool correctly in various scenarios.

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 coverage is 100% with detailed descriptions for all 7 parameters. The description adds meaningful context beyond the schema by explaining the difference between type-level and instance-level checks, recommending external_id over UUID, and clarifying mutual exclusivity of ID fields.

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?

The description clearly states the tool's purpose: 'Ask Vengtoo whether a subject can perform an action on a resource.' It specifies the return value (decision, reason, policy) and distinguishes itself from sibling tools like assign_policy, create_resource, etc., which serve different functions.

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?

The description provides explicit guidance on when to use external_id vs UUID, preferring external_id in production. It also clearly explains two usage modes: type-level checks (omit resource_id/external_id) and instance-level checks (set resource_id or resource_external_id). This helps the agent decide how to invoke the tool correctly.

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

create_namespaceA

Create a new namespace. Resources created inside this namespace are isolated from resources in other namespaces. Use "default" namespace unless you specifically need isolation.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNamespace name, e.g. "production" or "acme-corp"
descriptionNoOptional description

TDQS

A3.9/5.0
Behavior3/5

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

Discloses that resources are isolated across namespaces, a key behavioral trait. No annotations provided, so description carries full burden. Lacks details on auth requirements, idempotency, or error behavior.

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

Conciseness5/5

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

Three concise sentences with no waste. Front-loaded with the primary action and key context.

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

Completeness3/5

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

Given no output schema, description does not explain return value. Also lacks error handling info (e.g., duplicate namespace behavior). Provides isolation context but is incomplete for a creation tool.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters with examples and descriptions (100% coverage). The tool description adds context about using 'default', but does not significantly enhance parameter meaning beyond the schema.

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?

Explicitly states 'Create a new namespace' with a clear verb and resource. Differentiates from siblings by describing isolation property, and gives concrete guidance on using 'default' namespace.

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

Usage Guidelines4/5

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

Provides explicit advice to use 'default' unless isolation is needed, indicating when to use. However, does not explicitly mention when not to use or list alternatives beyond the context of siblings.

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

create_policyA

Create a policy. A policy grants or denies a set of actions on a resource type (type-level) or a specific resource (instance-level). After creating, assign it to a subject or role with assign_policy.

For type-level: set resource_type_id and actions — the policy applies to ALL resources of that type. For instance-level: set resource_id and actions — the policy applies to ONE specific resource.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPolicy name, e.g. "editors-can-read-write-documents"
effectYesALLOW grants the actions. DENY blocks them even if another policy would allow. Use ALLOW unless you specifically need an override.
actionsYesActions this policy covers, e.g. ["read", "write"]
priorityNoPriority 0–100. Higher priority wins when multiple policies apply. Default 50.
descriptionNoOptional description
resource_idNoResource UUID — makes this an instance-level policy. Mutually exclusive with resource_type_id.
resource_type_idNoResource type UUID — makes this a type-level policy. Mutually exclusive with resource_id.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, description carries full burden. Discloses that creation is followed by assignment, and explains the two behavior modes. No mention of permissions or reversibility, but creation is straightforward.

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

Conciseness5/5

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

Two short paragraphs with clear separation of purpose and usage instructions. No fluff, every sentence adds value.

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

Completeness3/5

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

Lacks return value info (no output schema). Otherwise covers creation process and next steps. Adequate but could mention that the created policy object is returned.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all parameters (100% coverage). Description adds context about mutual exclusivity of resource_id and resource_type_id, and explains type vs instance levels, which is not in schema.

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?

Clearly states 'Create a policy' with specific verb and resource. Describes two modes (type-level vs instance-level), distinguishing from sibling tools like assign_policy.

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

Usage Guidelines4/5

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

Explicitly says to assign after creation with assign_policy. Explains when to use type-level (set resource_type_id) vs instance-level (set resource_id). Could mention when not to use (e.g., for checking authorization), but adequate.

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

create_resourceA

Create a resource — a specific instance of a resource type (e.g. a specific document, a specific project). Set external_id to your system's own identifier (database UUID, slug) so you can reference it at evaluation time without storing Vengtoo's internal ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable resource name, e.g. "Engineering Wiki"
typeYesResource type UUID (from create_resource_type) or resource type name
descriptionNoOptional description
external_idNoYour system's own ID for this resource (recommended). Used in evaluation calls as resource.external_id.

TDQS

A4/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. Only states 'Create a resource' implying mutation. No disclosure of authorization, idempotency, error behavior, or side effects. Mentions external_id usage in evaluation calls but lacks deeper behavioral transparency.

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

Conciseness5/5

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

Two concise sentences: first defines purpose, second adds critical usage guidance. No wasted words.

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

Completeness4/5

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

Covers core purpose and primary parameter guidance. Lacks description of return value (no output schema) but is adequate for a simple create operation. Could mention typical success/error responses, but overall sufficient.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3). Description adds significant value for external_id by explaining its purpose and benefit. For other parameters, little beyond schema, but the added detail on external_id raises the score.

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?

Clearly identifies the verb 'Create' and the resource 'resource' (a specific instance of a resource type). Examples given (document, project) and distinguishes from sibling tools like create_resource_type by specifying 'instance of a resource type'.

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

Usage Guidelines4/5

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

Provides clear guidance to use this tool for creating specific resource instances. Recommends setting external_id for evaluation-time referencing. Missing exclusions or comparisons to other creation tools, but context from sibling names partially compensates.

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

create_resource_typeA

Create a resource type. Do this before creating resources or policies. The actions list defines what verbs are valid for this type (e.g. ["read", "write", "delete"]). Policies targeting this type use these action names.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesResource type name, e.g. "document" or "invoice". Use singular lowercase.
actionsYesActions available on this type, e.g. ["read", "write", "delete", "share"]
descriptionNoOptional description

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries full behavioral burden. Indicates a creation mutation but omits details like authentication needs or whether it's idempotent. Explains actions semantics, adding moderate transparency.

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

Conciseness5/5

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

Three focused sentences with no extraneous text. Purpose is front-loaded, and each sentence adds essential information.

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

Completeness4/5

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

Covers the creation process, prerequisite order, and parameter semantics adequately. Lacks details about return values or errors, but the tool's simplicity and schema mitigate the need.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3). The description adds value by explaining that actions define valid verbs for the type and how policies use them, beyond the schema's parameter descriptions.

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?

Clearly states creation of a resource type and distinguishes from siblings like create_resource by specifying the prerequisite relationship ('Do this before creating resources or policies').

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

Usage Guidelines4/5

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

Explicitly advises to create resource types before resources or policies, providing clear sequencing. Does not mention when not to use or alternatives, but the guidance is sufficient for correct invocation.

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

create_roleA

Create a role. After creating it, assign policies to the role with assign_policy (entity_type: "role"), then assign subjects to the role with assign_role_to_subject.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesRole name, e.g. "editor" or "billing-admin"
descriptionNoOptional description

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided. The description does not disclose behavioral details such as idempotency, duplicate handling, permissions required, or side effects. For a mutation tool, this is a significant gap.

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?

The description is two sentences with no wasted words. The first sentence is minimal, the second provides workflow context. It is appropriately sized for the tool's simplicity.

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

Completeness4/5

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

For a simple creation tool with no output schema, the description covers the primary purpose and the necessary follow-up steps. It does not explain return values, but given the tool's nature, it is reasonably complete.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond what the schema already provides (name and description fields).

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?

The description clearly states 'Create a role' which is a specific verb+resource pair. It distinguishes from sibling tools by outlining the subsequent steps via assign_policy and assign_role_to_subject.

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?

The description explicitly provides usage guidance: after creating the role, one should assign policies using assign_policy with entity_type 'role', and then assign subjects using assign_role_to_subject. This clarifies the correct sequence and tool choice.

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

create_subjectA

Create a subject — any principal that can be authorized (user, service, AI agent, device). Set external_id to your system's own user/service identifier so evaluation calls can reference it without a Vengtoo UUID lookup.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name, e.g. "Alice" or "payment-service"
typeYesSubject type, e.g. "user", "service", "agent". Use consistent values across your tenant.
external_idNoYour system's own identifier for this subject (recommended). Used in evaluation calls as subject.external_id.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description only mentions creation and external_id benefits, lacking details on mutations, permissions, idempotency, or response behavior.

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

Conciseness5/5

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

The description is two sentences (31 words), front-loaded with the main purpose, and every sentence provides value with no filler.

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

Completeness3/5

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

For a simple creation tool, the description adequately states purpose and external_id guidance, but lacks information about return values (no output schema) or constraints like uniqueness of name.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds slight value for external_id by explaining its benefit, but repeats schema info for name and type.

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?

The description clearly states 'Create a subject' and defines a subject as any principal that can be authorized, which distinguishes it from sibling tools like delete_subject or list_subjects.

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

Usage Guidelines3/5

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

The description recommends using external_id for evaluation calls, but does not explicitly state when to use this tool vs alternatives like assign_policy or check_authorization, leaving usage context implied.

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

delete_namespaceA

Delete a namespace by ID. This does not delete the resources inside it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNamespace UUID

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description provides critical behavioral context: it deletes the namespace by ID and clarifies it does not cascade to resources. This avoids misunderstanding, though permissions or reversibility are not mentioned.

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

Conciseness5/5

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

Two concise sentences, no redundancy. The key action and important caveat are front-loaded.

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

Completeness4/5

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

For a simple delete tool with one parameter and no output schema, the description covers the main behavior and notable side effect. It lacks info on confirmation or response, but is largely complete.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter 'id' is described as 'Namespace UUID' in the schema. The description adds no further semantics beyond the schema, so baseline 3 is appropriate.

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?

The description clearly states the verb ('Delete') and the resource ('a namespace by ID') and distinguishes itself by noting that it does not delete resources inside, differentiating it from delete_resource among siblings.

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

Usage Guidelines3/5

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

The description implicitly advises that resources are not deleted but does not explicitly state when to use this tool versus others like delete_resource. No when-not or alternative instructions are provided.

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

delete_policyA

Delete a policy by ID. Subjects or roles that had this policy assigned immediately lose the access it granted.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPolicy UUID

TDQS

A4.1/5.0
Behavior4/5

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

Discloses immediate loss of access for subjects/roles with the policy, a critical behavioral trait. No annotations provided, so description carries full burden. Lacks mention of permissions or reversibility.

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

Conciseness5/5

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

Single, efficient sentence with no wasted words. Front-loads the core action and adds essential consequence.

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?

Complete for a simple delete tool with one parameter and no output schema. Covers purpose and key side effect.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage 100%; description adds no extra meaning beyond the schema's 'Policy UUID' description. Adequate but does not elaborate on format or source.

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?

Clearly states 'Delete a policy by ID'. Specific verb and resource, distinct from siblings like create_policy, get_policy, list_policies.

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

Usage Guidelines3/5

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

Describes consequence (immediately loses access) but does not explicitly state when to use this vs alternatives like unassign_policy. Provides implicit guidance but not explicit when-to-use or when-not.

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

delete_resourceC

Delete a resource by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesResource UUID

TDQS

C2.9/5.0
Behavior2/5

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

The description only says 'Delete,' implying a destructive operation, but provides no details on consequences like irreversibility, cascading effects, or required permissions. With no annotations, the description fails to disclose behavioral traits.

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

Conciseness5/5

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

A single, direct sentence with no extraneous information. Efficiently conveys the core action.

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

Completeness2/5

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

For a destructive operation with one parameter and no output schema, the description is minimal. It lacks context on side effects, reversibility, and usage preconditions, making it incomplete for safe agent use.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already describes the 'id' parameter as 'Resource UUID.' The description adds 'by ID' but does not provide additional meaning beyond the schema, meriting the baseline score.

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

Purpose4/5

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

The description states 'Delete a resource by ID,' clearly identifying the verb and resource. It distinguishes from sibling tools like delete_namespace or delete_policy, but lacks specificity about what constitutes a 'resource' in this context.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternative delete tools (e.g., delete_resource_type) or any prerequisites such as whether the resource must not be referenced elsewhere.

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

delete_resource_typeB

Delete a resource type by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesResource type UUID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided. Description does not disclose behavioral traits such as whether deletion is soft or hard, cascading effects, or auth requirements. For a destructive operation, more detail is needed.

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?

Single, efficient sentence with no wasted words. However, it omits important context that could be included without verbosity.

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

Completeness2/5

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

Given no output schema and no annotations, the description should compensate by detailing side effects, reversibility, or permissions. It does not, leaving the agent underinformed.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage for the single parameter 'id'. Description does not add meaning beyond what's in the schema, so baseline score applies.

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?

Description clearly states the verb (Delete), the resource (resource type), and the method (by ID). It distinguishes from sibling delete tools like delete_policy or delete_resource.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no prerequisites, and no context on safety or required permissions.

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

delete_roleA

Delete a role by ID. Subjects who had this role lose any access that came exclusively from it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRole UUID

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses one important behavioral trait (subjects lose exclusive access) but omits other aspects such as reversibility, required permissions, or error handling. Adds some value beyond the obvious, but not comprehensive.

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

Conciseness5/5

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

The description is extremely concise, with only two sentences. The first sentence states the primary purpose, and the second adds key behavioral context. Every sentence earns its place with zero wasted words.

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

Completeness4/5

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

For a simple deletion tool with one parameter and no output schema, the description is mostly complete. It covers the action and a critical side effect. Minor gaps exist: it does not mention what happens if the role doesn't exist or if the operation is idempotent, but these are not critical for basic usage.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The tool description does not add any additional meaning to the 'id' parameter beyond what the schema already provides ('Role UUID').

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?

The description clearly states the action (Delete), the resource (a role), and the method (by ID). It distinguishes from sibling tools like create_role and get_role, and adds a specific consequence about subjects losing exclusive access.

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

Usage Guidelines3/5

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

The description implies when to use (when a role should be removed) but does not explicitly compare with siblings like unassign_role_from_subject or delete_policy. The consequence provides some context but no direct alternatives or exclusions.

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

delete_subjectB

Delete a subject by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSubject UUID

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided. Description does not disclose irreversibility, permission requirements, or side effects (e.g., cascading deletes). For a delete operation, more transparency is expected.

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

Conciseness5/5

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

Single sentence, front-loaded, no extraneous information. Efficient and direct.

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

Completeness2/5

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

Given the tool's implications (deletion), the description lacks details about irreversibility, error handling, or prerequisites. Incomplete for an action with significant side effects.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and description adds no extra meaning beyond the schema's 'Subject UUID'. Baseline score of 3 is appropriate.

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?

Description explicitly states the action 'Delete', resource 'subject', and method 'by ID'. Clearly distinguishes from sibling tools like create, get, list, etc.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., when to delete vs deactivate). No prerequisites or exclusions mentioned.

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

get_namespaceC

Get a namespace by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNamespace UUID

TDQS

C2.6/5.0
Behavior2/5

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

No annotations exist, so description carries full burden. It only states the basic operation without disclosing any behavioral traits like read-only nature, permissions, or limitations.

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

Conciseness3/5

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

The description is a single concise sentence, but it lacks structure or additional details that would justify its brevity.

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

Completeness2/5

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

Given no output schema and simple input, the description fails to mention return value, error conditions, or what a namespace is, making it incomplete for an agent.

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

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes the 'id' parameter as 'Namespace UUID' (100% coverage), and the description adds no extra meaning beyond 'by ID'.

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

Purpose4/5

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

The description 'Get a namespace by ID' clearly states the action (get) and resource (namespace), which distinguishes it from sibling tools like create_namespace or list_namespaces.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as list_namespaces; no context provided about prerequisites or context.

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

get_policyA

Get a policy by ID, including its resource and action assignments.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPolicy UUID

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so the description carries the burden. It indicates a read operation (get) and mentions the return includes resource and action assignments. However, it does not disclose potential errors (e.g., not found), permissions, or output format, leaving some behavioral gaps.

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

Conciseness5/5

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

The description is a single sentence with no redundant information. It efficiently communicates the tool's purpose and key output detail.

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

Completeness4/5

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

With no output schema, the description partially compensates by noting the inclusion of resource and action assignments. For a simple read tool, this covers the main return content, though it lacks details on response structure or error cases.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with the 'id' parameter described as 'Policy UUID' in the schema. The tool description adds no additional meaning beyond what the schema already provides, meeting the baseline.

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?

The description clearly states 'Get a policy by ID' with a specific verb and resource. It adds 'including its resource and action assignments' which differentiates it from list_policies and other retrieval tools.

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

Usage Guidelines3/5

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

The description implies usage when you have a specific policy ID, but it does not explicitly state when to use this tool versus alternatives like list_policies or get_namespace. No guidance on preconditions or exclusions.

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

get_resourceC

Get a resource by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesResource UUID

TDQS

C2.8/5.0
Behavior2/5

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

No annotations exist, so description must fully disclose behavior. It only states a read operation ('Get'), but omits details like error handling, return format, required permissions, or rate limits. The description fails to convey safety or side-effect absence beyond the implied read.

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

Conciseness3/5

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

Extremely concise (5 words), but lacks essential context. While brevity is valuable, the description sacrifices behavioral and usage guidance. It could be improved by adding a sentence about output or common use cases without becoming verbose.

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

Completeness2/5

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

For a simple tool with one param and no output schema or annotations, the description is minimally complete in stating input and action. However, given the many sibling tools and lack of differentiation guidance, the description falls short of providing full context for an agent to select this tool correctly.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (parameter 'id' documented as 'Resource UUID'). The description adds no additional meaning beyond restating the tool's action; baseline score of 3 applies because the schema already describes the parameter adequately.

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

Purpose4/5

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

The description states the verb 'Get' and the resource 'resource by ID', clearly indicating the action and target. It distinguishes from sibling get tools by specifying 'resource', though it could be more precise by noting the type of resource (e.g., 'a single resource' vs. 'resource').

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs. alternatives (e.g., get_namespace, get_policy). No prerequisites or context provided about when this tool is appropriate.

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

get_resource_typeC

Get a resource type by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesResource type UUID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description carries full burden. It does not disclose behavioral traits such as idempotency, error behavior (e.g., 404 if not found), or whether the operation is read-only. The brevity leaves the agent to infer basic safety.

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?

The description is concise with a single sentence that is front-loaded and direct. While efficient, it is somewhat under-informative; a slightly expanded version could earn a 5.

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

Completeness2/5

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

Given the lack of an output schema, the description should explain what is returned (e.g., a resource type object with fields). For a simple get operation, more context about the result would improve completeness.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with the one parameter 'id' described as 'Resource type UUID'. The description adds no further semantic detail beyond the schema, which is minimal. Baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('Get') and resource ('resource type') and specifies lookup by ID. It distinguishes from sibling tools which operate on different resource types (namespace, policy, etc.). However, it does not mention that the result is a full resource type object.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like list_resource_types or other get tools. The description lacks contextual cues for appropriate usage.

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

get_roleB

Get a role by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRole UUID

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavior. It only states the action, not traits like idempotency, read-only nature, or error conditions (e.g., returns null or errors if ID not found).

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

Conciseness3/5

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

The description is a single sentence, which is concise, but it lacks structure and fails to include crucial details. It is not front-loaded with useful context beyond the tool's name.

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

Completeness2/5

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

With 29 sibling tools and no output schema, the description is insufficient. It does not explain the return value (e.g., role object), nor does it provide context about prerequisites or scope.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; the parameter 'id' has a description 'Role UUID' in the schema. The description adds no additional meaning, so baseline score of 3 is appropriate.

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?

The description 'Get a role by ID' uses a specific verb and resource, clearly distinguishing it from sibling tools like list_roles (which returns all roles) and other get_* tools for different resources.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., list_roles, create_role). It does not indicate that the tool requires an existing role UUID or that it returns a single object.

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

get_subjectC

Get a subject by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSubject UUID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It does not disclose behavior such as what happens if the subject ID is not found (e.g., error vs null). No mention of read-only nature or side effects.

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?

The description is a single sentence with no extraneous words. It is concise, though it could be slightly expanded to add value without becoming verbose.

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

Completeness2/5

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

Given the simplicity (1 param, no output schema, no annotations), the description is minimal. It does not explain the return format or error cases. A more complete description would mention that the subject object is returned or any prerequisites.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (1 parameter 'id' described as 'Subject UUID'). The description adds no additional meaning beyond the schema, earning a baseline of 3.

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

Purpose4/5

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

Description is clear: 'Get a subject by ID.' It specifies the verb and resource, distinguishing it from list_subjects (which returns many) and create_subject (which creates). However, it could be more explicit about the uniqueness of the ID.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like list_subjects or get_role. The description does not mention that it's intended for fetching a single subject by its unique identifier.

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

list_namespacesA

List all namespaces in the tenant. Namespaces are optional containers that scope resources — useful when the same resource type name is used across multiple isolated environments (e.g., prod vs staging).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states that it lists all namespaces, without mentioning permissions, rate limits, side effects, or whether it is a read-only operation. This is insufficient for a mutation-free tool.

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

Conciseness5/5

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

Two sentences, no wasted words. The first sentence states the core function, the second adds valuable context. Perfectly sized for the task.

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

Completeness2/5

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

The tool has no output schema, so the description should explain return values. It does not describe the format or behavior of the response. While the context signals show no parameters, the lack of output documentation makes it incomplete for an agent to understand the result.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters (0 params), making schema coverage trivially 100%. The description does not need to add parameter details; per rubric, baseline is 4 for 0 params. It provides context about namespaces but not parameter semantics.

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?

The description clearly states the verb ('List') and resource ('all namespaces in the tenant'), and explains the purpose of namespaces (scoping resources across environments). This distinguishes it from siblings like get_namespace (single) and create_namespace.

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

Usage Guidelines3/5

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

The description implies that the tool is for listing all namespaces, but does not explicitly state when to use it vs alternatives like get_namespace or list_* tools for other resources. No exclusions or alternative guidance is provided.

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

list_policiesA

List all policies in the tenant.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states 'List all policies' without mentioning permissions, results format, pagination, or any side effects. This is minimal transparency.

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

Conciseness5/5

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

The description is a single, clear sentence that efficiently conveys the tool's purpose. There is no redundant information, and it is front-loaded.

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

Completeness3/5

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

Given the tool's simplicity (no parameters, no annotations, no output schema), the description is minimally complete. However, it would benefit from mentioning whether the result includes all policies or requires pagination, but it suffices for a basic list operation.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, and schema coverage is 100%. The description adds no additional meaning beyond the schema, which is expected for a parameterless tool. A baseline score of 3 is appropriate.

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?

The description clearly states the action ('List') and the resource ('all policies'), with scope ('in the tenant'). This effectively distinguishes it from siblings like 'get_policy' which retrieves a single policy.

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

Usage Guidelines3/5

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

The description implies that this tool is for retrieving all policies, but it does not explicitly state when to use it versus alternatives like 'get_policy' or when not to use it. No guidance on prerequisites or exclusions.

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

list_resourcesA

List resources in the tenant.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, and the description only states 'List resources in the tenant.' It fails to disclose behavioral traits such as pagination, sorting, or any constraints (e.g., maximum results). For an unannotated tool, this is insufficient.

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

Conciseness5/5

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

The description is a single sentence of five words, with no wasted content. It is concise and front-loaded with the key action and target.

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

Completeness3/5

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

Given no parameters, no output schema, and no annotations, the description is minimal but covers the basic function. However, it lacks behavioral context (e.g., whether the list is flat or hierarchical, order), making it barely adequate for a simple tool.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, and the description does not add parameter-specific meaning. According to guidelines, a baseline of 4 is appropriate when schema coverage is 100% and there are no parameters to describe.

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?

The description clearly states the verb 'List' and the resource 'resources in the tenant,' making the tool's purpose unambiguous. It distinguishes from sibling list tools (e.g., list_namespaces, list_policies) by specifying the entity type.

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

Usage Guidelines3/5

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

The description implies usage for listing resources but provides no guidance on when to use this tool versus alternatives (e.g., list_resource_types) or any exclusions. There are no explicit when-not or alternative references.

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

list_resource_typesA

List all resource types. A resource type defines a category of thing you protect (e.g. "document", "project", "invoice") and the actions available on it.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided; description adds context about what resource types are but lacks details on pagination, ordering, or side effects.

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

Conciseness5/5

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

Two sentences, no waste, efficient and clear.

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?

Completely covers the simple list functionality; no output schema needed.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters in schema, baseline 4. Description doesn't need to add param info.

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?

Clearly states 'List all resource types' with a specific verb and resource. Distinguishes from sibling list tools by explaining what a resource type is.

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

Usage Guidelines3/5

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

Implies usage for listing resource types but provides no explicit when-to-use or comparisons with alternatives like other list tools.

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

list_rolesA

List all roles. Roles are named collections of policies — assign a role to many subjects instead of assigning the same policies repeatedly.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are present, and the description lacks any behavioral details such as idempotence, authentication requirements, output format, or pagination behavior.

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

Conciseness5/5

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

Two concise sentences front-load the action and provide a clear explanation with no wasted words.

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

Completeness3/5

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

With no output schema or annotations, the description is adequate but minimal; it could mention the return format or scope of the list.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the description doesn't need to add param info. It adds value by explaining the concept of roles, which indirectly aids understanding of the output.

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?

The description clearly states it lists all roles and explains what a role is, distinguishing it from sibling tools like get_role or create_role.

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

Usage Guidelines3/5

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

No explicit when-to-use or alternatives given, but the context from sibling tools and the clear purpose make it straightforward to infer usage.

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

list_subjectsA

List subjects (users, services, AI agents, or any other principal) in the tenant.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by subject type, e.g. "user" or "service"

TDQS

A3.8/5.0
Behavior2/5

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 not mention that the tool is read-only, lacks pagination details, rate limits, or authentication requirements. Only a single generic sentence.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word earns its place, clearly stating the action and scope.

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

Completeness4/5

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

Given the tool's simplicity (list with optional filter), the description is largely adequate. However, it lacks details on pagination, ordering, or response format, which could be helpful for an agent.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with one parameter 'type' described. The description adds value by listing example subject types ('users, services, AI agents'), providing context beyond the schema's brief description.

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?

The description clearly states the verb 'list' and resource 'subjects', and provides concrete examples (users, services, AI agents) making it distinct from sibling tools like list_policies or list_roles.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool or when not to. With many sibling tools, such as check_authorization or assign_policy, the description lacks context for selection, though the filter parameter implies a specific use case.

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

unassign_policyA

Remove a policy assignment from a subject, role, or group. Access granted by this policy is revoked immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYesUUID of the subject, role, or group
policy_idYesPolicy UUID
entity_typeYesEntity type

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It adds the behavioral trait that access is revoked immediately, but omits details like required permissions or whether the operation is reversible.

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

Conciseness5/5

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

Two succinct sentences, no extra words. First sentence states the action, second adds a key consequence. Highly efficient and front-loaded.

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

Completeness4/5

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

For a simple delete tool, the description is fairly complete given no output schema. It covers the action and immediate effect. Lacks error conditions or prerequisites, but still adequate.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already described. The description mentions entity types (subject, role, group) but the schema enum already covers these. No additional semantics added.

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?

The description clearly states the verb 'Remove' and the specific resources 'policy assignment from a subject, role, or group', and distinguishes from sibling tools like assign_policy by indicating the reversal of access.

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

Usage Guidelines3/5

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

The description implies when to use the tool (to remove a policy assignment) but does not provide explicit guidance on when not to use it or mention alternative tools like unassign_role_from_subject for role removals.

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

unassign_role_from_subjectA

Remove a role from a subject. The subject immediately loses any access that came exclusively from this role.

ParametersJSON Schema
NameRequiredDescriptionDefault
role_idYesRole UUID
subject_idYesSubject UUID

TDQS

A4/5.0
Behavior4/5

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

The description discloses that removal is immediate and only affects access that came exclusively from this role, adding behavioral context beyond a simple removal statement. Since no annotations are provided, the description carries the burden well.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the action, and every word adds value. No redundancy.

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

Completeness4/5

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

For a simple removal tool with two well-documented parameters and no output schema, the description adequately explains the effect and what the tool does. It could mention error handling or idempotency, but it is mostly complete.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions ('Role UUID', 'Subject UUID'). The description does not add further meaning beyond the schema, so a baseline score of 3 is appropriate.

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?

The description clearly states the verb 'remove' and the resource 'role from a subject', and it directly contrasts with sibling tools like 'assign_role_to_subject' by indicating this is the inverse operation.

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

Usage Guidelines3/5

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

The description explains the effect of the tool (immediate removal of access) but does not provide explicit guidance on when to use it versus alternatives like 'unassign_policy', nor does it mention prerequisites or conditions.

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

TDQS

A3.5/5.0
Disambiguation5/5

Each tool targets a distinct operation on a specific entity (e.g., create_namespace, assign_policy, check_authorization). There is no overlap; even assignment operations are clearly separated by entity type.

Naming Consistency5/5

All tool names use consistent snake_case with a verb_noun pattern (e.g., create_resource, list_roles, delete_policy). Longer names like assign_role_to_subject remain descriptive and follow the pattern.

Tool Count4/5

With 29 tools, the count is high but justified by the comprehensive coverage of multiple entity types (namespace, policy, resource, resource_type, role, subject) and their CRUD plus assignment operations. It slightly exceeds the ideal range but remains well-scoped.

Completeness2/5

The tool set lacks update operations for all entities (e.g., update_policy, update_role). This forces users to delete and recreate objects to modify them, which is a significant gap for a permissions management system.

Maintenance

ActivityMaintained
ResponsivenessSyncing

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

Related MCP Servers

Latest Blog Posts

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/vengtoo/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server