Brivo Velocity
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Brivo Velocitylist all sites and show which doors are currently unlocked"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Brivo Velocity
An MCP (Model Context Protocol) server that gives Claude read-only access to the Brivo Access Control API — sites, access points, control panels, users, credentials, schedules, cameras, and more.
What it does
Exposes every read-only (GET) endpoint of Brivo's Access API as an MCP tool — 75 in total — so Claude can look up and reason about your Brivo account's access-control data directly in conversation: list sites, check a door's live status, pull a user's photo, inspect schedules and holidays, and more. No write/control actions (unlock, credential changes, user edits, etc.) are implemented — this is a read-only tool by design.
Related MCP server: Workday MCP Server
Status
Windows and macOS are both built and verified via CI on real windows-latest/macos-latest runners. macOS binaries are signed ad-hoc only (no Apple Developer account/notarization) — you'll need to right-click → Open the first time to get past Gatekeeper's "unidentified developer" warning.
Requirements
Windows or macOS
Your own Brivo Access API credentials: a Client ID/Secret and API key from developer.brivo.com, plus either your Brivo admin username/password (
passwordgrant) or a registered redirect URI (authorization_codegrant) — matching however your Brivo Application is registered in Brivo's Marketplace.
Setup
Download the latest binary for your platform from Releases (
brivo-velocity-<version>-windows-x64.exefor Windows,brivo-velocity-<version>-macos-arm64for macOS) and put it somewhere permanent, e.g. alongside any other local MCP servers you run.Run it once, or just add it to Claude Desktop's config and launch Claude — it creates a
brivo-velocity.envfile next to itself with blank placeholders on first run.Fill in
brivo-velocity.envwith your own Brivo credentials. If any value contains a#, wrap it in double quotes (e.g.BRIVO_PASSWORD="my#password") — otherwise everything after the#is silently dropped as a comment.Add it to Claude Desktop's MCP config (
claude_desktop_config.json):"brivo-velocity": { "command": "C:\\path\\to\\brivo-velocity.exe", "args": [], "env": {} }On macOS,
commandis the path to the extensionlessbrivo-velocitybinary instead.Restart Claude Desktop. You should see all 75 tools under "Read-only tools" in that connector's Tool Permissions page.
Building from source
Requires Node.js 24+.
npm install
npm run build # compiles TypeScript -> dist/
npm run package # bundles everything into dist/brivo-velocity(.exe)Development
npm run test:read-only # exercises every tool against a real Brivo account end to endLicense
MIT — see LICENSE.
Available Tools
75 toolsAccess Point: Get_access_pointBRead-only
Retrieve a single Brivo access point by id.
| Name | Required | Description | Default |
|---|---|---|---|
| accessPointId | Yes | The Brivo access point id, e.g. from Access Point: List_access_points. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds essentially nothing beyond that: no note on error behavior for a missing/unknown id, auth requirements, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the resource and lookup key front-loaded and zero filler. Nothing redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-record getter with full schema coverage and annotations covering safety, the description is minimally sufficient. It omits any mention of return shape or failure modes, which is acceptable given no output schema but leaves minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema itself documents accessPointId including how to obtain it. The description adds no syntax or format detail, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Retrieve) and resource (a single Brivo access point) with the lookup key (id). This clearly distinguishes it from the List_access_points sibling by scope. It stops short of naming the sibling explicitly, so not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
By saying 'a single' it implies the fetch-one use case versus the list variant, but it never states when to prefer it over siblings like Get_access_point_status or when the id is unknown. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Access Point: Get_access_point_statusBRead-only
Get the live connectivity/device status of an access point.
| Name | Required | Description | Default |
|---|---|---|---|
| accessPointId | Yes | The Brivo access point id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The word 'live' adds a useful hint that this queries current/real-time state rather than cached data, but there is no mention of rate limits, polling expectations, or auth requirements, or what happens if the AP is offline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and the payload. Nothing is wasted, though it is minimally sized rather than richly structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema, the description conveys the essential return concept ('connectivity/device status'). It is adequate, though the specific status fields or states returned are not hinted at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single required accessPointId is documented as 'The Brivo access point id.' The description adds no format, type, or lookup guidance beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (get) and a specific resource state (live connectivity/device status of an access point), which distinguishes it from the static-config sibling Get_access_point. It falls short of 5 only because it does not explicitly name or contrast with that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus Get_access_point or List_access_points, nor any stated prerequisites. The agent must infer that 'live' status implies a different use case than fetching stored configuration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Access Point: List_access_point_camerasCRead-only
List the cameras associated with an access point.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. | |
| accessPointId | Yes | The Brivo access point id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered, but the description adds nothing beyond that: no note on pagination behavior, ordering, empty-result handling, or permission requirements. For a pure list tool with zero added behavioral context, this is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste. It is efficient, though its brevity is close to under-specification rather than true conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter list tool with a fully documented schema and no output schema, the description is minimally adequate. It omits the inverse-relationship context that would help disambiguate it among many sibling list tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so offset, pageSize, and accessPointId are fully documented in the schema (defaults and max included). The description adds no meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (cameras) scoped to a parent (access point), which is clear on its own. However, it does not distinguish itself from the closely related sibling Camera: List_camera_access_points, which describes the same association from the opposite direction; an agent could easily pick the wrong one without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g., that a valid accessPointId is needed), and no mention of the inverse sibling List_camera_access_points. The agent must infer all routing from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Access Point: List_access_point_groupsCRead-only
List the access groups with permission on an access point.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. | |
| accessPointId | Yes | The Brivo access point id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: no mention of pagination behavior, result ordering, or whether an empty result means no groups or an invalid access point.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the resource front-loaded and no filler. It is appropriately sized, though it errs toward under-specification rather than tight conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with a fully documented schema and no output schema, the description is minimally adequate. It omits pagination behavior and the relationship to the inverse permission-list sibling, which an agent would benefit from knowing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so accessPointId, offset, and pageSize are already documented in the schema. The description adds no format, ID-source, or pagination detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('access groups with permission on an access point'), which is distinguishable from the inverse sibling List_group_access_point_permissions. It does not explicitly name that sibling, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the closely related List_group_access_point_permissions or Get_access_point. No prerequisites, no context about when this direction of lookup is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Access Point: List_access_pointsBRead-only
List all Brivo access points (doors/entry points).
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds no behavioral context beyond that (no auth requirements, rate limits, or pagination details, though the schema covers pagination). Minimum viable for a simple read-only list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no redundant or filler content. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity read-only list with full schema coverage and annotations, the description communicates the resource and global scope ('all'). It lacks sibling routing guidance but is otherwise sufficient; no output schema exists and none is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three optional parameters (filter, offset, pageSize) are fully documented in the schema. The description adds no additional parameter semantics, making the baseline of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('Brivo access points') with a clarifying parenthetical defining what an access point is. It does not explicitly differentiate from the sibling List_site_access_points, though 'all' hints at global scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus siblings like List_site_access_points or Get_access_point. There are no prerequisites, exclusions, or alternative-routing instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Account: Get_accountCRead-only
Retrieve a single Brivo account by id.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | The Brivo account id, e.g. from Account: List_accounts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing further: no error behavior for an unknown id, no auth/permission requirements, no indication of what the returned account object contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with zero filler. It is efficient, though its brevity is also the source of the missing routing and behavior detail rather than an intentional compression of richer content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial single-item read whose annotations carry the safety profile and whose lone parameter is fully documented, this is minimally adequate. There is no output schema, so the agent gets no statement of what an account record contains or how failures surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema description coverage, the schema already documents accountId and even points at List_accounts as the source. The description introduces no format constraints (string vs numeric id) beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieve a single Brivo account') and constrains it to one entity via 'by id', which separates it from the sibling List_accounts. It does not, however, distinguish itself from Get_account_summary or the other Account-scoped getters, so the agent must infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or named alternative in the description itself. The only routing hint lives in the parameter schema ('e.g. from Account: List_accounts'), so the description leaves the choice between Get_account and Get_account_summary entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Account: Get_account_summaryCRead-only
Retrieve a summary of the current account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered by structured data. The description adds nothing beyond that — no note on what fields are aggregated, cost, caching, or freshness — so it contributes essentially zero behavioral context of its own.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficiently written, though its brevity is partly a symptom of under-specification rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of telling the agent what the returned summary contains, and it does not. For an account-level read that competes with Get_account, this leaves the agent unable to predict or prefer this call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to disambiguate; the baseline for a zero-parameter tool applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Retrieve a summary of the current account" names a verb and a resource, but "summary" is undefined and the description never distinguishes this from the sibling Get_account, which an agent will naturally consider. The scope word "current" gives a mild hint but the core distinction remains ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of Get_account or List_accounts as alternatives. The agent must guess whether this returns counts, settings, or a subset of Get_account's payload.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Account: List_account_administratorsCRead-only
List the administrators for an account.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. | |
| accountId | Yes | The Brivo account id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: no note on pagination defaults, result ordering, whether a missing account errors or returns empty, or what fields an administrator record contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient, though it may be too terse to carry the scoping information the tool actually needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full schema coverage and annotations, the description is minimally sufficient. The notable gap is disambiguation from the closely named sibling 'List_administrators', which the agent needs in order to pick correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with offset, pageSize, and accountId all documented in the schema itself (including defaults and max). The description adds no syntax or format detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List the administrators') and scopes it to an account, which is clearer than a bare name restatement. However, it does not distinguish itself from the sibling 'List_administrators', which appears to cover the same resource at a broader scope, leaving the agent to infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus 'List_administrators' or 'Get_administrator'. The phrase 'for an account' hints at scope but is not framed as a usage condition, so the agent gets no explicit routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Account: List_account_featuresBRead-only
List the enabled features for an account.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | Yes | The Brivo account id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered by structured data. The description adds the qualifier 'enabled', implying disabled features are excluded from results — a useful behavioral detail — but says nothing about pagination or return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the resource front-loaded after the verb. It is efficient, though arguably too sparse to be maximally useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with annotations covering safety, this is close to adequate. The gap is that 'features' is never defined and there is no output schema, so the agent cannot anticipate the return structure or scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and schema description coverage is 100%, with 'The Brivo account id.' documented in the schema itself. The description adds no format or sourcing guidance beyond 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (enabled features for an account), so the operation is unambiguous. However, it does not differentiate from the sibling 'Features: Get_features' or 'Account: List_account_settings', leaving the agent to infer which feature-related call to make.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no indication of when to use this tool versus the sibling Get_features, nor any prerequisites such as needing a valid accountId or permission scope. Usage is only implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Account: List_accountsCRead-only
List all Brivo accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that: no mention of pagination behavior, result caps, filtering semantics, or account scope, so it contributes essentially zero behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste. It is efficient, though the extreme brevity borders on under-specification rather than deliberate conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity list tool with fully documented parameters and safety annotations, the definition is minimally viable. It is missing any account-scoping context, result/pagination expectations, and guidance on how it relates to the other Account tools, which the agent cannot recover from structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: filter syntax, offset, and pageSize are all thoroughly documented in the schema itself. The description adds no parameter meaning, which is acceptable given the schema does the heavy lifting, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb (List) and resource (Brivo accounts), so the agent knows exactly what the tool returns. However, it offers no differentiation from siblings like Get_account, Get_account_summary, or List_account_administrators, which an agent must disambiguate on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as Get_account_summary or Get_account, and no mention of prerequisites, scope, or exclusions. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Account: List_account_settingsCRead-only
List the settings for an account.
| Name | Required | Description | Default |
|---|---|---|---|
| accountOid | Yes | The Brivo account object id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, which the description merely echoes by saying 'List'. It adds no behavioral context such as what scope of settings is returned, whether the account must be accessible to the caller, or any pagination/auth notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no wasted words and the action front-loaded. It is efficient, though its brevity is partly under-specification rather than disciplined concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter, read-only listing tool this is minimally adequate, but with no output schema the agent gets no hint of what 'settings' actually contains, nor how it differs from account features or summary. It leaves a real gap that matters less for a low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single accountOid parameter is fully documented in the schema as the Brivo account object id. The description adds no syntax, format, or defaulting detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb (List) and resource (settings for an account), so the basic action is unambiguous. However, it does nothing to distinguish this tool from close siblings like Get_account_summary, Get_account, or List_account_features, and 'settings' remains an undefined category.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus Get_account, Get_account_summary, or List_account_features. The agent is left to infer the distinction entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Activity: List_activitiesCRead-only
List account activity entries.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety behavior is covered. The description adds nothing beyond the operation name: no indication of pagination behavior, result scope, permissions, or what an 'activity entry' contains. With annotations carrying the behavioral load, the description contributes almost no extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and contains no filler or redundancy. It is efficiently structured, though very terse for a list tool with filter capabilities.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter list tool with a fully documented schema and safety annotations, the description is minimally adequate. It does not clarify the boundary between 'activity entries' and sibling audit/access event resources, which is a meaningful gap for tool selection. No output schema exists, but the return shape is also left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the filter syntax, offset semantics, and pageSize limits are already fully documented in the schema. The description adds no parameter meaning beyond that, which is the baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb+resource (list account activity entries), so the agent knows it is a read/list operation. However, it does not distinguish this tool from sibling event tools such as List_audit_events or List_access_events, and 'activity entries' is not defined further. Clear but without sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternative tools. With many list/event siblings available, the agent is left to infer when this tool is appropriate. This is effectively no guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Administrator: Get_administratorBRead-only
Retrieve a single Brivo administrator by id.
| Name | Required | Description | Default |
|---|---|---|---|
| administratorId | Yes | The Brivo administrator id, e.g. from Administrator: List_administrators. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond that: no auth/permission requirements, no behavior for an unknown id, no indication of what the response contains. With the annotation bar lower, it still contributes nothing new.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the verb and resource front-loaded and no filler. Nothing could be trimmed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter getter with read-only annotations, this is close to adequate, but with no output schema the description does not indicate what a returned administrator looks like or what happens when the id is unknown. Minor gaps remain for an agent to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented in the schema, including where to obtain the id. The description's 'by id' restates rather than extends the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: retrieve a single Brivo administrator identified by id. It is clearly a getter, but it does not distinguish itself from close siblings such as Get_current_administrator or Get_administrator_login, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by id' implies you must already have an identifier, but there is no explicit when-to-use guidance and no mention of when to prefer Get_current_administrator or Get_administrator_login instead. The schema's reference to 'Administrator: List_administrators' is the only routing hint, and it lives in the schema rather than the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Administrator: Get_administrator_loginCRead-only
Retrieve login details for an administrator.
| Name | Required | Description | Default |
|---|---|---|---|
| administratorId | Yes | The Brivo administrator id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read profile is covered. The description adds nothing beyond that — no note on what fields constitute 'login details', whether sensitive data is masked, or any auth/permission requirement. It essentially restates the read annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero padding. It is appropriately sized, though its brevity comes at the cost of the missing detail noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one required parameter, no output schema, and simple read annotations, the definition is minimally adequate. However, for a tool whose whole value is the shape of the returned 'login details', the absence of any hint about the response content leaves a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the single administratorId parameter is documented as 'The Brivo administrator id.' The description adds no format, accepted type, or source guidance, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a verb and resource ('Retrieve login details for an administrator'), which is better than a tautology, but 'login details' is left undefined — an agent cannot tell whether this returns username, email, last-login timestamp, or credential info, nor how it differs from the sibling Get_administrator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives, despite three closely related siblings (Get_administrator, Get_current_administrator, List_administrators). The agent is left to guess which of these to call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Administrator: Get_current_administratorARead-only
Retrieve the administrator this login belongs to.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read nature is covered. The description adds only that the administrator is scoped to 'this login'; it does not describe authentication requirements, return format, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single, front-loaded sentence with no redundant or filler text. It is appropriately sized for a simple no-parameter read operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, no-parameter read with annotations covering the safety profile, the description is nearly complete. It does not explain the return shape, but no output schema exists and the resource name is largely self-explanatory.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to document. The baseline for a no-parameter tool is 4, and the description does not introduce any misleading parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: retrieve the administrator tied to the current login. It distinguishes the current-login scope from generic administrator retrieval, though it does not explicitly name the sibling Get_administrator as the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies use when the current authenticated administrator is needed, but provides no explicit when-to-use guidance, prerequisites, or comparison against alternatives such as Get_administrator or Get_administrator_login.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Administrator: List_administrator_rolesCRead-only
List the roles assigned to an administrator.
| Name | Required | Description | Default |
|---|---|---|---|
| administratorId | Yes | The Brivo administrator id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile, but the description adds nothing beyond that: no return format, pagination, ordering, or note on what happens if the administrator has no roles. It is a pure restatement of the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler and no redundancy. It is efficient, though its brevity is partly the source of the definition's other gaps rather than a deliberate trade-off.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool with no output schema and full schema coverage, the definition is minimally viable: an agent knows what it fetches and what input it needs. It lacks return-value context and any differentiation from closely related role/assignment tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with one documented parameter ('The Brivo administrator id.'), so the schema carries full parameter meaning. The description adds no syntax or format detail beyond it, which meets the baseline 3 for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (roles assigned to an administrator), so the operation is unambiguous. However, it does no sibling differentiation despite overlapping tools like Get_admin_assignments and Role: List_roles that an agent could confuse with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, prerequisites, or alternatives. It does not clarify how this differs from Get_admin_assignments or Role: List_roles, leaving the agent to infer selection from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Administrator: List_administratorsCRead-only
List all Brivo administrators.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: no note on pagination behavior, result scope (all accounts vs. tenant), or what the listing returns. For a zero-effort sentence this is a clear gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler, so nothing is wasted. However, at six words it is under-specified rather than genuinely concise for a tool with three parameters and several sibling alternatives.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with 100% schema coverage and no output schema, the description is minimally sufficient. It still omits the scope of 'all' (which accounts/tenants) and any pagination expectation, which matters given the near-identical sibling listing tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with filter, offset and pageSize each fully documented in the schema (filter syntax, defaults, max 100). The description adds no parameter meaning of its own, so the baseline of 3 applies when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb and resource ('List ... administrators'), but it largely restates the tool name List_administrators, adding only 'all' and 'Brivo'. It does not distinguish this global listing from the sibling List_account_administrators or from Get_administrator, so an agent cannot tell the scopes apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. The description never explains when to call this instead of List_account_administrators (account-scoped) or Get_current_administrator, and there are no stated prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Application: Get_applicationBRead-only
Retrieve a single Brivo application by id.
| Name | Required | Description | Default |
|---|---|---|---|
| applicationId | Yes | The Brivo application id, e.g. from Application: List_applications. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds no further behavioral context such as error handling, not-found behavior, or return format. With annotations covering safety, the description provides no additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb and resource. No wasted words; appropriately sized for a simple get tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-id tool with a fully documented parameter and annotations covering safety, the description is nearly complete. It does not state what an application is or what is returned, but no output schema exists and the tool name implies the return. Minor gap only.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter, and the description adds only 'by id', which is already implied by the schema. Baseline 3 applies when the schema fully documents parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Retrieve' and resource 'Brivo application', with scope 'single ... by id'. It does not explicitly differentiate from sibling Application: List_applications in the description itself, though the parameter description references it as the source of ids.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. Usage is implied by 'by id' – call when you have an application id. The parameter description points to List_applications as the id source, but the description itself names no alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Application: List_applicationsCRead-only
List all Brivo API applications.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing further — no note on pagination behavior, result volume, or what an 'application' record contains — so it contributes no behavioral context beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficiently sized, though its brevity reflects under-specification rather than disciplined compression.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with no output schema and fully documented pagination parameters, the description is minimally sufficient. It omits what the returned applications represent and how they differ from authorized applications, which an agent would want before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both offset and pageSize are fully documented in the schema (100% coverage) with defaults and a maximum, so the schema carries the load. The description adds no paging or filtering syntax of its own; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (Brivo API applications), so an agent knows what it retrieves. It does not distinguish itself from the closely named sibling List_authorized_applications, leaving ambiguity about whether these are all registered apps or only the caller's authorized ones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no reference to alternatives such as List_authorized_applications or Get_application. The agent must infer the selection criteria entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Application: List_authorized_applicationsBRead-only
List applications authorized on this account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the useful scoping fact that results are limited to applications authorized on the current account, but says nothing about ordering, pagination, or what an 'authorized' application record contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, correctly sized for a no-argument list operation. Nothing is repeated or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param, no-output-schema read, the description is minimally adequate but omits pagination/return-shape expectations and, more importantly, the distinction from the sibling List_applications. It is enough to call the tool but not enough to call the right one with confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies for a parameterless operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List applications') and adds an account-level scope qualifier ('authorized on this account'), so the agent knows what is being enumerated. However, it never distinguishes this tool from the sibling List_applications, leaving the key question of why two list-applications tools exist unanswered.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as List_applications or Get_application. The agent must infer from the name alone which of the two application-listing tools to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Assignments: Get_admin_assignmentsBRead-only
Retrieve the site/group assignments configured for an administrator.
| Name | Required | Description | Default |
|---|---|---|---|
| administratorId | Yes | The Brivo administrator id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond restating that it retrieves data—no return format, pagination, auth requirements, or rate-limit details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the core action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, one well-documented parameter, and read-only annotations, the description is minimally adequate. However, because there is no output schema, it could have clarified the return structure or pagination behavior for a list-style retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single administratorId parameter is fully documented in the schema. The description does not add any meaning beyond what the schema already provides, making the baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Retrieve') and resource ('site/group assignments configured for an administrator'), making the tool's purpose clear. It does not explicitly differentiate itself from siblings such as Get_administrator or List_administrator_roles, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or sibling tools that might also return administrator-related data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Camera: Get_cameraARead-only
Retrieve a single Brivo camera by id.
| Name | Required | Description | Default |
|---|---|---|---|
| cameraId | Yes | The Brivo camera id, e.g. from Camera: List_cameras. | |
| showStatus | No | Include live camera status with the result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read profile is covered. The description adds no further behavioral context such as whether the status is live vs cached or any auth/rate-limit constraints, so it neither helps nor contradicts 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource and lookup key front-loaded and zero filler. Nothing could be trimmed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-entity read whose annotations cover safety and whose schema covers both parameters, the description is minimally adequate. With no output schema, it does not hint at what the returned camera object contains, leaving a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both cameraId and showStatus are already documented in the schema. The description only restates 'by id' and adds nothing about the optional showStatus flag, which is the correct baseline when the schema carries the semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Retrieve), resource (Brivo camera), and scope (single, by id), which cleanly separates it from the sibling List_cameras. It stops short of naming an alternative explicitly, so it is clear but not maximally differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by 'by id' – the agent can infer it is the lookup path when a camera id is known, versus List_cameras for enumeration. There is no explicit when-to-use, when-not, or prerequisite statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Camera: List_camera_access_pointsCRead-only
List the access points associated with a camera.
| Name | Required | Description | Default |
|---|---|---|---|
| cameraId | Yes | The Brivo camera id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered, but the description adds nothing beyond the name: no mention of pagination, result ordering, volume, or whether unassociated cameras return an empty list. For an open-world list endpoint, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is appropriately sized for a one-parameter list tool. It is efficient, though it errs toward under-specification rather than excess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-param read tool with annotations covering the safety profile and no output schema to explain, this is minimally adequate. It omits result-shape and pagination expectations and any routing guidance among the nearby camera/access-point list tools, leaving clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single cameraId parameter is documented in the schema as 'The Brivo camera id.' The description adds no extra meaning such as id format or accepted aliases, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (access points associated with a camera), so an agent can tell what it returns. However, it does not differentiate itself from closely related siblings like Access Point: List_access_point_cameras, which resolves the same relationship in the opposite direction, or Site: List_site_access_points.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use context, no prerequisites (e.g. camera must exist or be enrolled), and never names an alternative. Given siblings such as List_access_point_cameras and List_site_access_points that overlap in scope, the agent is left to guess which list tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Camera: List_camerasCRead-only
List all Brivo cameras.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds no further behavioral context, such as pagination defaults, filter behavior, authentication requirements, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately concise for a simple list operation, though the extreme brevity leaves several gaps that could have been addressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, full schema coverage, and annotations covering safety, the description is minimally sufficient. However, it omits important context about how this tool differs from site- or access-point-scoped camera lists, which could lead to incorrect tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the filter, offset, and pageSize parameters. The description does not add any meaning beyond what the schema already provides, making the baseline of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('List') and resource ('Brivo cameras'), so the agent knows the basic operation. However, it does not differentiate this tool from sibling list tools such as List_site_cameras or List_access_point_cameras, which also list cameras in a narrower scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like List_site_cameras or List_access_point_cameras. The description only states the action, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Camera: List_camera_video_clipsCRead-only
List video clips for a camera within a time range.
| Name | Required | Description | Default |
|---|---|---|---|
| endTime | Yes | End of the time range (ISO 8601), e.g. 2026-01-02T00:00:00Z. | |
| cameraId | Yes | The Brivo camera id. | |
| startTime | Yes | Start of the time range (ISO 8601), e.g. 2026-01-01T00:00:00Z. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. Beyond that the description adds nothing: no clip count limits, no pagination behavior, no retention/availability caveats, and no note on what happens for a time range with no clips.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource and the two scoping dimensions (camera, time range) come first. It is efficient, though almost too terse to be maximally useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter list tool with a fully documented schema and read-only annotations, this is minimally adequate. The absence of an output schema means the description need not explain return values, but it also omits result-volume or pagination expectations that an agent listing clips over a long window would benefit from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter (cameraId, startTime, endTime) documented including ISO 8601 format examples. The description restates the time-range and camera concepts but adds no syntax, boundary, or format meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List video clips') plus a scoping constraint ('for a camera within a time range'), which distinguishes it from sibling camera reads like List_cameras and Get_camera. It does not, however, explicitly name any alternative tool, so differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no mention of alternatives among the many camera/event siblings. The time-range phrasing hints at the retrieval context but does not tell an agent when this tool is preferable to, say, Get_camera or List_access_events.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Control Panel: Get_control_panelBRead-only
Retrieve a single Brivo control panel by id.
| Name | Required | Description | Default |
|---|---|---|---|
| controlPanelId | Yes | The Brivo control panel id, e.g. from Control Panel: List_control_panels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered by structured data. The description adds nothing beyond that: no error behavior for an unknown id, no note on what is returned, and no visibility/authorization caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; nothing needs trimming. It is efficient but borders on under-specified rather than maximally informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity single-resource read with full annotation coverage and a fully documented parameter, the description is nearly sufficient. The one gap is the absence of an output schema, so a brief note on what a control panel record contains would have closed the loop.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema description coverage, the schema already documents controlPanelId and its provenance. The description's 'by id' merely restates the parameter name, adding no syntax, format, or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Retrieve) and resource (Brivo control panel) with scope ('a single ... by id'), which cleanly separates it from the sibling List_control_panels. It does not, however, explicitly distinguish itself from Get_control_panel_firmware, which is the other single-panel getter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, prerequisites, or alternative selection logic. The only routing hint (the id comes from List_control_panels) lives in the schema's parameter description, not in the tool description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Control Panel: Get_control_panel_firmwareBRead-only
Get the firmware version/status of a control panel.
| Name | Required | Description | Default |
|---|---|---|---|
| controlPanelId | Yes | The Brivo control panel id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true, so the safety profile is already covered. The description adds that the call yields firmware version and status, which is useful since there is no output schema, but it says nothing about latency, caching, or failure modes when a panel is offline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with zero filler, front-loading the verb and the returned resource. Nothing to trim and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with full schema coverage and read-only annotations, the description covers the essentials, and its mention of version/status partly compensates for the absent output schema. A note on behavior for unreachable panels would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single controlPanelId parameter is fully documented as 'The Brivo control panel id.' The description adds no format, ID-shape, or lookup guidance beyond what the schema already 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('firmware version/status of a control panel'), which clearly separates it from the sibling Get_control_panel that returns panel details rather than firmware. It is clear and specific, though it does not explicitly name the sibling it complements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as Get_control_panel. The agent must infer that this tool exists for firmware-specific queries from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Control Panel: List_control_panelsARead-only
List all Brivo control panels (door controller hardware).
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful domain context by explaining that control panels are 'door controller hardware', but it does not disclose pagination behavior or result ordering. Given annotation coverage, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero wasted words. It conveys the essential purpose without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list endpoint with full schema parameter coverage, read-only annotations, and no output schema, the description is largely complete. It could mention pagination or when to prefer it over Get_control_panel, but nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (filter, offset, pageSize) are fully documented in the schema itself. The description adds no additional parameter semantics; baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('Brivo control panels'), and clarifies the resource with '(door controller hardware)'. It implicitly distinguishes itself from the sibling singular Get_control_panel and Get_control_panel_firmware tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use guidance, no prerequisites, and does not name alternatives such as Get_control_panel. It simply says 'List all', leaving the agent to infer usage context on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Credential: Get_credentialBRead-only
Retrieve a single Brivo credential by id.
| Name | Required | Description | Default |
|---|---|---|---|
| credentialId | Yes | The Brivo credential id, e.g. from Credential: List_credentials. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds no behavior beyond that: it says nothing about what happens on a missing/unknown id, permission requirements, or what the returned credential contains. For a read tool it is not misleading, but it contributes almost no additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with zero filler and the resource/scope front-loaded. It is efficient, though the extreme terseness leaves nothing to help an agent understand the return or failure behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with a complete one-parameter schema this is adequate. Because there is no output schema, the description could have said what a credential record contains or how errors surface, and that omission leaves a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented, including where to source the id. The description only echoes 'by id' and adds no format, type, or sourcing detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Retrieve') and resource ('Brivo credential') and scopes it to a single item resolved by id, which implicitly distinguishes it from the sibling 'Credential: List_credentials'. It does not name the sibling or any other alternative outright, so it stops short of the 5 threshold.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'by id' and the schema note 'e.g. from Credential: List_credentials', suggesting the agent must first obtain a credential id from the list tool. However, there is no explicit when-to-use/when-not-to-use statement or named alternative, so guidance remains inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Credential: Get_user_by_credentialCRead-only
Retrieve the user a credential is assigned to.
| Name | Required | Description | Default |
|---|---|---|---|
| credentialId | Yes | The Brivo credential id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that - it does not say what happens when the credential is unassigned or invalid, nor what the returned user payload contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no filler, front-loaded with the verb and the relationship being resolved. It is efficient but leaves no room for the extra context a lookup tool benefits from.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, this is minimally adequate. It omits the not-found/unassigned case and any hint about the shape of the returned user, which the agent could otherwise not anticipate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema description coverage is 100% with 'The Brivo credential id.' already documenting it. The description adds no format, range, or lookup semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource pair: retrieve the user assigned to a credential. It is clearly distinct from Get_user (by user id) and List_credentials, but it does not explicitly name or contrast with siblings such as Get_user_by_external_id, leaving the differentiation to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given, and no alternative lookup paths are named. An agent must infer from the name alone that this is the reverse lookup for a credential id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Credential: List_credential_formatsARead-only
List the credential formats available on this account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only that the enumeration is account-scoped; it says nothing about whether results are static, cached, or shaped, which is a modest but not rich addition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, read-only enumeration with annotations covering safety, the one-sentence definition is nearly sufficient. A brief note on what a 'format' represents or how it relates to List_credentials would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. There is nothing for the description to disambiguate beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (credential formats) scoped to the account. It is distinguishable from sibling Credential tools like List_credentials and Get_credential, though the description does not explicitly contrast itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus List_credentials, Get_credential, or the Digital Credentials allotment tools. The agent must infer usage purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Credential: List_credentialsCRead-only
List all Brivo credentials.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing further: no mention of pagination behavior, how the filter interacts with the result set, default ordering, or what a credential record contains. For a paginated list endpoint this is a thin disclosure, though it 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler or redundancy. It is efficient, though its brevity is partly a symptom of under-specification rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, read-only list tool with fully documented parameters and annotations covering safety, the description is minimally adequate. It still omits scope distinctions from sibling list tools and any hint about result volume or pagination, which an agent would benefit from given the max pageSize of 100.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with filter syntax, offset, and pageSize limits all fully documented in the schema. The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource ("List all Brivo credentials"), so an agent knows exactly what operation it performs. However, it offers no differentiation from close siblings such as User: List_user_credentials, Credential: Get_credential, or Credential: List_credential_formats, leaving scope ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus List_user_credentials, Get_credential, or List_credential_formats. No prerequisites, no exclusions, no routing hints are provided; the word "all" is the only hint at scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Current Date Time: Get_current_timeARead-only
Get the Brivo server's current date and time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that the time is from the Brivo server rather than a generic source, which is useful context, but it doesn't disclose format (ISO 8601? epoch?), timezone (UTC?), or whether the value is cached/stale — all of which matter for a clock-reading tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the verb and resource. No filler, no redundancy, and nothing is buried after the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter utility with read-only annotations and no output schema, the description is nearly complete. It could be richer by naming the return format and timezone, since without an output schema the agent must infer how to parse the result, but it covers the essential identity and source of the value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameter count is 0, so the baseline is 4 per the rubric. There are no parameters for the description to clarify, and the description doesn't waste space inventing any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (current date and time) with a clear scope qualifier (Brivo server's). No sibling tool overlaps this function; the only similar tool, List_activities, covers historical event data, not server clock time.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool returns the current time, which is a sufficient cue for a no-parameter utility, but it doesn't state when an agent should call this (e.g., for timestamping events, scheduling checks) or note that it's the authoritative server clock rather than a client clock.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Custom Field: Get_custom_fieldBRead-only
Retrieve a single Brivo custom field by id.
| Name | Required | Description | Default |
|---|---|---|---|
| customFieldId | Yes | The Brivo custom field id, e.g. from Custom Field: List_custom_fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true and openWorldHint=true, the safety profile is already declared, but the description adds nothing beyond it: no error behavior for a missing/invalid id, no mention of permissions, and no indication of what the returned record looks like. It essentially restates a read operation the annotations already characterize.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the verb and resource front-loaded and zero filler. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description would need to carry the burden of describing the returned custom field object, and it does not. For a simple single-record retrieval the purpose is complete, but the return shape is left entirely unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single required parameter, so the schema fully documents customFieldId including its provenance. The description adds no format or type guidance beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Retrieve) and resource (a single Brivo custom field) plus the lookup key (by id), which cleanly separates it from the sibling List_custom_fields. It does not explicitly name that sibling, so it stops 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use statement, but the single-record-by-id framing makes the intended usage against List_custom_fields reasonably inferable. Nothing tells the agent what to do if the id is unknown or whether the list tool is the required discovery path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Custom Field: List_custom_fieldsCRead-only
List all Brivo custom fields.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | Yes | Skip the first N results. Default: 0. | |
| pageSize | Yes | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: no note on pagination behavior, result ordering, or the fact that offset/pageSize are required despite having defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste. It is efficient, though the brevity is closer to under-specification than tight writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with full schema coverage and read-only annotations, the description is minimally sufficient. It omits pagination/ordering expectations and any mention of what a custom field object contains, which would help an agent plan follow-up calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters document their defaults and max, so the schema carries the load. The description adds no parameter meaning beyond what the schema provides, which is the baseline 3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (List) and resource (Brivo custom fields), so the agent knows exactly what is returned. It does not differentiate from the sibling Get_custom_field or List_user_custom_fields, which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus Get_custom_field for a single field, or versus List_user_custom_fields for user-scoped values. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Digital Credentials: Get_allegion_credential_allotmentBRead-only
Get the Allegion digital credential allotment for this account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered by structured data. The description adds nothing beyond that — no note on auth requirements, whether the allotment is account-scoped or shared, or what the response represents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource front-loaded and no filler. It is appropriately sized but too thin to earn a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no parameters, so the description carries the full explanatory burden, yet it does not describe what an 'allotment' contains (counts, limits, remaining balance) or how it relates to the sibling credential-allotment tool. Adequate but with a clear gap for a domain-specific concept.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The implicit 'this account' scoping is the only semantic content and it is stated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and a specific resource (the Allegion digital credential allotment for this account), so the agent knows exactly what is fetched. However, it never distinguishes itself from the near-identical sibling 'Digital Credentials: Get_credential_allotment', leaving the vendor qualifier unexplained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the sibling Get_credential_allotment, nor any mention of prerequisites or conditions. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Digital Credentials: Get_credential_allotmentBRead-only
Get the digital credential allotment for this account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing behavioral beyond that—it does not explain what an 'allotment' represents (a count, a limit, a quota reset cycle) or whether the value is account-wide or per-credential-type.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource front-loaded and no wasted words. It is efficient, though its brevity reflects under-specification rather than disciplined tightening.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no parameters, so the description must carry the meaning of the returned value—yet it never defines what an 'allotment' is or how it differs from the allegion credential allotment sibling. It is minimally adequate for a zero-arg read call but leaves the key domain concept unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, and the schema coverage is 100%, so there is no parameter semantics for the description to compensate for. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (digital credential allotment) scoped to 'this account', which is clearer than a bare tautology. However, it does not distinguish itself from the sibling 'Get_allegion_credential_allotment', leaving the agent to guess which allotment tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the near-identical sibling tool 'Get_allegion_credential_allotment' or when this generic allotment should be preferred over that one. The agent receives no routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Digital Credentials: Get_user_digital_credentialBRead-only
Retrieve the current user's digital credential.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read profile is covered. The description adds only the mild context that the lookup is implicitly scoped to the authenticated user rather than an arbitrary one, but says nothing about auth requirements, credential state, or what happens when no credential exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is appropriately sized, though it errs toward under-specification rather than being padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read with annotations covering the safety profile and no parameters to document, the description is close to sufficient. With no output schema, however, it gives no hint about what a 'digital credential' payload contains or how absence is signaled, leaving a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case; the description's phrase 'the current user's' usefully explains why no identifier is accepted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Retrieve') and resource ('the current user's digital credential'), which distinguishes it from sibling allotment tools like Get_credential_allotment and from credential lookups like Get_credential. It is clear what the tool returns, though it does not name a sibling it is explicitly not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus the many other credential-related siblings (List_credentials, Get_credential, Get_user_by_credential, Get_allegion_credential_allotment). The agent must infer the use case from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Digital Invitations: List_user_digital_invitationsCRead-only
List the digital invitations issued to a user.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Skip the first N results. Default: 0. | |
| userId | Yes | The Brivo user id. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the per-user scoping idea and says nothing about pagination behavior, filtering scope, or result shape beyond what the schema/annotations supply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero filler. It is efficient, though perhaps almost too terse for a tool with a filter/pagination surface.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With complete annotations and full schema coverage, the thin description is close to adequate for a simple read-list tool. The lack of an output schema and any mention of pagination or filtering behavior leaves a small gap an agent must infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so filter syntax, offset, userId, and pageSize are all fully documented in the schema. The description adds no parameter meaning on top of that, which lands at the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb (List) and resource (digital invitations) plus the scoping qualifier 'issued to a user', so the agent knows exactly what this returns. It does not, however, distinguish this from adjacent digital-credential tools like Get_user_digital_credential, so sibling differentiation is absent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives, nor any prerequisites or exclusions. The phrase 'issued to a user' implies a per-user lookup but stops short of any routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Emergency Scenario: List_active_emergency_scenariosBRead-only
List emergency scenarios currently active.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the 'active' filter dynamic and says nothing about ordering, pagination behavior beyond the schema, or freshness of 'active' status, so it adds little beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the scope front-loaded and zero filler. It is appropriately sized, though its brevity is partly under-specification rather than pure economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description need not cover returns, and parameters are fully schema-documented. However, for a list tool with a near-identical sibling, the missing disambiguation from List_emergency_scenarios leaves a real gap for correct tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (offset, pageSize) are fully documented in the schema with defaults and a max. The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('List') and resource ('emergency scenarios') with a scope qualifier ('currently active'). It is understandable on its own, but it never names or distinguishes itself from the sibling List_emergency_scenarios, so the agent cannot tell from the description alone whether this is the filtered or unfiltered variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'currently active' phrasing implies usage (use when you want only active scenarios), but there is no explicit when/when-not guidance and no alternative named. The obvious alternative, List_emergency_scenarios, is left for the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Emergency Scenario: List_emergency_scenariosARead-only
List all configured emergency scenarios (lockdown/egress).
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only that these are configuration objects with two named types; it says nothing about pagination behavior or result volume despite offset/pageSize being the only controls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the core action and scope come first and the type qualifier follows. Nothing can be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list with two fully documented optional params and no output schema, the description is close to sufficient. However, it never disambiguates against List_active_emergency_scenarios, which is the one piece of context an agent actually needs when choosing between the two.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both offset and pageSize are already fully documented with defaults and maximums. The description adds no parameter meaning beyond the schema, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (emergency scenarios), with the qualifier 'all configured' and the parenthetical '(lockdown/egress)' clarifying the domain. It implicitly contrasts with the sibling List_active_emergency_scenarios via 'configured', but never names that sibling, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer this is for browsing the full set of defined scenarios rather than currently-triggered ones, but no explicit when-to-use, when-not-to-use, or alternative (List_active_emergency_scenarios) is stated. A sibling exists that makes the distinction important.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Events: Count_access_eventsCRead-only
Count access events matching a filter.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description carries a lighter burden, but it adds nothing behavioral: it doesn't say what happens when no filter is supplied (count everything?), whether the count is paginated/truncated, or what precision to expect. No added value beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. It is efficient, though arguably too terse to be maximally useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the return value (an integer count) is reasonably obvious, and there are no nested objects or enums to worry about. Still, an optional-parameter count tool should say what an omitted filter means; that gap keeps it at minimum-viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single filter parameter is fully documented in the schema with syntax, operators, separators, and an example. The description's phrase 'matching a filter' merely restates the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Count) and resource (access events) scoped by a filter, which implicitly separates it from List_access_events and from Count_audit_events. It is clear, but never names or contrasts with those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to choose a count over List_access_events, nor on the fact that the filter is optional. The agent must infer that this is the aggregation-oriented alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Events: Count_audit_eventsCRead-only
Count audit events matching a filter.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it does not say what is returned (an integer count), how a missing filter behaves, or whether the count is bounded by pagination. For a read-only counting tool the bar is lower, but there is essentially zero added context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the operation front-loaded and no filler. It is efficient, though its brevity borders on under-specification for a tool with a multi-operator filter grammar.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description could have stated the return shape (a count) and the behavior of an absent filter, but does not. The filter grammar is fully covered by the schema and annotations cover safety, so nothing critical is missing for invocation, but the result contract is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema itself documents the Brivo filter syntax, operators, and separators in detail. The description only restates that a filter exists, adding no syntax or semantic detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (count) and resource (audit events) with the scoping condition (matching a filter). It implicitly separates itself from the sibling List_audit_events by being a counting operation, but never explicitly names that distinction, so an agent must infer it from the verb alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given. The description does not point to List_audit_events or Count_access_events as alternatives, nor does it explain when a count is preferable to listing. Usage is only inferable from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Events: List_access_eventsBRead-only
List access events (door opens, denied attempts, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Resume from this offset - use the minimum 'occurred' value from the last page read, not a plain integer index. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read profile is covered structurally. The description adds the event content types (door opens, denied attempts), which is useful context, but says nothing about pagination, result volume, or time-range defaults – relevant for a potentially large event log.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The parenthetical examples earn their place by defining the resource's contents.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with fully documented parameters and no output schema, the definition is nearly sufficient – annotations handle safety and the schema handles inputs. The one real gap is disambiguation from List_audit_events and the Count_* siblings, which the description never addresses.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains the filter syntax, the offset-as-occurred-value semantics, and the pageSize bounds. The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (access events) and clarifies the resource with concrete examples (door opens, denied attempts). However, it does not distinguish itself from the sibling Events: List_audit_events, so an agent cannot tell which event stream to choose from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives, despite three closely related siblings (List_audit_events, Count_access_events, Count_audit_events). The agent is left to infer the access-vs-audit boundary on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Events: List_audit_eventsBRead-only
List audit events (administrative changes).
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Resume from this offset - use the minimum 'occurred' value from the last page read, not a plain integer index. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuine domain context by defining audit events as administrative changes, but says nothing about ordering, pagination semantics, or retention that would matter for a listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero wasted words. It is arguably too terse for the tool's role, but there is no padding or redundancy to penalize.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list endpoint with full schema coverage this is minimally viable. However, with no output schema, the description gives no sense of what an audit event record contains or how results are ordered, leaving the agent to guess at the return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the filter syntax, offset resume behavior, and pageSize limits are fully documented in the schema. The description adds nothing about parameters, which is the expected baseline when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (audit events), and the parenthetical '(administrative changes)' disambiguates the resource from the sibling List_access_events family. It stops short of naming that sibling explicitly, so the differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus List_access_events, Count_audit_events, or List_activities. The description gives no context, prerequisites, or exclusions, so the agent must infer the choice from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Event Subscription: Get_event_subscriptionBRead-only
Retrieve a single event subscription by id.
| Name | Required | Description | Default |
|---|---|---|---|
| eventSubscriptionId | Yes | The Brivo event subscription id, e.g. from Event Subscription: List_event_subscriptions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing about behavior on a missing/unknown id, permission requirements, or rate limits, so it neither contradicts nor enriches 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. It is efficient, though its brevity borders on under-specification rather than deliberate economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with full schema coverage and read-only annotations, the description is minimally sufficient. With no output schema, it leaves the return shape and error behavior unstated, which is a modest but real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is already documented in the schema, including the pointer to Event Subscription: List_event_subscriptions. The description repeats the 'by id' concept without adding format, type, or constraint detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieve a single event subscription') and the retrieval key ('by id'), which cleanly separates it from the sibling List_event_subscriptions. It does not explicitly name that sibling as the alternative, so it falls 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the 'by id' phrasing signals that a known identifier is required, and the schema's parameter description points back to the List tool as the source of ids. No explicit when-to-use or when-not-to-use guidance is given in the description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Event Subscription: List_event_subscriptionsBRead-only
List all configured event subscriptions (webhooks).
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered structurally. The description adds essentially nothing beyond the name — no mention of pagination, ordering, or what a subscription record contains — so it contributes little behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the resource front-loaded and zero filler. Nothing could be removed without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple paginated read tool with a fully documented schema and no output schema, the description is minimally adequate. It omits any note that results are paginated or how subscriptions relate to the events/audit-event siblings, but no critical calling information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: filter syntax, offset, and pageSize limits are fully documented in the schema, so the baseline of 3 applies. The description adds no parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List all configured event subscriptions') and clarifies the domain term with '(webhooks)'. It does not explicitly distinguish itself from the sibling Get_event_subscription, though 'List all' vs. a singular Get implies the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus Get_event_subscription or any other sibling. The word 'all' hints at the unfiltered-list use case but no alternative or condition is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Features: Get_featuresBRead-only
Get the features enabled on this Brivo account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the account-scoping qualifier ('on this Brivo account') and the 'enabled' filter; it says nothing about pagination, return shape, or whether disabled features are excluded.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Nothing to trim and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, a one-line description is close to sufficient, but the unresolved overlap with 'List_account_features' is a real gap an agent would need to resolve before choosing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies. There is no parameter meaning for the description to supply or omit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Get') and resource ('the features enabled on this Brivo account'), and the 'enabled' qualifier narrows scope usefully. It does not, however, differentiate itself from the sibling 'Account: List_account_features', leaving an agent unable to tell the two apart from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of the obvious alternative 'List_account_features'. The agent must infer usage entirely from the name and scope phrase.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Group: Get_groupBRead-only
Retrieve a single Brivo access group by id.
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | The Brivo group id, e.g. from Group: List_groups. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered elsewhere. The description adds no behavioral context beyond 'Retrieve' — nothing on what is returned, error behavior for an invalid id, or authorization needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler or redundancy. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple id-based read, annotations cover safety and the schema covers the sole parameter, so the core is adequate. However, with no output schema and no statement of what is returned, the definition is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema coverage, the schema fully documents groupId, including its origin from List_groups. The description only echoes 'by id' and adds no format or constraint detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Retrieve) and resource (Brivo access group), scoped to a single item by id, which implicitly separates it from the plural List_groups sibling. It stops short of explicitly naming the alternative, so differentiation relies on the agent noticing 'single' vs the sibling's 'List'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance or alternatives are stated. The only routing hint ('e.g. from Group: List_groups') lives in the schema's groupId description, not in the tool description, so the description itself offers no usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Group: List_group_access_point_permissionsBRead-only
List the access points a group has permission on.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Skip the first N results. Default: 0. | |
| groupId | Yes | The Brivo group id. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing further: it does not mention pagination behavior, default result limits, or what the endpoint does when the group has no permissions, leaving the behavioral burden entirely on structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the scope qualifier arrives before any potential ambiguity. Nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter paginated list tool with no output schema, the description is minimally adequate: annotations cover safety and the schema covers parameters, but it never signals that results are paginated or what an empty permission set looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the filter, offset, pageSize, and groupId parameters are already fully documented in the schema. The description adds no filtering, pagination, or id-format detail beyond what is structured, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (access points) with a clear scope qualifier (that a group has permission on). This makes it distinguishable from the reverse-direction sibling List_access_point_groups, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as List_access_point_groups or List_site_access_points. The intended usage must be inferred from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Group: List_groupsCRead-only
List all Brivo access groups.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it does not mention that results are paginated (despite offset/pageSize existing), give any hint of result volume, or explain filter behavior. It restates the name rather than adding behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single eight-word sentence with no padding or redundancy, appropriately front-loaded with the verb. It is concise but so minimal that brevity comes at the cost of usefulness rather than from tight editing of richer content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list endpoint with full schema coverage, annotations, and no output schema, the description is minimally sufficient. It omits pagination behavior and any relationship to the other group-listing endpoints, which an agent operating across this large sibling set would benefit from knowing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – filter syntax, default offset, and the 20/100 pageSize bounds are all documented in the schema. The description contributes no additional parameter meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ("List all Brivo access groups"), so the agent knows this returns group records. However, it does nothing to distinguish this from the many similarly named siblings that also list groups (List_site_groups, List_user_groups, List_access_point_groups), leaving the agent to infer scope from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives such as Get_group for a single group or List_group_users for membership. The description is a bare statement of existence with no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Group: List_group_usersCRead-only
List the users belonging to a group.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Skip the first N results. Default: 0. | |
| groupId | Yes | The Brivo group id. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no note on pagination behavior, ordering of results, or whether membership includes indirect/inherited users.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It is appropriately sized, though it is arguably too terse to carry any additional value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with a fully documented schema and clear annotations, the description is minimally adequate. It omits pagination semantics and how it relates to the inverse List_user_groups tool, which are the only remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with offset and pageSize defaults/maxima documented inline and groupId described. The description adds no parameter meaning beyond 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List the users belonging to a group'), which is unambiguous. It does not, however, distinguish itself from closely related siblings such as List_user_groups (the inverse relation) or List_users, so an agent gets no help disambiguating direction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus List_users, List_user_groups, or Get_group. The description only restates the operation, leaving the agent to infer that it should be used when the group is the known entry point.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Holidays: Get_holidayBRead-only
Retrieve a single holiday by id.
| Name | Required | Description | Default |
|---|---|---|---|
| holidayId | Yes | The Brivo holiday id, e.g. from Holidays: List_holidays. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: no note on not-found behavior, error handling, or whether the holiday is returned in full or summarized.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with zero filler or redundancy. Every word earns its place for a single-parameter lookup tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial read-only lookup with one fully documented parameter and no output schema, the definition covers the essentials. The only missing context is error/not-found behavior, which is minor at this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single holidayId parameter is fully documented in the schema, including its origin (from Holidays: List_holidays). The description's 'by id' adds no syntax, format, or accepted-type detail beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (retrieve) and resource (a single holiday) plus the lookup key (by id), which implicitly separates it from the sibling List_holidays. It is clear but does not explicitly name or contrast with that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'single holiday by id' signals a point lookup versus the bulk List_holidays, and the schema description hints the id comes from List_holidays. There is no explicit when-to-use, when-not-to-use, or named alternative in the description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Holidays: List_holidaysCRead-only
List all configured holidays.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. However, the phrase 'all configured holidays' implies an unfiltered full dump, which is misleading given the schema exposes filter/offset/pageSize; nothing is said about pagination limits or that results are paginated by default.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource front-loaded and no wasted words. Brevity here borders on under-specification rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paginated list tool with three optional parameters and no output schema, the description omits any mention of filtering, pagination behavior, or result ordering. The 'all configured' phrasing actively undersells the tool's capabilities.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents filter, offset, and pageSize including syntax and defaults. The description adds nothing beyond the schema, which is the baseline-3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (List) and resource (holidays) with the scope qualifier 'all configured'. It does not explicitly distinguish itself from the sibling Get_holiday, but the list/get split is implicit in the naming and the 'all' wording.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no mention of the sibling Get_holiday, and no indication of when filtering or pagination should be applied. The agent is left to infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Pass: Get_mobile_passBRead-only
Get the current user's Brivo mobile pass.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read nature is covered by structured data. The description adds useful scoping context by saying 'the current user's', implying it operates on the authenticated identity with no ID argument required. It does not describe the return payload or whether the pass is cached/regenerated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is exactly as long as the information it carries.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining what is returned, and 'mobile pass' is left undefined — an agent cannot tell whether it receives an image, a token, a URL, or metadata. For a zero-parameter read tool this is the main gap, though the core operation is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The phrase 'current user's' usefully clarifies that no user identifier is accepted and the subject is implicit from authentication, which is the only parameter-relevant information available.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (the current user's Brivo mobile pass), which is clearly distinguishable from the sibling GET tools such as Get_user or Get_credential. It stops short of explaining what a 'mobile pass' is or how it differs from other credential retrieval tools, but the action itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites, and no mention of alternatives. An agent must infer entirely from the name that this is the tool for retrieving a mobile pass rather than Get_user_digital_credential or Get_credential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Role: List_rolesBRead-only
List all Brivo administrator roles.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered structurally. The word 'all' implies no filtering or pagination, which is a small useful signal, but nothing is said about result size, ordering, or whether roles are scoped to an account.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste. Nothing is padded or restated from the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-param list tool with no output schema, the description is minimally adequate, but it never clarifies the relationship to List_administrator_roles or describes the shape of a returned role. There is no output schema to offload that responsibility to.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so per the rubric the baseline is 4. The description correctly implies no filtering inputs exist, consistent with the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('List all Brivo administrator roles'), so the operation is unambiguous. It does not, however, differentiate itself from the sibling List_administrator_roles, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus List_administrator_roles, Get_admin_assignments, or any of the other role/permission-adjacent siblings. The agent is left to guess at the boundary between 'roles' and 'administrator roles'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Schedule: Get_scheduleBRead-only
Retrieve a single Brivo schedule by id.
| Name | Required | Description | Default |
|---|---|---|---|
| scheduleId | Yes | The Brivo schedule id, e.g. from Schedule: List_schedules. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing further – no error behavior for a missing id, no auth/permission requirements, no note that the resource is fetched live. With annotations doing the work, this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and resource, with zero filler. It is appropriately sized for a trivial single-resource read, though it is almost too terse to add value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with full schema coverage and annotations carrying the safety profile, the description covers what's needed to invoke it. Absence of return-value detail is acceptable given no output schema and the obvious 'returns a schedule' semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is documented in the schema itself (including the hint to get it from List_schedules). The description's 'by id' only restates the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Retrieve') and resource ('a single Brivo schedule'), and the 'single ... by id' phrasing distinguishes it from the sibling List_schedules. It's clear without opening the schema, though it doesn't explicitly name the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'a single schedule by id' contrasts with listing, but the description never states when to prefer this over List_schedules or what to do if the id is unknown. No explicit 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.
Schedule: List_schedulesCRead-only
List all Brivo schedules.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: it does not mention pagination behavior, default page sizes, or that results are filtered/paged rather than truly "all," which could mislead given the 20-default/100-max pageSize.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient, though its brevity is partly the cause of the missing usage and behavioral context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list endpoint with strong annotations and a fully documented schema, the bare description is minimally adequate. However, it gives no hint that filtering and pagination exist, so an agent reading only the description might not realize results are capped or that a filter parameter is available.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so filter, offset, and pageSize are fully documented in the schema. The description contributes no additional parameter meaning, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (Brivo schedules). The word "all" implicitly distinguishes it from the sibling Get_schedule, which returns a single schedule, though it does not name that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no explicit routing to alternatives such as Get_schedule. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Site: Get_siteBRead-only
Retrieve a single Brivo site by id.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | The Brivo site id, e.g. from Site: List_sites. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is fully covered by structured data. The description adds nothing beyond that — no error behavior for an invalid or missing id, no note on what fields come back, no auth or scoping constraints. With annotations doing the work, this is a bare restatement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the verb, cardinality and lookup key are all in the opening clause. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial single-resource read with annotations covering safety and a fully documented schema, almost nothing more is needed. The only missing piece is what happens on a nonexistent id (error vs empty), which is a minor gap rather than a blocker.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is only one parameter, so the schema already documents the accepted types (string|number) and even an example source. The description contributes no additional meaning about the identifier format. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Retrieve a single Brivo site') and scopes it to lookup by id, which separates it from the many Site: List_* siblings. It does not distinguish itself from Get_site_proximity, the one sibling whose name is closest, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent can infer 'use this when you have a siteId and need one site,' and the schema note 'e.g. from Site: List_sites' hints at provenance. There is no explicit when-not-to-use or pointer to alternatives such as Get_site_proximity for location data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Site: Get_site_proximityARead-only
Get proximity (Bluetooth/WiFi mobile-pass) information for a single site.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | The Brivo site id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description usefully adds what kind of data is returned (Bluetooth/WiFi mobile-pass proximity), but says nothing about permissions, error behavior, or whether proximity data may be absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and the resource, with zero filler. Nothing could be removed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool with no output schema, the description adequately identifies the resource and hints at the payload content. It could be slightly richer about what the proximity record contains, but nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (siteId) with 100% schema description coverage ('The Brivo site id.'), so the schema does the heavy lifting. The description's 'for a single site' merely restates the cardinality without adding format or sourcing detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get), resource (proximity information) and scope (a single site), and clarifies the data type as Bluetooth/WiFi mobile-pass. The 'single site' scoping implicitly distinguishes it from the List_sites_proximity sibling, but it never names that sibling, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a single site' implies this is the per-site lookup as opposed to the bulk List_sites_proximity call, which is reasonable implied guidance. However, there is no explicit when-to-use/when-not statement and no mention of prerequisites such as needing a valid siteId.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Site: List_root_sitesBRead-only
List Brivo root sites (top-level sites with no parent).
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds conceptual scoping ('no parent') but nothing about pagination behavior, result ordering, or what happens with offset/pageSize beyond interacting with an empty root set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the key scoping qualifier front-loaded in parentheses. No filler, nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list endpoint with full schema coverage, the description covers the essentials. It would benefit from stating how root-site listing relates to List_sites and whether parent/child hierarchy is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so filter syntax, offset, and pageSize defaults/max are fully documented in the schema. The description adds no parameter-level meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (Brivo root sites) and defines the scope inline as 'top-level sites with no parent'. This implicitly differentiates it from the broader List_sites sibling, but does not name or contrast that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of the obvious alternative, List_sites, which lists sites generally. The agent must infer from the parenthetical alone whether root-only filtering is desired.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Site: List_site_access_pointsARead-only
List the access points (doors) belonging to a site.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| siteId | Yes | The Brivo site id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile of this read is covered. The description adds only the parent-scoping fact, disclosing nothing about pagination, result size, or filtering behavior beyond what structured fields provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource and the scoping constraint front-loaded, and no filler whatsoever.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple scoped list tool with a fully documented schema and annotations covering the read-only/open-world character, this is nearly complete. The only minor gap is that no output schema exists and the description says nothing about result shape or pagination, though that is not essential here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both siteId and the filter parameter are already fully documented in the schema, including the Brivo filter syntax and operator set. The description only echoes the site-scoping relationship and adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (access points / doors) with a clear scope constraint (belonging to a site). This implicitly distinguishes it from the sibling List_access_points, which is global, but the description never names that sibling to make the distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'belonging to a site' phrasing implies usage context (use this when you have a siteId and want its doors), but there is no explicit when-to-use, when-not-to-use, or named alternative such as List_access_points. Guidance is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Site: List_site_camerasBRead-only
List the cameras associated with a site.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | The Brivo site id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the scoping relationship to a site; it says nothing about pagination, result size, or what happens with an invalid/nonexistent siteId, so it adds modest value on top of structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler or redundancy. It is arguably too terse for the breadth of the sibling list, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool this is minimally adequate, but with no output schema the description could have told the agent what a camera entry contains or how results are ordered/limited. It covers the scope but not the expected return.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage ('The Brivo site id.'), so the baseline is 3. The description's phrase 'associated with a site' restates the schema rather than adding format, type, or lookup guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('cameras') with a scoping qualifier ('associated with a site'). However, it does not distinguish itself from close siblings such as Camera: List_cameras, Access Point: List_access_point_cameras, or Camera: List_camera_access_points, leaving the agent to infer the difference from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. An agent cannot tell from the description when this should be chosen over List_cameras or List_access_point_cameras.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Site: List_site_groupsARead-only
List the access groups associated with a site.
| Name | Required | Description | Default |
|---|---|---|---|
| siteId | Yes | The Brivo site id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe read against live data. The description adds the site-scoping constraint but says nothing about pagination, result volume, or return shape, so it contributes only modest context beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the resource front-loaded and zero filler. It is appropriately sized for the tool's simplicity, though it is minimal enough that it could afford one more clause of guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only list tool with full schema coverage and annotations declaring the safety profile, the description is adequate. No output schema exists, so return values need not be explained; the only soft gap is the absence of pagination or scoping caveats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter (siteId) with 100% schema description coverage, so the schema already carries the semantics. The description adds no format, type, or constraint detail beyond 'associated with a site', making this a baseline case where structured data does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (access groups) with clear site scoping. It distinguishes itself from the sibling site-scoped lists (List_site_access_points, List_site_cameras) by naming 'access groups', though it does not explicitly separate itself from Group: List_groups at the account level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and description - list groups for a given site - but there is no explicit when-to-use, when-not-to-use, or pointer to an alternative such as Group: List_groups or List_group_users. The site-scoping is the only routing signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Site: List_sitesBRead-only
List all Brivo sites.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds no behavioral context such as pagination behavior, filtering effect, or response characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately sized for a simple list operation, even if it is under-informative elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema fully documents the optional filter and pagination parameters, and annotations cover the safety profile. However, the description does not clarify scope versus filtered results or distinguish this list from sibling site-listing tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema itself documents filter syntax, offset, pageSize, defaults, and maximums. The description adds no parameter meaning beyond the schema, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'List' and 'sites.' It does not differentiate this tool from siblings such as List_root_sites, List_sites_proximity, or Get_site.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor any mention of prerequisites or exclusions. The agent must infer all usage context from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Site: List_sites_proximityARead-only
List proximity (Bluetooth/WiFi mobile-pass) information across all sites.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds only the domain meaning of 'proximity' (Bluetooth/WiFi mobile-pass); it says nothing about pagination behavior, ordering, or volume, which would matter for an all-sites listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the resource and its scope are stated immediately, and the parenthetical definition earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter, read-only list tool with no output schema, the description is adequate but thin: an agent gets no sense of what a proximity record contains or how results are ordered. It is minimally sufficient rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and fully documents offset and pageSize including defaults and max, so the baseline of 3 applies. The description adds no parameter-level detail beyond the schema, which is acceptable here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (proximity information) plus scope (across all sites), and parenthetically defines what proximity data means (Bluetooth/WiFi mobile-pass), which is genuinely clarifying. It does not explicitly contrast itself with the sibling Get_site_proximity, though the 'across all sites' scope implies the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the plural/all-sites framing suggests the bulk-listing counterpart to Get_site_proximity, but there is no explicit when-to-use, when-not-to-use, or named alternative. An agent can infer the case but is not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
User: Get_batch_job_statusBRead-only
Check the status of a batch job (e.g. a batch user/group assignment).
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | The batch job id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is known. The description adds no behavioral details beyond that, such as polling behavior, auth requirements, or what the status values mean.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that communicates purpose and scope with zero waste. It is appropriately sized for a simple status-check tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, full schema coverage, and annotations covering the safety profile, the description is complete enough for correct invocation. It does not explain return values, but no output schema exists and the task is straightforward.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented in the schema. The description does not add any meaning beyond the schema, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Check) and resource (batch job status), with an example clarifying the scope (batch user/group assignment). Does not explicitly differentiate from siblings, though none are directly competitive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context implies when to use it (when you have a batch job and need its status), but there are no explicit alternatives, exclusions, or when-not conditions. Usage 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.
User: Get_userARead-only
Retrieve a single Brivo user by id.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | The Brivo user id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe external read. The description adds only that a single record is returned, with no mention of not-found behavior or errors, though the lower bar set by annotations makes this acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; verb and resource come first and nothing is repeated or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read whose safety profile is covered by annotations and whose parameter is fully described by the schema, the description is largely sufficient. It stops short of noting not-found or permission-failure behavior, which would complete a single-record getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented as the Brivo user id. The description's 'by id' merely echoes the schema and adds no format, type, or sourcing detail, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Retrieve), resource (Brivo user), and scope (a single one) keyed by id. The 'by id' qualifier implicitly distinguishes it from siblings like Get_user_by_external_id and Get_user_by_credential, but those alternatives are never named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'by id' suggests it applies when the caller holds a Brivo internal id rather than an external id or credential, but no explicit when-to-use or alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
User: Get_user_by_external_idARead-only
Retrieve a user by their external (third-party system) id.
| Name | Required | Description | Default |
|---|---|---|---|
| externalId | Yes | The user's external id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the useful context that the key comes from a third-party system, but says nothing about not-found behavior or what identity fields are returned, which is a gap for an open-world lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, zero waste, and the disambiguating qualifier is front-loaded where the agent will see it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool whose annotations carry the safety profile, the definition is close to sufficient. It lacks any statement about the response shape or lookup failure, which is minor given the absence of an output schema and the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema coverage, the schema already documents externalId, and the baseline is 3. The description's parenthetical '(third-party system)' clarifies the id's provenance slightly beyond the schema's 'The user's external id', but adds no format or type guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Retrieve) and resource (user) with a disambiguating qualifier: lookup is by the external/third-party id, not the internal id used by Get_user. This implicitly separates it from Get_user and Get_user_by_credential, but no sibling is named explicitly, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent infers it should call this when it holds an external-system id rather than an internal one. There is no explicit when-to-use statement, no exclusion of alternatives like Get_user or List_users, and no note on what to do if the id is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
User: Get_user_photoARead-only
Get a user's photo. Brivo doesn't document this response's content-type - if it comes back as a non-JSON (likely image) response, this reports its content-type and size rather than the raw bytes.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | The Brivo user id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnlyHint and openWorldHint. The description adds genuinely non-obvious behavior: the response may be non-JSON, and the tool returns content-type and size instead of raw bytes. This is real disclosure beyond annotations, though permissions/error behavior are unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose, and the second sentence earns its length by explaining the unusual response behavior. No filler, though the second clause is slightly convoluted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining the return, and it does so by clarifying that non-JSON responses yield content-type and size rather than bytes. Minor gaps remain about what a successful JSON response contains and error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (userId) with 100% schema description coverage, so the schema already documents it fully. The description adds no meaning beyond the schema, making the baseline of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get a user's photo'), which is clearly distinct from sibling reads like Get_user or Get_user_suspended_status. It does not explicitly name those siblings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource name, but there is no explicit guidance about when to call this vs. Get_user (which may already embed photo info) or any prerequisites/limits. Only the response-behavior note adds context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
User: Get_user_suspended_statusBRead-only
Check whether a user is suspended.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | The Brivo user id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The phrase 'Check whether' weakly implies a boolean-style answer, but the description adds nothing about rate limits, permissions, or what a non-suspended versus unknown user looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with zero filler and the action front-loaded. It is appropriately sized for a one-parameter read tool, though it is lean enough that it borders on under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with one fully documented parameter and no output schema, the description covers the essentials but leaves the response shape unspecified — the agent cannot tell whether it receives a boolean, a status string, or a full user object.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single userId parameter has 100% schema description coverage ('The Brivo user id.'), so the schema carries the load and a 3 is the appropriate baseline. The description adds no extra meaning about id format or accepted sources (e.g., external id vs. internal id).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Check') and a precise attribute of the resource ('whether a user is suspended'), so the agent knows exactly what the call answers. It doesn't distinguish itself from siblings such as Get_user, which plausibly also exposes suspension state, so a 5 is not warranted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives like Get_user or List_users that might already return suspension information. Usage must be inferred entirely from the name and one-line description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
User: List_user_credentialsBRead-only
List the credentials assigned to a user.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | The Brivo user id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds no behavioral detail beyond that — no indication of pagination, ordering, or whether an unknown userId yields an empty list or an error.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that states exactly what the tool returns and for what scope, with zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, single-parameter read tool whose annotations cover safety and whose schema documents the only input, the description is nearly sufficient. It would be fully complete if it noted whether the result is paginated or what a credential entry contains, but no output schema exists so that gap is modest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with 'userId' documented as 'The Brivo user id.' The description adds no format, type-coercion, or lookup semantics beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (credentials) scoped to a user, which distinguishes it from the sibling 'Credential: List_credentials' that lists credentials globally. However, it does not explicitly name that sibling or the related 'Get_user_by_credential' to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g. the user must exist), and no mention of alternatives such as List_credentials. The intended usage is only implied by the phrase 'assigned to a user'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
User: List_user_custom_fieldsARead-only
List the custom field values set on a user.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | The Brivo user id, e.g. from User: List_users. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the scoping nuance that these are per-user values rather than definitions; it says nothing about pagination, permissions, or what happens when no fields are set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with verb and resource, with zero filler or restated title text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with annotations covering safety and a fully documented parameter, the definition is nearly sufficient. It leaves return shape unspecified (no output schema) and does not clarify whether values are returned with their field definitions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single userId parameter already documents its source ('e.g. from User: List_users'). The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List the custom field values set on a user.' The 'set on a user' qualifier implicitly separates it from the sibling 'Custom Field: List_custom_fields' (definitions) and from other User:* listers, but it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: you call it with a userId when you want that user's custom field values. There is no statement of when to prefer this over 'Custom Field: List_custom_fields' or 'User: Get_user', and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
User: List_user_groupsCRead-only
List the groups a user belongs to.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | The Brivo user id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: no indication of whether results are paginated, whether group membership is direct or inherited, or what happens for a user with no groups.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the key concept front-loaded. It is efficient, though it is arguably too terse to earn a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with annotations covering safety, the minimum is met, but with no output schema the description could have said what a returned group looks like or that it returns an empty list for unaffiliated users.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single well-documented 'userId' parameter ('The Brivo user id.'). The description adds no meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('groups a user belongs to') with a clear directionality (user → groups). However, it does not distinguish itself from the sibling 'Group: List_group_users', which is the inverse traversal, so an agent has no textual cue for which direction to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g. the user must exist), and no mention of the inverse 'List_group_users' tool. The agent must infer applicability purely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
User: List_usersCRead-only
List all Brivo users.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Brivo filter syntax: "<field>__<op>:<value>[,<value>...]", operators eq/ne/gt/lt, multiple filters separated by ";". Example: "id__eq:11,22,33;name__eq:Acme". See the per-endpoint reference for which fields are filterable. | |
| offset | No | Skip the first N results. Default: 0. | |
| pageSize | No | Max results to return. Default: 20. Max: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description itself adds no behavioral context such as authentication requirements, rate limits, pagination behavior, or whether the response is filtered or complete. It does not contradict the annotations, but it contributes almost nothing beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately concise, though its extreme brevity leaves no room for useful routing or behavioral structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with full schema coverage and annotations, the description is minimally adequate. It states the operation but omits sibling differentiation and any indication that filters and pagination are supported, so an agent must rely entirely on the schema and annotations for context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents filter, offset, and pageSize in detail. The description provides no additional parameter meaning or syntax, which is the baseline expectation when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb + resource: 'List all Brivo users.' It is not a tautology and an agent can tell it is a listing operation for user entities. However, it does not distinguish this tool from sibling user-related tools such as Get_user or Get_user_by_external_id, which caps the score below 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no conditions or prerequisites, and no naming of alternatives. The description only implies that the tool is for listing users, leaving the agent to infer when to choose it over Get_user, Get_user_by_external_id, or List_user_groups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
75 tool updates
v0.1.0- First observed
Access Point: Get_access_point - First observed
Access Point: Get_access_point_status - First observed
Access Point: List_access_point_cameras - First observed
Access Point: List_access_point_groups - First observed
Access Point: List_access_points - First observed
Account: Get_account - First observed
Account: Get_account_summary - First observed
Account: List_account_administrators - First observed
Account: List_account_features - First observed
Account: List_account_settings - First observed
Account: List_accounts - First observed
Activity: List_activities - First observed
Administrator: Get_administrator - First observed
Administrator: Get_administrator_login - First observed
Administrator: Get_current_administrator - First observed
Administrator: List_administrator_roles - First observed
Administrator: List_administrators - First observed
Application: Get_application - First observed
Application: List_applications - First observed
Application: List_authorized_applications - First observed
Assignments: Get_admin_assignments - First observed
Camera: Get_camera - First observed
Camera: List_camera_access_points - First observed
Camera: List_camera_video_clips - First observed
Camera: List_cameras - First observed
Control Panel: Get_control_panel - First observed
Control Panel: Get_control_panel_firmware - First observed
Control Panel: List_control_panels - First observed
Credential: Get_credential - First observed
Credential: Get_user_by_credential - First observed
Credential: List_credential_formats - First observed
Credential: List_credentials - First observed
Current Date Time: Get_current_time - First observed
Custom Field: Get_custom_field - First observed
Custom Field: List_custom_fields - First observed
Digital Credentials: Get_allegion_credential_allotment - First observed
Digital Credentials: Get_credential_allotment - First observed
Digital Credentials: Get_user_digital_credential - First observed
Digital Invitations: List_user_digital_invitations - First observed
Emergency Scenario: List_active_emergency_scenarios - First observed
Emergency Scenario: List_emergency_scenarios - First observed
Event Subscription: Get_event_subscription - First observed
Event Subscription: List_event_subscriptions - First observed
Events: Count_access_events - First observed
Events: Count_audit_events - First observed
Events: List_access_events - First observed
Events: List_audit_events - First observed
Features: Get_features - First observed
Group: Get_group - First observed
Group: List_group_access_point_permissions - First observed
Group: List_group_users - First observed
Group: List_groups - First observed
Holidays: Get_holiday - First observed
Holidays: List_holidays - First observed
Pass: Get_mobile_pass - First observed
Role: List_roles - First observed
Schedule: Get_schedule - First observed
Schedule: List_schedules - First observed
Site: Get_site - First observed
Site: Get_site_proximity - First observed
Site: List_root_sites - First observed
Site: List_site_access_points - First observed
Site: List_site_cameras - First observed
Site: List_site_groups - First observed
Site: List_sites - First observed
Site: List_sites_proximity - First observed
User: Get_batch_job_status - First observed
User: Get_user - First observed
User: Get_user_by_external_id - First observed
User: Get_user_photo - First observed
User: Get_user_suspended_status - First observed
User: List_user_credentials - First observed
User: List_user_custom_fields - First observed
User: List_user_groups - First observed
User: List_users
TDQS
Scored across 75 tools
Many tools are scope-variant listings of the same underlying resources (e.g., List_sites/List_root_sites/List_sites_proximity, List_access_points/List_site_access_points, List_cameras/List_site_cameras/List_access_point_cameras). Descriptions clarify intent, but the 75-tool set still creates real misselection risk among similar list/get endpoints.
Almost all tools follow a predictable List_/Get_/Count_ + snake_case noun pattern, which is easy to parse. There are minor anomalies such as Get_admin_assignments and the generic List_activities, but the convention is largely consistent.
75 tools is an extreme count for an MCP surface, especially because many are granular read-only list/get endpoints that could be consolidated with filters or pagination. This far exceeds the typical 3-15 well-scoped range and creates a heavy cognitive load.
The surface appears entirely read-only (List, Get, Count); there are no create, update, delete, assign, lock/unlock, or other lifecycle operations. For an access-control domain, this leaves severe gaps in managing users, credentials, groups, sites, and access points.
Maintenance
Related MCP Connectors
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
Read-only MCP tools for AI agent discovery, structured resources, and NIULAI information.
Read-only access to InfluSense influencer discovery, ratings, watchlists, and reports via MCP.
The HubSpot MCP Server acts as a bridge that enables AI assistants and Large Language Models to securely interact with HubSpot CRM data through natural conversation, without requiring users to understand complex API structures. It provides read-only access to standard CRM objects (contacts, companies, deals, tickets, products, invoices, and more) and their associations, secured via OAuth 2.0, allowing AI agents to perform tasks like summarizing deals, fetching company updates, and looking up record changes.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables Claude, Cursor, and other MCP clients to query PeopleForce HRIS data (employees, time-off, recruitment) via 27 read-only tools.284MIT
- FlicenseNot gradedqualityBmaintenanceEnables read-only access to Workday HCM data such as workers, organizations, locations, job profiles, and cost centers through MCP tools an LLM can call.-
- FlicenseAqualityCmaintenanceRead-only MCP server that connects Claude Desktop to the publisher-side Ad Manager API so users can browse networks, saved reports, orders, and line items, and run saved reports to pull their rows into a conversation. No tool mutates data, and per-user OAuth ensures each person inherits only their existing account permissions.5-
- AlicenseAqualityBmaintenanceEnables Claude or any MCP client to read live and historical Sunsynk inverter, battery, and solar data, plus inverter settings, through the Sunsynk Connect cloud API. It is read-only and lets users ask natural-language questions about generation, consumption, charging, and configuration.7MIT