Skip to main content
Glama
WYRE-AI

Inforcer MCP Server

Official
by WYRE-AI

Server Quality Checklist

67%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v1.0.0

  • Disambiguation5/5

    Each tool targets a distinct resource/action: tenants, users, groups, roles, policies, baselines, alignment, audit, assessments, and reports. Even close pairs like alignment_scores vs alignment_details or assessments_run vs reports_run are clearly separated by noun and purpose. The discovery and status tools also serve clearly different roles.

    Naming Consistency4/5

    All tools share the inforcer_ prefix and mostly follow a resource_verb pattern like tenants_list, users_get, and groups_list. A few names omit the verb (inforcer_status, inforcer_alignment_scores, inforcer_audit_event_types) and report actions use compound names like reports_run_status and reports_download_output, but the overall convention remains readable and predictable.

    Tool Count3/5

    With 24 tools, this server sits at the high end of the reasonable range and feels heavy relative to a tightly scoped MCP server. The count is justified by the breadth of the domain — tenants, identity, alignment, audit, assessments, and reports — but it is more than an agent will typically need in one session.

    Completeness4/5

    The toolset covers the core workflows well: tenant resolution, identity object listing/detail, baseline alignment, secure scores, audit search, assessment discovery/run, and the full report queue/status/download lifecycle. Minor gaps remain, such as no policy detail view, no role detail view, and no assessment run status polling, but these are not blocking for the main Inforcer use cases.

  • Average 4.1/5 across 24 of 24 tools scored. Lowest: 3.4/5.

    See the Tool Scores section below for per-tool breakdowns.

    • 1 of 1 community issues answered or closed in the last 6 months
    • 28 commits in the last 12 weeks
    • Last stable release on
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is passing
  • Add a LICENSE file by following GitHub's guide. Once GitHub recognizes the license, the system will automatically detect it within a few hours.

    If the license does not appear after some time, you can manually trigger a new scan using the MCP server admin interface.

    MCP servers without a LICENSE cannot be installed.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • This repository includes a glama.json configuration file.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior3/5

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

    Annotations already carry readOnlyHint=true and openWorldHint=true; the description repeats read-only and adds that results include baseline groups and their members, which goes slightly beyond the schema. However, it does not disclose result structure, pagination, or open-world limitations, so the added behavioral context is modest.

    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 sentences, front-loaded with the action and scope, and no filler besides a harmless 'Read-only' repetition. It is efficient, scannable, and appropriately sized for a simple list tool.

    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 read-only list with one optional parameter, the description gives enough context to understand the tool's purpose and primary filter. It does not detail result member shapes or pagination, but the low complexity and full schema coverage make this acceptable. The absence of sibling differentiation prevents a top score.

    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%, and the schema already documents baseline_tenant_id as a filter by baseline (owner) Client Tenant ID. The description restates this filtering idea without adding format, boundaries, or behavioral details beyond what the schema provides.

    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 names a concrete operation and resource: 'List baseline groups and their members,' and mentions the tenant filter, making the tool's scope discernible at a glance. It doesn't explicitly contrast with sibling list tools like inforcer_groups_list, so it falls just short of full sibling differentiation.

    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 explicit guidance is given on when to use this tool versus alternatives such as inforcer_groups_list or inforcer_tenants_list. The only selection clue is the resource name 'baseline groups,' and there are no exclusions or alternative routing conditions.

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

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true; the description adds 'Read-only' and the useful detail that tenant identifiers are resolved to a numeric Client Tenant ID before the request. It does not address pagination, result shape, or open-world behavior, but the read-only safety profile is already covered by annotations.

    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 compact and front-loaded with the core action. Each sentence contributes either the purpose, accepted input forms, or the read-only nature. The 'Read-only' phrase slightly duplicates the annotation but is not excessive.

    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 one-parameter, read-only list operation, the description is largely complete: it states the action, the accepted tenant identifier formats, and resolution behavior. It does not describe the returned policy fields, but the low complexity and lack of an output schema make this a minor gap.

    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 schema already fully documents the single 'tenant' parameter with the same explanation of accepted formats. The description adds no new parameter-level meaning beyond what the schema provides, so the baseline of 3 applies.

    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 specific action and resource: 'List policies for a tenant.' It gives enough specificity to understand what the tool does, though it does not explicitly differentiate from sibling tools such as inforcer_baselines_list.

    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 the use case: listing policies for a tenant, and clarifies acceptable tenant identifiers. However, it provides no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true, and the description consistently states 'Read-only.' It adds useful behavioral context beyond the annotations: the accepted tenant identifier forms (numeric ID, DNS name, AAD GUID, friendly name) and the fact that it resolves to the numeric Client Tenant ID before making the request.

    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 compact, front-loaded with the core action, and every sentence adds relevant information. It avoids redundant filler and is easy to process quickly.

    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 single-parameter read-only tool with no output schema, the description covers the main necessary context: what it gets, what tenant identifier forms are accepted, and the resolution behavior. It does not enumerate what fields 'details' includes, but the tool name and sibling set make the scope reasonably clear.

    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%, and the parameter description essentially repeats the tool description. The description does not add any new parameter-level meaning beyond what the schema already provides, so the 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 states a specific verb ('Get') and resource ('baseline-alignment drift') and qualifies it as 'detailed', which suggests a more granular result than the sibling inforcer_alignment_scores. However, it does not explicitly contrast it with that sibling, so differentiation relies mostly on the word 'detailed' and the tool name.

    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?

    There is no guidance about when to use this tool versus alternatives such as inforcer_alignment_scores or inforcer_baselines_list. The description gives tenant-identifier format guidance, which is parameter-level usage, not tool-selection guidance.

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

  • Behavior3/5

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

    The annotations already declare readOnlyHint=true and openWorldHint=true, and the description's 'Read-only' reinforces the same information. It adds the cross-tenant scope, but provides no additional behavioral details such as output shape, pagination, or rate limits, so the value beyond annotations is modest.

    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 consists of two short sentences, front-loading the primary action and scope, followed by a useful safety qualifier. Every word earns its place, with no unnecessary repetition or padding.

    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 parameterless, read-only list tool, the description is complete: it states what is returned, the scope, and the safety profile. The empty schema and annotations cover the remaining invocation requirements, so nothing critical is missing.

    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?

    This tool has no parameters, and the input schema fully reflects this with an empty properties object. The description does not need to elaborate on parameter semantics, so the no-parameter baseline applies.

    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 uses a specific verb ('List') and resource ('baseline alignment scores') with a clear scope ('across tenants'), which clearly identifies the tool's purpose. It does not explicitly name sibling alternatives like inforcer_baselines_list or inforcer_alignment_details, so it stops short of full differentiation.

    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 phrase 'across tenants' implies this tool is for retrieving cross-tenant baseline alignment scores, providing some usage context. However, it does not explicitly state when to prefer this over siblings such as inforcer_baselines_list or inforcer_alignment_details, nor does it mention any exclusions.

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

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful context about pagination, tenant identifier resolution, and that only summaries are returned, but does not disclose page size, ordering, or search semantics. No contradiction with annotations.

    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?

    Four short sentences with the main purpose front-loaded and no filler. The tenant-resolution detail is relevant for correct invocation, and the read-only note is redundant but brief.

    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 read-only listing tool with all parameters documented in the schema, the description covers the key invocation details: what is listed, pagination, and tenant identifier accepted forms. The lack of an output schema makes 'user summaries' slightly vague, but it is sufficient for an agent to select and call the 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 description coverage is 100%, so the schema documents all three parameters. The description adds no new parameter meaning beyond restating the tenant formats and the 'paginated' behavior already visible in 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?

    States a specific action ('List'), precise resource ('Entra ID user summaries for a tenant'), and signals pagination. This clearly differentiates it from sibling inforcer_users_get, which is the single-user counterpart.

    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 makes the scope of the tool clear, but does not explicitly advise when to use this tool versus inforcer_users_get or how search/pagination should be used. Usage context is implied by the verb 'List', but no exclusions or alternative routing are provided.

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

  • Behavior4/5

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

    Annotations already provide readOnlyHint and openWorldHint, and the description adds the read-only label as reinforcement. Beyond annotations, it discloses behavioral details: the tenant identifier is resolved to the numeric Client Tenant ID before the request, and the result includes members. This is useful contextual behavior not present in the structured annotations.

    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 short and front-loaded with the core action. The tenant-resolution sentence is somewhat redundant with the schema, and 'Read-only' repeats an annotation, so it is not perfectly lean. Still, it is compact and readable with no wasteful filler.

    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 read-only tool with two fully documented parameters and no output schema, the description covers the essential purpose and output expectation (full detail, including members). It also explains tenant resolution behavior, which is an important operational nuance. It could additionally mention error or not-found behavior, but given the annotation coverage, it is sufficiently 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 repeats the tenant identifier semantics almost verbatim from the schema and does not add meaning for group_id beyond 'including members' as an outcome. It provides no new parameter-level insight, but the schema is already complete.

    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 states a specific verb and resource: 'Get full detail for a single group, including members.' This clearly distinguishes it from sibling tools like inforcer_groups_list by emphasizing 'single group' and the inclusion of members. The purpose is immediately recognizable and unambiguous.

    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?

    Usage context is implied through 'single group' and 'including members,' suggesting this is for retrieving one group's full detail rather than listing groups. However, it never explicitly names alternatives like inforcer_groups_list or provides exclusion conditions, so the guidance is left to inference.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true, which the description repeats, but the description adds meaningful behavioral detail beyond annotations: accepted identifier forms, normalization to numeric Client Tenant ID, and an error on ambiguous names. This gives the agent useful expectations about resolution and failure behavior.

    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 compact and front-loaded with the primary action, and every sentence contributes useful information. The only minor redundancy is the 'Read-only' phrase, which duplicates the readOnlyHint annotation.

    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 single-parameter read-only get operation, the description covers accepted inputs, normalization, and ambiguity errors, which is sufficient for correct invocation. It does not describe the return payload, but the absence of an output schema is less critical for a simple single-tenant fetch.

    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%, and the description's identifier explanation essentially mirrors the schema's parameter description. It adds no additional meaning beyond what the schema already provides, so the baseline score of 3 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?

    The opening sentence 'Get a single tenant' uses a specific verb and resource, clearly distinguishing this retrieval operation from sibling tools like inforcer_tenants_list and inforcer_tenants_resolve. The scope is unambiguous—one tenant, not a collection.

    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 identifier formats imply this is the tool for fetching a tenant by any accepted identifier, but the description does not explicitly state when to choose it over inforcer_tenants_list or inforcer_tenants_resolve. Usage is implied rather than spelled out, with no exclusions or alternative routing.

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

  • Behavior4/5

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

    The description reinforces the readOnlyHint annotation without contradicting it, and adds a meaningful behavioral detail beyond the annotations: tenant identifiers are resolved to the numeric Client Tenant ID before the request. This is useful and non-obvious context for the agent.

    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 short sentences, front-loaded with the operation and then providing the input contract. There is no filler or redundant framing, and the tenant resolution note is compact and valuable.

    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 one-parameter list tool with annotations covering read-only behavior and a fully documented schema, the description provides sufficient calling context. It could be slightly stronger with an explicit alternative pointer or pagination/return detail, but nothing essential is missing.

    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% because the input schema already documents the accepted tenant identifier formats and the resolution behavior. The main description adds no new parameter-level meaning beyond what is already present in the schema, so the baseline of 3 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?

    The description opens with a precise verb and resource: 'List Entra ID directory role definitions for a tenant.' This clearly differentiates the tool from sibling list tools focused on users, groups, policies, baselines, and tenants, and the 'definitions' qualifier avoids ambiguity with role assignments.

    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 tool's tenant-scoped purpose and accepted identifier formats are clear, so when to use it is reasonably implied. However, it does not explicitly contrast this tool with alternatives or state when not to use it, leaving some routing judgment to the agent.

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

  • Behavior3/5

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

    The description repeats the readOnlyHint annotation by saying 'Read-only,' and no behavioral context beyond that is added (no return shape, pagination, or side effects). It is consistent with the annotation, so there is no contradiction, but the description contributes little extra 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 entire description is two short sentences with no filler. 'List all managed tenants' front-loads the core action, and 'Read-only' adds important safety information without unnecessary elaboration.

    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 parameterless list operation, the description conveys the essential purpose and safety profile. It does not describe the return format or address the openWorldHint annotation, but these are minor for a simple 'list all' tool with no input parameters.

    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 tool has zero parameters and the schema is empty, so there is nothing for the description to add. This matches the baseline for no-parameter tools: the description cannot be expected to document parameters that do not exist.

    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 states a specific verb ('List') and resource ('all managed tenants'), making the tool's scope immediate and unambiguous. The word 'all' differentiates it from sibling tools like inforcer_tenants_get and inforcer_tenants_resolve, which operate on individual tenants.

    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?

    Usage context is implied: use this when you need the full collection of managed tenants rather than a single tenant or a resolution. However, no explicit when-to-use guidance or named alternatives are provided, leaving the agent to infer the distinction from the description and sibling names.

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

  • Behavior4/5

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

    The description discloses that the tenant parameter accepts multiple identifier formats and is resolved to the numeric Client Tenant ID before the request, which is useful behavioral context beyond the annotations. 'Read-only' is redundant with the readOnlyHint annotation but consistent. The tenant resolution behavior is the key added value here.

    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 long, with the main purpose front-loaded in the first sentence and the tenant resolution detail in the second. Every word earns its place, with no filler or redundant phrasing.

    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 two-parameter read-only tool, the description supplies all necessary invocation context: what it does, which parameters are needed, and how the tenant identifier is resolved. There is no output schema to explain return values, but 'full detail' reasonably implies the return payload. Given the tool's simplicity and sibling context, nothing critical is missing.

    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 the baseline is 3. The tool description largely repeats the tenant parameter explanation already present in the schema and adds no extra detail about user_id beyond 'The user ID (Entra object ID)' already in the schema. It does not meaningfully compensate beyond what the structured schema provides.

    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 starts with a specific verb and resource: 'Get full detail for a single user.' This clearly distinguishes it from sibling tools like inforcer_users_list, which presumably lists users rather than retrieving one user's full detail. The tenant resolution detail adds further specificity without confusion.

    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 retrieving a single user's details, but it does not explicitly state when to use this tool over alternatives such as inforcer_users_list or inforcer_groups_get. There is no mention of exclusions or conditions that would route an agent to a different sibling. The guidance is clear enough but leaves the contrast implicit.

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

  • Behavior3/5

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

    The annotations already declare readOnlyHint=true and openWorldHint=true, and the description's 'Read-only' simply reinforces that. The description adds a small behavioral/purpose hint ('available to run') but does not go beyond what annotations already establish.

    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 short, front-loaded with the action and resource, and includes a useful parenthetical purpose. The 'Read-only' sentence is somewhat redundant with the readOnlyHint annotation but harmless and reinforces the safety profile.

    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 zero-parameter list tool, the description conveys what is listed, why to use it, and that it is safe. It does not describe the exact output format, but the mention of discovering assessment IDs gives the agent enough expectation for a simple listing call.

    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 zero parameters and schema coverage is 100%, so there is no parameter documentation gap for the description to fill. The description adds nothing about parameters, but none exists, so the baseline 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?

    The description uses a specific verb ('List') and resource ('assessments available to run'), and explicitly states the practical purpose: discovering assessment IDs. This clearly differentiates it from sibling tools like inforcer_assessments_run, which would execute rather than list.

    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?

    The description gives clear context for when to use the tool: before running assessments, to discover assessment IDs. It does not explicitly name alternatives or exclusion conditions, but for a zero-parameter list operation the intended placement in the workflow is evident.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true and openWorldHint=true, and the description affirms read-only behavior. It also discloses useful behavioral traits beyond the annotations: the operation is paginated, and tenant identifiers are resolved to the numeric Client Tenant ID before the request. No contradictions with annotations.

    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 short and front-loaded with the core purpose, followed by tenant identifier handling and read-only status. It avoids extraneous content, though the tenant sentence is redundant with the schema, which slightly limits efficiency.

    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?

    The description covers what the tool lists, pagination, and tenant resolution. There is no output schema, but 'group summaries' indicates the return nature. Parameters are fully documented in the schema, and annotations cover read-only and open-world behavior. Missing only explicit guidance on when to prefer this over groups_get or when to use the continuation_token.

    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 schema already documents all three parameters. The description repeats the tenant parameter explanation verbatim but adds no new semantics for search or continuation_token; however, the schema descriptions for those are sufficient, so the 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 begins with a specific verb and object: 'List Entra ID group summaries for a tenant (paginated).' It clearly identifies the resource, scope, and pagination. This distinguishes it from sibling tools like inforcer_groups_get, which would retrieve a single group rather than summaries of all groups.

    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?

    The description conveys clear context for when this tool is appropriate: listing group summaries for a tenant, with pagination. It does not explicitly exclude alternatives or name sibling tools such as inforcer_groups_get for detailed group information, so it stops short of full routing guidance.

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

  • Behavior3/5

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

    Annotations already declare readOnlyHint=true, and the description reinforces that with 'Read-only.' It adds a meaningful scope qualifier ('queued and completed') but does not describe output format, pagination, or any other behavioral detail. The description does not contradict the annotations.

    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 one short sentence that front-loads the core action and scope. Every word earns its place, and there is no repetition of schema content or irrelevant detail.

    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 zero-parameter, read-only listing tool with annotations covering the safety profile, the description provides sufficient context: what is listed and that it is read-only. No output schema exists, and no additional details are necessary for an agent to invoke this tool correctly.

    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 tool has zero parameters and schema coverage is 100%, so there is no parameter burden on the description. With no parameters to document, the baseline of 4 applies because the description cannot be expected to add parameter-level meaning.

    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 a specific verb ('List') with a clear resource ('queued and completed report runs'), and the 'Read-only' qualifier distinguishes it from sibling tools like run, run_status, and download_output. Even though it doesn't name the siblings, the action and scope are unambiguous.

    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 enumerate queued or completed report runs. It does not explicitly name alternatives or state when NOT to use it, but the simple list-oriented purpose and 'Read-only' hint make the primary usage context reasonably clear from the sibling names.

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

  • Behavior4/5

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

    The annotations already mark the tool as read-only and open-world, and the description reinforces this with 'Read-only.' More importantly, it adds useful behavioral context beyond the annotations: the tenant identifier accepts multiple formats and is resolved to the numeric Client Tenant ID before the request. No contradiction with annotations found.

    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 three short sentences with no filler. The core purpose is front-loaded, the tenant identifier formats are specified compactly, and the read-only nature is stated clearly.

    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 single-parameter, read-only tool with helpful annotations, the description covers what the tool does and exactly how to identify the tenant. No critical calling information is missing, and the lack of an output schema is acceptable given the simplicity and clarity of the 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 schema description coverage is 100%, and the tenant parameter description repeats the tool-level description almost verbatim. Since the schema already fully documents the parameter meaning, the description adds no additional semantic value beyond 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 states a specific verb ('Get'), a clear resource ('Microsoft Secure Score data'), and a target ('a tenant'). It is immediately distinguishable from all listed sibling tools, none of which cover Secure Score.

    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 intended use case is implied: use this tool when you need Secure Score data for a tenant. However, the description gives no explicit when-to-use versus when-not-to-use guidance and does not reference any alternative sibling tools.

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

  • Behavior4/5

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

    Annotations already indicate read-only and open-world behavior; the description reinforces this with 'Read-only' and adds paging behavior not visible in the annotations: results are returned as a page of events plus a continuation token. This is useful given there is no output schema.

    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 compact: two sentences with no redundant or promotional language. The primary action is front-loaded, and the paging/read-only details are presented efficiently.

    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 read-only search tool with all-optional parameters, this description covers the essential invocation facts: what it searches, that filtering is optional, and what the response shape is. It does not specify ordering or default page size, but those are not critical for a first call given the schema documentation.

    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 all five parameters are already documented at the schema level. The description adds only that filters are optional and that paging uses a continuation token, which only marginally extends the schema's own 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?

    The description states a specific verb ('Search') and a specific resource ('Inforcer activity (audit) log'), making the tool's role immediately clear. No sibling tool covers audit-log search, so the resource itself differentiates it from the other tools.

    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?

    The description clearly signals when to use this tool: when an audit-log search is needed. It also notes that all filters are optional, so an agent can call it with zero arguments for a first page. It does not explicitly contrast it with sibling tools, but the standalone purpose is clear.

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

  • Behavior5/5

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

    The description goes beyond the annotations by adding critical behavioral context: the run is not destructive, but kicks off real work visible to operators. This is genuinely useful disclosure that complements the readOnlyHint=false and idempotentHint=false annotations, and it does not contradict them.

    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 and front-loads the most important information (HIGH-IMPACT) before the details. The tenant identifier sentence is somewhat redundant with the schema, but it keeps the description self-contained. Overall, each sentence serves a purpose without excessive length.

    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 high-impact action tool with no output schema, the description covers the key operational context: impact level, visibility to operators, tenant resolution, and user confirmation. It does not describe return values or post-run status checking, but this is a minor gap given the action-oriented nature and the presence of sibling status tools.

    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 schema already documents both parameters. The description repeats the tenant identifier semantics verbatim rather than adding new meaning, and adds no additional context for assessment_id beyond what the schema already provides. This is an adequate but not value-adding redundancy.

    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 a specific verb ('Triggers an assessment run') with a clear resource ('assessment run for a tenant'), and distinguishes itself from the sibling inforcer_assessments_list by indicating it initiates work rather than listing. The HIGH-IMPACT warning and tenant scope make the purpose immediately clear.

    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?

    The description explicitly instructs the agent to confirm with the user before invoking, which is essential usage guidance for a high-impact action. It also clarifies the tenant input forms and resolution behavior. It does not explicitly contrast against alternatives such as inforcer_reports_run, but the warning and 'confirm with user' guidance provide strong contextual direction.

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

  • Behavior4/5

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

    With no annotations, the description carries the disclosure burden. It discloses that the tool returns tool names and descriptions, and clarifies it is non-essential and non-gating. This sufficiently signals a read-only discovery behavior, though it does not explicitly say 'read-only' or discuss error cases.

    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 filler: the purpose and return value are stated first, followed by a useful clarification about optionality. Every sentence adds value.

    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 low-complexity, single-parameter discovery tool, the description is complete: it states what the tool returns, that results are scoped by domain, and that it is not a prerequisite. The rich enum schema provides detail on each domain, and no output schema is necessary given the description of the return payload.

    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%: the single 'domain' parameter is fully documented with an enum and detailed per-value descriptions. The tool description adds no parameter-specific information beyond referring to the 'selected domain', so the baseline score of 3 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?

    The description uses a specific verb and resource: 'Discover available Inforcer tools by domain' and states the return value ('tool names and descriptions'). It clearly differentiates itself from the 23 specific sibling tools by positioning itself as a help/discovery aid rather than a domain operation.

    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?

    The description provides a clear use case ('Discover available Inforcer tools by domain') and an important workflow rule: 'All tools are callable at any time — this is a help/discovery aid, not a prerequisite.' It does not explicitly name alternatives to skip it for, but the sibling tool list and the 'not a prerequisite' clause implicitly tell an agent when direct calls are appropriate.

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

  • Behavior4/5

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

    Annotations already declare readOnlyHint=true, and the description reinforces that with 'Read-only.' It goes beyond annotations by specifying the return behavior: base64-encoded file content, filename, and content type, plus the constraint that only finished report outputs are downloadable.

    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 with no wasted words. The first sentence states the tool's purpose and discovery path; the second describes the response shape. It is efficiently front-loaded.

    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 simple two-parameter, read-only retrieval tool with no output schema, the description covers what is returned and how outputs are discovered. It is complete enough for an agent to select and invoke it 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?

    The input schema already provides 100% parameter coverage, including output_id's provenance from inforcer_reports_run_status's outputs list. The description adds the 'finished' qualifier but does not contribute substantially new parameter-level detail beyond what the schema provides.

    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 states a specific action ('download') and a specific resource ('a single finished report output'), and further clarifies that outputs are discovered via inforcer_reports_run_status. This clearly separates it from report running, listing, and status-checking siblings.

    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?

    The description gives clear workflow context: use this after discovering outputs through inforcer_reports_run_status. It does not explicitly state when not to use the tool or name alternative tools, but the discovery source provides enough routing guidance.

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

  • Behavior4/5

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

    The description goes beyond the readOnlyHint annotation by disclosing the exact behavioral contract: while the run is in progress, isTerminal is false and no outputs are returned; once finished, isTerminal is true with downloadable outputs. This tells the agent what to expect across repeated calls.

    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-loads the action, and packs the essential state-related behavior into compact, unambiguous language. There is no redundant or filler content.

    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 simple one-parameter polling tool with no output schema, the description adequately covers the return behavior (isTerminal and outputs), the input source (run_id from inforcer_reports_run), and the read-only nature. Nothing needed for correct invocation is missing.

    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 single parameter run_id is fully described in the schema as the identifier returned by inforcer_reports_run. The description adds no additional parameter semantics beyond what the schema already provides, so the baseline score of 3 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?

    The description begins with a specific verb and resource: 'Poll a report run.' It also differentiates itself from siblings by describing the terminal-state behavior (isTerminal false vs true), which makes it clear this is the polling counterpart to inforcer_reports_run.

    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?

    The description clearly implies when to use the tool: after starting a report run, poll until isTerminal is true. The run_id is explicitly tied to inforcer_reports_run in the schema. It does not explicitly name alternatives or state when not to use it, but the polling semantics and read-only nature provide clear context.

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

  • Behavior4/5

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

    Annotations already mark the tool as readOnlyHint and openWorldHint, and the description reinforces 'Read-only' while adding the important distinction that the output is not the Azure AD tenant GUID. This goes beyond just restating the annotation and helps an agent avoid a common mistake. It does not, however, go deeper into response shape or failure modes beyond what the schema already says.

    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, well-constructed sentence that front-loads the core action, lists the accepted input forms, defines the output, and ends with the key caveat. Every phrase earns its place with no redundancy or filler.

    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 one-parameter, read-only resolver with no output schema, the description together with the schema fully equips an agent to call it correctly: acceptable inputs, resolution behavior, output type, read-only nature, and the ambiguity error are all covered. No meaningful information is missing.

    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 single 'tenant' parameter is fully described with accepted input formats, resolution behavior, and an explicit note about ambiguous names throwing an error. The tool description largely repeats this information, with the added caveat that the result is NOT the Azure AD tenant GUID. This is a useful reinforcement but not a substantial leap beyond the schema, hence baseline 3.

    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 names a specific verb ('Resolve') and a precise resource: tenant identifiers (name, DNS name, Azure AD GUID) mapped to the numeric Inforcer Client Tenant ID. It also adds a crucial distinguishing caveat that this ID is NOT the Azure AD tenant GUID, which sets it apart from mere lookup tools and prevents a common confusion.

    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?

    The description clearly implies when to use this tool: whenever you need to convert a tenant name, DNS name, or Azure AD GUID into the numeric Inforcer Client Tenant ID. It does not explicitly name sibling alternatives like inforcer_tenants_list or inforcer_tenants_get or state when not to use it, but the specialized resolution purpose provides clear context and leaves little ambiguity.

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

  • Behavior4/5

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

    The description explicitly says 'Read-only', which matches the readOnlyHint annotation. It also clarifies that the returned values are meant for filtering, adding context beyond the bare schema. No destructive or hidden behavior is implied.

    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 very short and front-loaded with the action and purpose. The 'Read-only' sentence is slightly redundant with the annotations, but it is harmless and does not significantly bloat the description.

    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 simple parameterless, read-only listing tool with annotations and no output schema, the description fully covers what the tool does, what it returns conceptually, and how it should be used. Nothing essential for invoking it correctly is missing.

    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?

    This tool has zero parameters and 100% schema description coverage, so there are no parameter semantics to clarify. Per the baseline for parameterless tools, a score of 4 is appropriate since there is nothing the description needs to compensate for.

    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 a specific verb ('List') and resource ('audit event types') and explains their purpose ('available for filtering the activity log'). This clearly distinguishes it from related tools like inforcer_audit_search, which searches rather than lists filter options.

    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?

    The description states the tool's purpose in the context of filtering the activity log, making the use case clear. It does not explicitly name alternatives or exclusions, but the intended context is apparent from the wording and sibling names.

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

  • 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 explicitly states that the tool performs a live baselines.list() call as a read-only connectivity check, which is valuable transparency for a tool with zero annotations. It could mention failure/return behavior, but the key non-obvious traits are disclosed.

    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 compact and front-loaded: it states the core purpose first, then adds the implementation detail. Both sentences earn their place with no filler or 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 zero-parameter connectivity check with no output schema, the description covers the essential purpose and read-only safety. It leaves the expected response format somewhat implicit, but the simplicity of the tool means an agent has enough context to invoke it correctly.

    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 tool has zero parameters, so the baseline is 4. The description accurately reflects this by not inventing parameter-related details, and there is nothing more the description needs to add for invocation.

    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: checking Inforcer API connectivity and available domains. This is a distinct action/resource combination that separates it from the sibling tools, none of which are status checks.

    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?

    The description provides clear context for when to use this tool: when a read-only connectivity check against the Inforcer API is needed. It does not explicitly name alternatives or exclusions, but the use case is unambiguous enough for an agent to select it.

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

  • Behavior5/5

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

    The description goes well beyond the annotations by adding that this is high-impact, triggers real report-generation work, is asynchronous, and requires user confirmation before invocation. It also clarifies that it is 'not destructive' despite kicking off side effects, which is a useful nuance beyond destructiveHint=false.

    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 compact and front-loaded with the high-impact warning. Each sentence earns its place: what it does, side-effect nuance, async follow-up steps, and user confirmation requirement.

    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 high-impact tool with two fully documented parameters and no output schema, the description covers the essential operational context: queuing behavior, async execution, how to retrieve results, and user confirmation. No critical guidance is missing.

    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 the schema already documents both parameters and their sub-properties. The description adds no additional parameter-level detail beyond what the schema provides, so the 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 states a specific action ('Queues one or more reports across one or more tenants') with a clear resource and scope. It also distinguishes itself from sibling tools by explaining the asynchronous workflow and pointing to inforcer_reports_run_status and inforcer_reports_download_output for follow-up.

    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?

    The description provides clear workflow guidance: poll with inforcer_reports_run_status, then fetch outputs with inforcer_reports_download_output, and confirm with the user before invoking. It does not explicitly contrast this tool with alternatives such as inforcer_assessments_run, so it falls short of full when/ when-not guidance.

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

  • Behavior4/5

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

    The description adds useful behavioral context beyond the annotations by explaining what the catalog contains and that the tool is a discovery prerequisite for inforcer_reports_run. It also reinforces the readOnlyHint with an explicit 'Read-only' statement, though openWorldHint is not further elaborated.

    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 filler. The resource and purpose are front-loaded, and the specific return fields plus the usage directive are packed efficiently into the remaining text.

    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 parameterless, read-only catalog tool, the description fully covers what the agent needs: what the tool returns, why the agent should call it, and how it relates to the subsequent run tool. No output schema is present, but the description compensates by listing the returned fields.

    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 tool has zero parameters and 100% schema description coverage, so the schema already captures everything an agent needs about parameters. The description adds no parameter-level detail, which is appropriate; per the baseline for zero-parameter tools, a score of 4 fits.

    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 names a specific verb ('List') and resource ('catalog of available report types'), and enumerates the payload fields: key, output formats, collatable flag, and accepted parameters. It also distinguishes itself from inforcer_reports_run by framing itself as the discovery step for valid type/output_format pairs.

    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 to discover valid (type, output_format) pairs before calling inforcer_reports_run.' This gives the agent a clear precondition and connects it directly to the relevant sibling tool, leaving no ambiguity about its role.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

inforcer-mcp MCP server

Copy to your README.md:

Score Badge

inforcer-mcp MCP server

Copy to your README.md:

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/WYRE-AI/inforcer-mcp'

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