Skip to main content
Glama
MarkAC007

mcp-server-scf

by MarkAC007

mcp-server-scf

CI Security OpenSSF Scorecard Socket.dev

npm version npm downloads install size License: MIT MCP

MCP Registry

TypeScript Node.js

Security compliance controls, frameworks, and risk management for AI agents.

Give your AI assistant access to 1,451 SCF security controls, 354+ framework mappings (NIST 800-53, ISO 27001, SOC 2, FedRAMP, GDPR), evidence tracking, risk registers, and vendor risk management β€” all through the Model Context Protocol.

Built for the SCF Controls Platform. Maintained by ComplianceGenie.io.

πŸ†• The platform is now open-source, self-hosted software. The SCF Controls Platform β€” SCF-native GRC tooling for the free Secure Controls Framework content β€” is published under AGPL-3.0 at scf-controls-platform-oss. Companies download and host it themselves via Docker Compose.

Having trouble? β†’ docs/troubleshooting.md Β· API key setup β†’ docs/authentication.md Β· How it works β†’ docs/architecture.md


Overview

mcp-server-scf connects AI assistants to the SCF Controls Platform via MCP, enabling natural language interaction with your compliance program. Your AI can browse the full SCF control catalog, track implementation progress, manage evidence collection, assess risks, and monitor third-party vendors β€” all without leaving your editor or chat.

224 tools across 15 domains β€” click through for full parameter tables and example prompts:

Domain

Tools

Description

Catalog

8

Browse 1,451 controls, 354+ frameworks, 5,736 assessment objectives, domains and evidence definitions

Control Scoping

15

Track implementation status across an 8-state workflow; bulk scope and unscope by framework; framework coverage, scope-change preview and per-control overrides; obligation basis, materiality, target maturity, procedure links

Evidence

41

Evidence tracking (single + batch), tasks, file review, health, validation, AI assessments and review queues

Risk Management

19

5x5 risk matrix, risk register, scoring updates, approved risk acceptance, custom risks and standards exceptions, control↔risk traceability, risk profile

Vendor Risk (TPRM)

23

Vendor registry, AI research and assessments, certifications, action items, compensating controls

Organization

12

Users, orgs, organisation profile and maturity targets, audit trail, change cursor, work queues, notifications

Capabilities

19

KSI themes, scorecards, evidence posture, systems inventory, system evidence capabilities, catalog + AI recipes

Webhooks

6

Webhook endpoints, delivery logs, secret rotation

Documents

15

ISMS document generation, section editing, merge resolution, lifecycle transitions, export

Audit Engagements

16

Engagement workspaces, frozen scope, framework-native presentation, auditor access, structured queries

Catalog Reconciliation

9

Preview, decide, apply and roll back an SCF catalog version upgrade for your org

Teams

11

Business functions, teams and rosters, team accountability for controls and evidence (single + batch)

Collaboration

7

User assignments to controls, evidence and tasks; comment threads

Guided Journey

4

The staged path an organisation walks, journey templates, import, and named stage attestation

Assurance

19

Control deficiencies, organisation compensating controls, control validation, monthly posture snapshots, capability tests

Which platform operations became tools, which are deferred, and which stay out on purpose is recorded in docs/tool-scope.md.


Related MCP server: Fianu Compliance Intelligence MCP Server

Try it with MCP Inspector

Kick the tires without adding the server to a client β€” MCP Inspector launches a local UI that introspects every tool, its schema, and its description:

npx @modelcontextprotocol/inspector npx -y mcp-server-scf

Inspector opens on http://localhost:6274 and connects to mcp-server-scf over stdio. You'll see all 224 tools, grouped by domain, with their Zod schemas rendered as a live form.

Live tool calls need your instance's URL and an API key β€” export SCF_API_URL and SCF_API_KEY in the same shell before launching Inspector, or set them under the "Environment Variables" tab inside the Inspector UI. Without them, you can still browse schemas and descriptions; tool calls return a configuration error.


Quick Start

1. Self-host the platform & get an API key

The SCF Controls Platform is open-source software you host yourself β€” there is no sign-up. Deploy it from scf-controls-platform-oss (a Docker Compose stack with bundled PostgreSQL, Redis, and MinIO), then:

  1. Set an API_KEY in the platform's .env (generate one with openssl rand -hex 32), or create a key in Settings β†’ API Keys once the app is running.

  2. Note your instance's API URL β€” http://localhost:8000 by default, or your deployed host.

Use that key as SCF_API_KEY and the instance URL as SCF_API_URL (see Configuration).

2. Install β€” one-click

Pick the route for your client.

Claude Desktop β€” the one-click path is the signed .mcpb Desktop Extension below. Claude Desktop does not register a custom URL scheme, so there is no clickable deeplink; instead you drag the .mcpb onto Settings β†’ Extensions and paste your API key once. See anthropics/claude-code#26952 for the upstream tracking issue.

Cursor β€” click the badge below. Cursor registers the cursor:// scheme, so the deeplink opens the IDE with the server config pre-filled:

Install in Cursor

After install, edit the pre-filled SCF_API_URL to point at your instance β€” there is no hosted default.

Prefer to edit config by hand, or on a client without a deeplink (Windsurf, Docker)? See 3. Manual config below.

Claude Desktop Extension (.mcpb)

For Claude Desktop β‰₯ 0.11.0, the easiest install is a signed .mcpb bundle β€” no JSON editing, no npx runtime, no Node required on the host:

  1. Download mcp-server-scf-<version>.mcpb from the latest GitHub release.

  2. Double-click the file (or drag it onto Claude Desktop β†’ Settings β†’ Extensions).

  3. When prompted, paste your scf_… API key. It's stored in your OS keychain, not in a config file.

  4. Claude Desktop restarts the server and all 224 tools are available.

To uninstall or update the API key later: Settings β†’ Extensions β†’ SCF Controls Platform β†’ Configure.

3. Manual config

Claude Desktop β€” edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "scf": {
      "command": "npx",
      "args": ["-y", "mcp-server-scf"],
      "env": {
        "SCF_API_KEY": "your_api_key_here",
        "SCF_API_URL": "http://localhost:8000"
      }
    }
  }
}

Claude Code:

claude mcp add scf -- npx -y mcp-server-scf
export SCF_API_KEY="your_api_key_here"
export SCF_API_URL="http://localhost:8000"

Cursor / Windsurf β€” same JSON shape as Claude Desktop in .cursor/mcp.json (or the equivalent Windsurf path).

Docker:

{
  "mcpServers": {
    "scf": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "SCF_API_KEY", "-e", "SCF_API_URL", "markac007/mcp-server-scf"],
      "env": {
        "SCF_API_KEY": "scf_your_api_key_here",
        "SCF_API_URL": "https://scf.your-domain.example"
      }
    }
  }
}

Configuration

Variable

Required

Default

Description

SCF_API_KEY

Yes

β€”

API key from your self-hosted platform instance

SCF_API_URL

Yes

β€”

Base URL of your self-hosted platform (e.g. http://localhost:8000). The former hosted default is decommissioned.


Example Prompts

Once connected, try asking your AI assistant:

  • "What NIST 800-53 controls apply to access control?"

  • "Show me my organization's control implementation progress."

  • "List all critical vendors and their risk scores."

  • "Create a risk assessment for our cloud migration."

  • "What evidence do I need to collect for SOC 2 audit?"

  • "Show the 5x5 risk matrix for my organization."

  • "Run a DPSIA on our cloud provider vendor."

More examples live in each per-domain doc under docs/tools/.


Documentation


Security

  • API keys are never logged or included in error messages.

  • Keys are SHA-256 hashed server-side. Use HTTPS for any instance reachable beyond localhost.

  • Rate limiting: 100 req/min read, 20 req/min write.

  • Multi-tenant β€” all operations scoped to your organization.

  • npm package published with provenance attestation via OIDC trusted publishing.

  • CI includes Gitleaks secret detection, CodeQL analysis, and Semgrep SAST.

See SECURITY.md to report a vulnerability.


Privacy Policy

mcp-server-scf is a stateless connector β€” it stores no user data itself. All data flows directly between your MCP client and your own SCF Controls Platform instance, authenticated with your API key; nothing is sent to, or retained by, any third party. See the full privacy policy for details.


Development

git clone https://github.com/MarkAC007/mcp-server-scf.git
cd mcp-server-scf
npm install
npm run build
npm run dev        # Watch mode
npm run lint       # ESLint
npm test           # Vitest

Testing with MCP Inspector

SCF_API_KEY=scf_your_key npx @modelcontextprotocol/inspector node build/index.js

Contributing

Contributions welcome! Please read CONTRIBUTING.md before submitting PRs.

This project follows the Contributor Covenant β€” see CODE_OF_CONDUCT.md. By participating, you are expected to uphold this code.

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request


License

MIT β€” see LICENSE.


Available Tools

224 tools
scf_accept_riskA

Accept a risk (write β€” admin): records you as approver, now, the rationale and expiry. Renews an accepted risk. Also accepts a standards exception. A platform key without a user gets 403.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
rationaleYesWhy the risk is accepted (required, non-blank; stored trimmed). Blank is refused
risk_codeYesRisk code β€” catalog R-XX-N or custom R-ORG-N β€” obtain from scf_list_risks or scf_list_custom_risks
expires_onYesDate the acceptance lapses (YYYY-MM-DD); must be after today (400 otherwise)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false. The description goes further, disclosing that it marks the caller as approver with a current timestamp, captures rationale and expiry, renews existing acceptances, and returns 403 for a platform key with no associated user. It omits detail on reversibility or partial-failure behavior, keeping it from a 5.

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

Conciseness4/5

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

The core action is front-loaded in the first clause, and every subsequent clause adds a genuine behavior (write/admin classification, approver recording, renewal, exception, auth failure). It is dense but not padded; the middle sentence fragments are slightly clipped but readable.

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

Completeness4/5

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

For a write tool with no output schema, the description covers the action, the admin privilege requirement, the side effects (approver recording, timestamp, expiry), and a specific error path (403 on platform keys). That is nearly everything an agent needs; only the response shape or reversibility would add more.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters with formats, patterns, and validation rules. The description's mention of 'the rationale and expiry' only restates what the schema already conveys, so it adds little beyond the baseline.

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

Purpose5/5

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

Starts with a specific verb+resource ('Accept a risk') and then enumerates its distinct behaviors: recording an approver, renewing an accepted risk, and accepting a standards exception. This distinguishes it clearly from siblings like scf_create_risk and scf_update_risk_assessment.

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

Usage Guidelines4/5

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

The description names the concrete situations of use β€” initial acceptance, renewal of an accepted risk, and standards exceptions β€” so an agent knows when to reach for it versus creating or updating a risk. It does not name alternative tools or an explicit 'when not to use' condition, so it falls short of a full 5.

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

scf_add_capability_test_findingA

Add a finding to a capability test (write β€” editor); it is recorded as a deficiency linked to the test. Refused on a test recorded as passed: correct its result instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesShort title of the finding (1–255 chars, non-blank)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idNoControl the finding is against, if any β€” must be in scope (422 otherwise)
test_idYesCapability test UUID β€” obtain from scf_list_capability_tests
due_dateNoDue date (YYYY-MM-DD)
priorityNoPriority: critical, high, medium, low (platform default medium)
risk_codeNoRisk the finding is against, if any β€” must be assessed
owner_nameNoFree-text owner
root_causeNoWhy the finding arose
descriptionNoWhat was found
owner_user_idNoOwner user β€” must be a member of the organisation (404 otherwise); see scf_list_members

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds real value by disclosing the write's authorization requirement (editor), its side effect (creates a linked deficiency record), and a server-side refusal condition. It does not cover idempotency or duplicate-finding behavior, so it is strong but not exhaustive.

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

Conciseness5/5

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

Two dense sentences, front-loaded with the action and its effect, followed by the precondition. Every clause carries information β€” nothing is redundant or padding.

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

Completeness4/5

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

For an 11-parameter mutation with full schema coverage and annotations declaring the safety profile, the description supplies the missing behavioral context. With no output schema, it does not say what is returned (e.g. the created finding/deficiency identifier), which is a minor remaining gap.

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

Parameters3/5

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

Schema description coverage is 100%, so every one of the 11 parameters is documented inline (including cross-tool hints like scf_list_organizations). The description adds no parameter-level 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.

Purpose5/5

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

States a specific verb and resource (add a finding to a capability test) and immediately discloses the resulting artifact β€” the finding is recorded as a deficiency linked to the test. This lets an agent distinguish it from scf_create_deficiency and scf_update_capability_test without opening either schema.

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

Usage Guidelines4/5

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

Gives an explicit precondition and exclusion: the call is refused on a test already recorded as passed, and the caller should correct the test result instead. It also names the required role (editor). It stops short of naming the sibling tool (e.g. scf_update_capability_test) that performs that correction, so it is clear but not fully routing.

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

scf_add_custom_risk_controlA

Link a control to a custom risk (write β€” editor+), optionally with the document whose standard it is an exception against. Changing an accepted exception's links clears its approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idYesSCF control ID to link (e.g., 'AST-01') β€” obtain from scf_list_scoped_controls
risk_codeYesCustom risk code in R-ORG-N format (e.g., 'R-ORG-1') β€” obtain from scf_list_custom_risks
document_idNoOrganisation document that sets the standard this risk is an exception against β€” obtain from scf_list_documents (404 if not this org's). A link with a document makes the custom risk a standards exception

TDQS

A4.2/5.0
Behavior4/5

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

Goes meaningfully beyond the annotations by disclosing an authorization requirement (editor+) and a non-obvious side effect: changing an accepted exception's links clears its approval. That is exactly the kind of hidden consequence annotations (destructiveHint=false, readOnlyHint=false) cannot convey. It stops short of describing idempotency or conflict/duplicate-link behavior.

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

Conciseness5/5

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

Two compact clauses, front-loaded with the action and scope, with the permission note and the side-effect warning packed in without filler. Every sentence earns its place.

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

Completeness4/5

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

For a 4-parameter mutation with no output schema, the definition covers what it writes, who can call it, and a key side effect, which is most of what an agent needs. Missing minor details such as duplicate-link handling and the shape of the confirmation response.

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

Parameters3/5

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

Schema coverage is 100% and each parameter already documents format plus its source tool. The description restates the optional document semantics ('document whose standard it is an exception against') that the schema property already spells out, so it adds little beyond the structured fields.

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

Purpose5/5

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

States a specific verb (link) and resource (control to custom risk), and the optional document qualification. An agent can distinguish it from siblings scf_update_custom_risk_control, scf_remove_custom_risk_control, and scf_list_custom_risk_controls 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.

Usage Guidelines4/5

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

Specifies the caller precondition ('write β€” editor+') and the optional document use case, which tells the agent when the exception variant applies. It does not explicitly contrast with the update/remove siblings, so alternative-choice guidance is implied rather than stated.

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

scf_add_engagement_auditorA

Grant an existing user read access to one engagement (write β€” admin role). Scoped to that engagement's frozen scope and queries only; re-granting a revoked auditor reactivates the grant.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
user_idYesUUID of an existing user to grant engagement access to β€” obtain from scf_list_members
engagement_idYesAudit engagement UUID β€” obtain from scf_list_engagements

TDQS

A4/5.0
Behavior4/5

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

The description discloses that re-granting a revoked auditor reactivates the grant, a behavioral nuance not covered by annotations. It also clarifies that access is scoped to frozen scope and queries. Since annotations only indicate non-read-only and non-destructive, the description adds valuable behavioral context beyond what annotations provide.

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

Conciseness5/5

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

The description is two sentences, front-loads the main action, and provides essential details without redundancy. Every clause adds informationβ€”the action, the scope, and the reactivation behaviorβ€”making it highly efficient.

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

Completeness4/5

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

For a simple grant operation with three fully documented parameters and no output schema, the description covers the action, scope, and a key edge case (re-granting). It does not explicitly state prerequisites like required admin permissions, but the 'write β€” admin role' hint implies this. Overall, it is sufficiently complete for an agent to call the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter having a clear description including how to obtain the UUID (e.g., from scf_list_organizations). The tool description does not add parameter-specific details beyond what the schema already provides, 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.

Purpose5/5

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

The description clearly states the action: granting an existing user read access to one engagement. It specifies the resource (engagement) and the recipient (existing user), and distinguishes from sibling tools like remove_engagement_auditor. The phrase 'write β€” admin role' adds a slight ambiguity but does not obscure the core purpose.

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

Usage Guidelines3/5

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

The description explains the scope of access (frozen scope and queries only) and mentions the re-grant behavior for revoked auditors, which gives context on when this tool is appropriate. However, it does not explicitly compare to alternatives such as scf_remove_engagement_auditor or scf_list_engagement_auditors, leaving the agent to infer the appropriate use case.

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

scf_add_team_memberA
Destructive

Add an organization member to a team as primary, delegate or member (write β€” admin role). Adding a primary or delegate when the seat is taken demotes the incumbent to member.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
team_idYesTeam UUID β€” obtain from scf_list_teams
user_idYesUser UUID β€” obtain from scf_list_members
membership_roleYesSeat on the team

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses the demotion side-effect (incumbent becomes member) and notes it's a write operation requiring admin. This goes beyond the annotations, which already mark destructiveHint=true, and provides meaningful 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.

Conciseness5/5

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

Two sentences with no filler. The critical behavioral detail (demotion) is included, and the sentence structure front-loads the action and role options.

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

Completeness4/5

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

For a write operation with four well-documented parameters and an explicit demotion rule, the description covers the essential context an agent needs. It doesn't specify return values, but no output schema exists and the behavior is clear enough.

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

Parameters4/5

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

The schema already describes all four parameters with sources for IDs. The description adds semantic meaning for membership_role by explaining the three roles and the demotion rule, which clarifies the enum values beyond the schema's generic 'Seat on the team'.

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

Purpose5/5

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

The description states a specific action ('Add an organization member to a team'), the resource involved, and the allowable roles. It clearly distinguishes from siblings like scf_remove_team_member and scf_update_team by focusing on the add operation and the role semantics.

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

Usage Guidelines4/5

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

The description indicates the operation requires an admin role and explicitly notes the demotion behavior when a seat is taken. It doesn't name specific alternatives, but the context makes when to use this tool unambiguous given the sibling set.

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

scf_apply_catalog_reconciliationA
Destructive

Apply a previewed reconciliation run (write β€” admin role). Asynchronous. The run must be 'previewed' and expected_to_version must match, so a stale preview is refused rather than applied.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
run_idYesReconciliation run UUID β€” obtain from scf_list_reconciliation_runs or scf_preview_catalog_reconciliation
expected_to_versionYesThe target catalog version from the run detail β€” guards against applying a stale preview

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=true), the description adds valuable behavioral context: admin role requirement, asynchronous execution, and the stale-preview guard. It also explains a failure mode (refusing stale previews), which is exactly the kind of info annotations don't convey. This is rich, non-redundant disclosure.

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

Conciseness5/5

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

The description is compact and front-loaded: the core action, authorization, and async nature appear in the first sentence, followed by the key precondition and rationale. Every sentence earns its place; no filler or repetition of schema content.

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

Completeness4/5

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

For a destructive, async write operation with no output schema, the description covers the essential preconditions, auth, and failure behavior. It doesn't explicitly state how to track the async result, but the sibling tool scf_get_catalog_reconciliation_status is present in context, so the agent can discover the next step. Minor gap: no mention of what a successful apply returns or whether it is undoable.

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

Parameters3/5

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

The input schema already covers all three parameters with descriptions, including expected_to_version's role in guarding stale previews. The tool description reiterates the expected_to_version matching condition but adds no new parameter-level semantics. With 100% schema coverage, the baseline of 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Apply a previewed reconciliation run'. It adds context that this is a write operation requiring an admin role, and the 'previewed' qualifier distinguishes it from preview, list, rollback, and cancel siblings. This is a clear, unambiguous statement of what the tool does.

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

Usage Guidelines4/5

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

The description provides clear preconditions: the run must be 'previewed' and expected_to_version must match, with a concrete reason ('a stale preview is refused rather than applied'). This implicitly tells the agent to first obtain a preview before applying. It does not explicitly name alternative tools or exclusions, but the workflow implication is strong enough to guide usage.

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

scf_attest_journey_stageA
Destructive

Pass a journey stage by named attestation (write β€” editor+). The ONLY way a stage passes β€” nothing advances on computed evidence β€” and who attested is recorded. A conditional pass needs target_date.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoWhat was checked, and by whom, in the attester's own words
org_idYesOrganization UUID β€” obtain from scf_list_organizations
stage_idYesJourney stage UUID β€” obtain from scf_get_journey
conditionalNoPass with named items still outstanding (default false). Requires target_date.
target_dateNoWhen outstanding items are due (YYYY-MM-DD) β€” required when conditional is true

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark readOnlyHint=false and destructiveHint=true; the description reinforces this with 'write β€” editor+' and adds that the attester is recorded. It also flags the exclusive side effect ('The ONLY way a stage passes') and the conditional-pass constraint, giving the agent 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.

Conciseness5/5

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

Three short sentences: purpose, exclusivity/side effect, and conditional-pass rule. No filler or repetition of schema property descriptions.

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

Completeness4/5

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

With no output schema and a write/destructive tool, the description covers permission level, what happens when called, and the condition for target_date; the schema covers identifier sourcing. It is complete enough to invoke correctly, though it does not spell out reversibility or response shape.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters, including that conditional requires target_date. The description reinforces the conditional/target_date dependency but does not add new parameter-level meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

Description opens with 'Pass a journey stage by named attestation' β€” a specific verb, resource, and mechanism. It further distinguishes itself by declaring it is 'The ONLY way a stage passes β€” nothing advances on computed evidence', so an agent can see this is the write pathway, not a computed assessment.

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

Usage Guidelines4/5

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

Provides clear when-to-use context: passing is manual/named and nothing advances automatically, so the agent knows not to wait for computed evidence or use a read-only journey tool. It also states conditional passes require target_date. It does not name an alternative tool, but within this domain there is no equivalent stage-passing sibling, so no exclusion is needed.

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

scf_batch_create_team_assignmentsA
Destructive

Assign one team to up to 500 controls or evidence items in one transaction with one aggregate notification (write β€” admin role). The bulk accountability tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesItem kind
org_idYesOrganization UUID β€” obtain from scf_list_organizations
team_idYesTeam UUID β€” obtain from scf_list_teams
item_idsYesItem UUIDs to assign, max 500
is_accountableNoMake this the accountable team (default false)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=true, but the description adds valuable behavior beyond that: it is explicitly a write operation, requires an admin role, executes in one transaction, and produces one aggregate notification. It does not elaborate on side effects like overwriting existing assignments, but it meaningfully exceeds the annotation baseline.

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

Conciseness5/5

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

Two tight sentences with no filler: the core action and limits are front-loaded, followed by a memorable one-line purpose tag. Every clause carries information.

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

Completeness4/5

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

For a batch write tool with five parameters and no output schema, the description covers the essential operational constraints: max batch size, item types, transaction semantics, notification behavior, and role requirement. It could be more complete by mentioning whether prior assignments are replaced, but the essentials for correct invocation are present.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3; the schema already documents org_id, team_id, type, item_ids, and is_accountable. The description reinforces that item_ids target controls or evidence and caps at 500, but it does not add deeper meaning such as the default false behavior of is_accountable or interaction with existing assignments.

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

Purpose5/5

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

The description names a specific verb ('Assign'), a precise resource ('one team to up to 500 controls or evidence items'), and a clear transactional scope. It also adds the tagline 'bulk accountability tool' that distinguishes it from the single-item sibling scf_create_team_assignment and the read-only scf_list_team_assignments.

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

Usage Guidelines4/5

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

The description communicates clear usage context: this is the batch variant, capped at 500 items, for assigning one team across controls or evidence. It does not explicitly name scf_create_team_assignment as the alternative for single assignments, nor state when-not to use it, so it stops short of a 5.

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

scf_batch_update_controlsA

Batch-update up to 500 scoped controls in one transaction (write β€” editor+). Each operation targets an scf_id. Material/MCR controls: no deselect (409); at_risk raises a deficiency.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
operationsYesUpdate operations to apply (1–500 per call)

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: atomic single-transaction semantics, an editor+ authorization requirement, a 409 refusal path for deselecting material/MCR controls, and the non-obvious side effect that at_risk raises a deficiency. These are exactly the traits an agent cannot infer from readOnlyHint=false / destructiveHint=false.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the verb/resource/cap, followed by permission, then the two failure/side-effect rules. No filler or restated title.

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

Completeness4/5

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

For a 2-parameter, 100%-documented batch mutation, the description covers purpose, auth, limits, and error semantics well. The only gap is the response shape β€” there is no output schema, and the description never says whether partial failures return per-operation results or whether the whole transaction rolls back.

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

Parameters3/5

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

Schema description coverage is 100%, so every field is already documented, and the description's scf_id reference and the 409 deselect rule are both restatements of the schema's own `selected` description. Baseline 3 applies since the description adds no new parameter meaning.

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

Purpose5/5

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

States a specific verb (batch-update), resource (scoped controls), and scale/scope (up to 500, one transaction). This clearly differentiates it from the single-record sibling scf_update_scoped_control without the agent needing to open either schema.

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

Usage Guidelines4/5

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

Gives an actionable usage gate (write β€” editor+) and the shape of an operation (each targets an scf_id), which tells the agent when the tool is applicable. It stops short of naming the single-control alternative or stating when a batch is inappropriate (e.g., 1-item updates).

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

scf_batch_update_evidenceA

Create or update up to 500 evidence tracking records in one transaction (write β€” editor role). Each upserts by evidence_id; only fields given change. Use instead of 500 scf_update_evidence calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
operationsYesUpsert operations, max 500 β€” each keyed by evidence_id

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already signal write (readOnlyHint=false) and non-destructive (destructiveHint=false), and the description adds meaningful context beyond that: it runs in one transaction, requires editor role, and applies partial updates so only provided fields change. The 'one transaction' wording also implies all-or-nothing behavior, which is valuable for an agent deciding whether to call this tool.

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

Conciseness5/5

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

Two dense sentences with no filler. The first sentence delivers scope, capacity, atomicity, and role; the second adds upsert semantics and points to the appropriate sibling tool. Every clause earns its place.

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

Completeness5/5

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

For a 2-parameter batch write with a fully described schema, the description covers capacity, transactionality, permissions, partial-update behavior, and sibling routing. No output schema exists, but nothing essential for selecting or calling the tool is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds valuable cross-parameter semantics by stating that each operation is keyed by evidence_id and that only given fields changeβ€”information not fully expressed by individual parameter descriptions. This elevates it above baseline.

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

Purpose5/5

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

The description states a specific verb and resource: create or update up to 500 evidence tracking records in one transaction. It further clarifies the upsert key (evidence_id) and distinguishes this batch operation from single-record tools like scf_update_evidence. There is no ambiguity about what the tool does.

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

Usage Guidelines5/5

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

The description explicitly frames when to use the tool: 'Use instead of 500 scf_update_evidence calls.' It also indicates an access prerequisite (editor role), giving an agent both the trigger condition and the relevant alternative. This is clear routing guidance with no inference required.

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

scf_bulk_assess_evidenceA

Queue AI assessments for multiple evidence files (write β€” editor+ role, async, max 50). Provide evidence_id, file_ids, and/or assess_unassessed. Returns count queued.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
file_idsNoSpecific evidence file UUIDs to assess
evidence_idNoEvidence ID β€” assesses every file under this evidence item
assess_unassessedNoAlso assess every file that has no existing assessment (default false)

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only indicate readOnlyHint=false and destructiveHint=false; the description adds meaningful behavior: the operation is a write, requires editor+ role, is asynchronous, caps at 50 files, and returns a queued count. This goes well beyond the structured annotations.

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

Conciseness5/5

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

Three short sentences pack the essential facts: purpose, role, async behavior, batch limit, input options, and return value. Every clause earns its place and the most important constraints are front-loaded.

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

Completeness4/5

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

For a four-parameter tool with no output schema, the description covers the operation, permissions, async behavior, limits, selector inputs, and return value. It is slightly incomplete in not stating explicitly that at least one of evidence_id/file_ids/assess_unassessed is practically needed to do useful work.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents each parameter. The description's 'Provide evidence_id, file_ids, and/or assess_unassessed' adds minimal grouping guidance but does not meaningfully clarify syntax or semantics beyond the schema.

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

Purpose5/5

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

The description names a specific verb ('Queue'), a specific resource ('AI assessments for multiple evidence files'), and key constraints (write, editor+ role, async, max 50). The bulk scope clearly distinguishes it from single-file assessment tools.

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

Usage Guidelines4/5

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

The description tells the agent what to provide ('evidence_id, file_ids, and/or assess_unassessed') and conveys the async nature and batch limit. It does not explicitly contrast with close siblings like scf_trigger_evidence_assessment, so it stops short of full when-to-use/when-not-to-use guidance.

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

scf_bulk_assess_windowsA

Queue windowed AI assessments for up to 25 evidence IDs (write β€” editor+ role, async). Items without tracking or a frequency set are reported under skipped_detail in the response.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
evidence_idsYesEvidence IDs to assess (e.g., ['E-IAM-01','E-BCM-11']); 1–25 per request

TDQS

A4/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses that this is a write operation requiring editor+ role, that it is async, and that items lacking tracking or a frequency set appear under `skipped_detail`. This meaningfully explains side effects and edge-case behavior, though it does not detail post-queue tracking or partial failure semantics.

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

Conciseness5/5

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

Two sentences with no filler; the core operation is front-loaded, and the parenthetical captures role and async behavior efficiently. The skipped-item behavior is placed where it is actionable.

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

Completeness4/5

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

For a 2-parameter async queue operation, the description covers inputs, role requirement, async behavior, and a key response field (`skipped_detail`). It does not mention how to check the outcome of the queued assessments, but sibling tools exist for that and no output schema is expected.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds the skipped_detail behavior tied to evidence_ids, but does not add new syntax, format, or selection guidance beyond what the input schema already documents.

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

Purpose5/5

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

The description uses a specific verb ('Queue') and resource ('windowed AI assessments'), and scopes the operation to 'up to 25 evidence IDs.' This clearly distinguishes it from the single-item trigger/list/get siblings like scf_trigger_window_assessment and scf_get_window_assessment.

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

Usage Guidelines3/5

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

The description implies batch usage with 'up to 25 evidence IDs' and notes the async write nature, but it does not explicitly state when to prefer this over scf_bulk_assess_evidence or scf_trigger_window_assessment. No exclusions or alternative routing are provided, so the agent has to infer the intended use case.

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

scf_bulk_unscope_frameworkA
Destructive

Unscope every control mapped only to these frameworks (destructive write β€” editor). Shared controls are kept. An MCR framework, or one taking out a material control, needs an admin and a reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
frameworksYesFramework slugs to remove, e.g. ['iso_27017_2015'] β€” obtain from scf_list_frameworks
removal_reasonNoWhy these controls leave scope β€” recorded in the audit trail. Required (400 without it), with an admin key (403 otherwise), when a framework carries an MCR obligation or its removal would take a material control out of scope

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, but the description adds real value: it names the required role ('editor'), discloses what is preserved ('Shared controls are kept'), and describes the escalation path to admin + reason for MCR/material-control cases. It stops short of covering reversibility or restorability, so it is strong but not exhaustive.

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

Conciseness5/5

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

Two tight sentences with zero filler; the destructive/scope semantics and the role requirement are front-loaded, and the qualifier that shared controls survive comes immediately after.

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

Completeness4/5

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

With annotations covering the safety profile and the schema covering all parameters, the description supplies the remaining behavioral context an agent needs (role, preserved controls, escalation). No output schema exists, but the description rightly omits return-value detail, leaving only the audit/rollback behavior unstated.

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

Parameters3/5

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

Schema description coverage is 100%, so org_id, frameworks slugs, and the removal_reason requirement are already documented in the schema. The description reinforces the removal_reason escalation rule but adds no syntax or format detail beyond what is already provided, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Unscope every control mapped only to these frameworks'), with the scope qualifier 'mapped only to' plus 'Shared controls are kept' pinning down exactly which controls are affected. This clearly distinguishes it from scf_scope_framework (the inverse) and scf_set_scope_override (single-control).

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

Usage Guidelines3/5

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

Provides the escalation condition for edge cases (MCR framework or material-control removal needs an admin and a reason), which is useful context, but never states when to call this versus siblings like scf_scope_framework, scf_preview_framework_scope_change, or scf_set_scope_override. 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.

scf_cancel_catalog_reconciliationA

Cancel a reconciliation run that has not been applied (write β€” admin role). The organization stays on its current catalog version.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
run_idYesReconciliation run UUID β€” obtain from scf_list_reconciliation_runs or scf_preview_catalog_reconciliation

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only indicate readOnlyHint=false and destructiveHint=false, so the description carries the burden of explaining behavior. It adds that this is a write operation requiring admin role, that it applies only to unapplied runs, and that the catalog version is unchanged β€” useful context beyond the structured annotations.

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

Conciseness5/5

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

The description is a single, compact sentence that front-loads the core action, then provides the precondition, permission, and safety outcome. Every clause earns its place with no redundant wording.

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

Completeness4/5

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

For a two-parameter mutation tool with no output schema, the description covers the essential context: what is cancelled, when it can be cancelled, who is allowed to cancel it, and what happens to the catalog. It could be slightly more complete by pointing to rollback as the alternative for applied runs, but overall it is well-rounded.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters already have descriptive provenance (org_id from scf_list_organizations, run_id from scf_list_reconciliation_runs or scf_preview_catalog_reconciliation). The description adds no additional parameter-level meaning, 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.

Purpose5/5

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

The description uses a specific verb ('Cancel') and resource ('a reconciliation run'), and adds the key condition 'that has not been applied.' It also signals the write nature and admin role requirement, making the tool's purpose distinct from related reconciliation operations like apply or rollback.

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

Usage Guidelines4/5

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

The description clearly states the precondition 'has not been applied' and the outcome 'The organization stays on its current catalog version,' which gives an agent clear context for when cancellation is appropriate. However, it does not explicitly name alternatives such as scf_rollback_catalog_reconciliation for runs that have already been applied, so it stops short of full when-not/alternative guidance.

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

scf_complete_evidence_taskA

Mark an evidence collection task completed (write β€” editor role). Sets status to completed and stamps the completion date; optional completion notes are stored with it.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesEvidence task UUID β€” obtain from scf_list_evidence_tasks
completion_notesNoNotes recorded on completion

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark it as a write operation (readOnlyHint=false, destructiveHint=false). The description adds meaningful context beyond the annotations: it explicitly states the editor role requirement, that the status is set to completed, that a completion date is stamped, and that notes are persisted. It does not mention reversibility or idempotency, but for a simple status transition this is adequate.

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

Conciseness5/5

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

A single sentence with no filler. The purpose and role are front-loaded, followed by the two behavioral effects and the notes detail. Every clause earns its place.

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

Completeness4/5

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

The tool is a simple state transition with two simple parameters and no output schema, so the description covers the essential call context: what changes, who can call it, and what inputs matter. It could mention error cases or idempotency, but nothing required for a correct call is missing.

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

Parameters3/5

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

Schema coverage is 100% and both parameters already have good descriptions β€” task_id even points to how to obtain it (scf_list_evidence_tasks) and completion_notes says 'Notes recorded on completion'. The description adds minor value by clarifying that completion notes are optional and that a completion date is stamped, but the schema already carries the semantic weight.

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

Purpose5/5

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

The description opens with a specific verb-resource pair: 'Mark an evidence collection task completed (write β€” editor role)', which unambiguously identifies the action and target. It further specifies what the operation does β€” sets status to completed, stamps the completion date, stores optional notes β€” making it distinct from sibling tools like create/update/delete evidence task variants.

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

Usage Guidelines4/5

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

The context is clear: use this tool when an evidence collection task should be transitioned to completed, with optional notes. It does not explicitly name alternatives or exclusions (e.g., 'for other edits use scf_update_evidence_task'), so it misses the top tier, but the described purpose makes the usage situation obvious enough for an agent to select it correctly.

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

scf_create_assignmentA

Assign a user to a control, evidence item or task as primary or collaborator (write β€” editor role). Use scf_batch_update_evidence for evidence owners in bulk.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoAssignment role (default primary)primary
user_idYesAssignee β€” obtain from scf_list_members
assignable_idYesScoped control, evidence tracking or task UUID
assignable_typeYesItem kind

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the description's 'write' is consistent but adds little new information. The 'editor role' provides a permission nuance not in the annotationshola, but there is no disclosure of idempotency, duplicate-handling, or post-creation effects. With annotations covering the primary safety profile, this is a minimal but acceptable addition.

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

Conciseness5/5

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

Two sentences with zero waste. The action is front-loaded, the parameters are implied, and the alternative tool is mentioned at the end as a pointer. Every word contributes to selecting or invoking the tool correctly.

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

Completeness4/5

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

For a flat create operation with no output schema)Skip, the description is sufficient for correct invocation: it names the resources, roles, and the relevant bulk alternative. It could mention reversibility via scf_delete_assignment or behavior on duplicate assignments, but those are not necessary for correct selection or invocation.

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

Parameters3/5

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

Schema description coverage is 100%: each parameter (assignable_type, assignable_id, user_id, role) has a detailed description including UUID format and source (scf_list_members). The tool description merely mirrors the enum values (control, evidence, task; primary, collaborator) without adding new parameter-level details. Baseline 3 is appropriate when the schema carries the full burden.

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

Purpose5/5

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

The description states a specific verb ('Assign') and resource ('a user to a control, evidence item or task'), lists the allowed roles (primary or collaborator), and includes a permission note ('write β€” editor role'). It clearly differentiates from the bulk update sibling by naming it directly, so an agent can identify what this tool does at a glance.

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

Usage Guidelines5/5

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

It explicitly points to scf_batch_update_evidence for bulk evidence owner updates, which is an exclusion condition for this tool. It also conveys the role options that affect behavior. While it doesn't mention team assignments, the schema's user_id parameter implicitly limits to individual users, and the explicit alternative satisfies the requirement.

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

scf_create_capability_testA

Record a capability test as run (write β€” editor). Each finding becomes a deficiency. passed needs no findings; passed_with_findings or failed need at least one (422).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesShort title (1–255 chars, non-blank)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
resultYesResult: passed, passed_with_findings, failed. passed means no findings; the others need at least one
outcomeYesWhat happened, and what was learned (non-blank)
findingsNoFindings (up to 100); each is recorded as a deficiency linked to the test
scenarioYesWhat was tested, and how (non-blank)
test_typeYesKind of test: incident_response, continuity, other
tested_onYesDay the test was run (YYYY-MM-DD); not in the future (422)

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the agent knows this is a write operation that is not destructive. The description adds meaningful context beyond that: it requires an editor role, each supplied finding becomes a deficiency linked to the test, and violating the result/findings rule returns a 422. It does not cover rate limits or idempotency, but the added behavioral detail is solid.

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

Conciseness5/5

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

The description is three short sentences with zero waste. It front-loads the primary action ('Record a capability test as run'), then adds permission and validation constraints in order of importance. Every sentence earns its place.

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

Completeness4/5

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

For a write tool with 8 parameters, 7 required, nested findings, no output schema, and full schema coverage, the description is largely complete enough to invoke correctly. It covers the write nature, editor requirement, the finding-to-deficiency effect, and the validation rule. It could be stronger by routing the agent away from sibling update/add-finding tools, but nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description largely repeats what the schema already says ('passed needs no findings; passed_with_findings or failed need at least one' mirrors the result field description, and 'Each finding becomes a deficiency' mirrors the findings field description). It only adds the 422 status code for that rule, which is a minor incremental detail.

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

Purpose4/5

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

The description states a specific verb and resource: 'Record a capability test as run.' It also indicates the write nature and required permission ('write β€” editor'). However, it does not name or differentiate this tool from closely related siblings such as scf_update_capability_test or scf_add_capability_test_finding, leaving some ambiguity about when to create a new test versus add findings to an existing one.

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

Usage Guidelines2/5

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

The description gives no explicit when-to-use guidance or alternatives. It does not say to use this instead of scf_update_capability_test or scf_add_capability_test_finding, nor does it mention prerequisites like obtaining org_id via scf_list_organizations. The only operational rules are validation constraints on findings, which are not usage routing.

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

scf_create_commentA

Post a comment on a control, evidence item or task (write β€” any member). Mention users by UUID to notify them; set parent_comment_id to reply in a thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesComment body
mentionsNoUser UUIDs to notify
commentable_idYesScoped control, evidence tracking or task UUID
commentable_typeYesItem kind
parent_comment_idNoReply to this comment

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is covered. The description adds context about permission ('any member') and side effects (notifying mentioned users, threading), which goes beyond annotations. However, it does not disclose details like immediate visibility, idempotency, or rate limits, leaving some gaps.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that states the primary action first, then efficiently adds two key usage notes (mentions and threading). Every word earns its place with no filler or redundancy.

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

Completeness4/5

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

For a simple create operation with a fully documented schema, the description covers the essential behavior: what it creates, the permission context, and the two special features. It does not mention the return value, but that is not critical for a create tool and no output schema exists. The description is sufficient for an agent to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are documented in the schema. The description largely restates schema details (mentions notify users, parent_comment_id is a reply) without adding new meaning. It meets the baseline for full schema coverage but does not enrich parameter understanding further.

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

Purpose5/5

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

The description clearly states the action 'Post a comment' and the specific resource types (control, evidence item, task). It also includes a permission note ('any member') and distinguishes from sibling comment tools like list, update, and delete by focusing on creation. The 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.

Usage Guidelines3/5

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

The description does not explicitly contrast with alternatives such as scf_update_comment or scf_list_comments, but the creation intent is clear. It does provide a specific use case (replying via parent_comment_id) and mention behavior, which implies when to use it. However, it lacks explicit guidance on when not to use it or when to choose a sibling tool.

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

scf_create_compensating_controlA

Record a compensating control for a vendor gap (write β€” editor role): what the gap is, what offsets it, and how effective that is (full, partial or minimal β€” default partial).

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
vendor_idYesVendor UUID β€” obtain from scf_list_vendors
gap_descriptionYesThe gap the control offsets
compensating_controlYesThe control that offsets the gap
effectiveness_ratingNoEffectiveness (default partial)
risk_reduction_notesNoHow much residual risk this removes

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=false and destructiveHint=false, indicating a non-destructive write. The description adds value by explicitly stating '(write β€” editor role)', which clarifies the permission requirement, and it mentions the default effectiveness rating ('default partial'), which is not present in the schema annotations. No contradiction with annotations.

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

Conciseness5/5

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

The description is a single, compact sentence that front-loads the primary purpose and includes the role and default behavior. There is no waste; every clause contributes meaning. It is appropriately concise for a create operation with a well-documented schema.

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

Completeness4/5

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

The description is complete for a create tool with no output schema. It explains the core purpose, the role requirement, and the default effectiveness. It relies on the schema to document parameter details, which it does well. It could mention that this creates a new record, but the name and verb make that clear. Overall, nothing essential is missing for an agent to call it correctly.

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

Parameters3/5

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

Schema coverage is 100% with each parameter described, so the baseline is 3. The description adds some semantic clarity by summarizing the core fields: gap_description is 'what the gap is', compensating_control is 'what offsets it', and effectiveness_rating is 'how effective that is'. It also notes the default for effectiveness. However, it does not add new meaning for org_id, vendor_id, or risk_reduction_notes beyond what the schema already provides.

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

Purpose4/5

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

The description clearly states the verb 'Record' and the resource 'compensating control' with the specific context 'for a vendor gap'. It also lists the key inputs (what the gap is, what offsets it, effectiveness) which makes the purpose unambiguous. However, it does not explicitly contrast with the sibling update/delete tools, so it relies on the name and context for differentiation.

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

Usage Guidelines3/5

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

The description implies the tool is for creating a new compensating control by using 'Record', and it provides context ('for a vendor gap'). It does not explicitly state when to use it versus scf_update_compensating_control or scf_delete_compensating_control, nor does it mention any exclusions or prerequisites beyond the editor role. The usage guidance 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.

scf_create_custom_riskA

Create a custom org-defined risk (write β€” editor+ role). Auto-generates an R-ORG-N code and creates the matching risk assessment record.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesRisk title (required, max 100 chars)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
descriptionYesRisk description (required)
category_nameNoCategory label shown in UI (default 'Custom')
category_colorNoHex color for the category badge, e.g., '#6b7280' (default '#6b7280')

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already signal write (readOnlyHint=false) and non-destructive, and the description goes well beyond them: it discloses the editor+ role requirement, the auto-generation of the R-ORG-N code, and the non-obvious side effect of also creating the matching risk assessment record. That side effect is exactly the kind of behavioral context an agent needs before invoking.

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

Conciseness5/5

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

Two tightly packed sentences: the first delivers the verb, resource, and permission requirement; the second discloses the two side effects. No filler, no repetition of schema content, and the most decision-relevant information is front-loaded.

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

Completeness4/5

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

For a moderate-complexity create tool with full schema coverage and annotations, the description covers purpose, permission, code generation, and side effects. The only notable gap is return-value behavior (does it return the created risk object or the generated code?), which matters because there is no output schema to fill that in.

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

Parameters3/5

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

Schema coverage is 100%, so the schema fully documents all five parameters, giving a baseline of 3. The description adds marginal value by implying no code parameter is needed (the R-ORG-N code is auto-generated), but it does not elaborate on title, org_id, description, or the two category defaults beyond what the schema already states.

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

Purpose5/5

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

States a specific verb ('Create'), resource ('custom org-defined risk'), and key side effects (auto-generated R-ORG-N code, matching assessment record). The 'org-defined' qualifier plus 'Custom' in the title clearly distinguishes this from the sibling scf_create_risk, so an agent can tell them apart without opening either schema.

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

Usage Guidelines3/5

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

Implies when to use it β€” when an org-defined custom risk is needed rather than a standard risk β€” and states the editor+ role prerequisite. However, it never explicitly names the alternative (scf_create_risk) or states when not to use this tool, leaving the contrast to inference.

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

scf_create_deficiencyA

Raise a deficiency by hand (write β€” editor) against an in-scope control, an assessed risk, or both. At least one of scf_id or risk_code is required. Starts open.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesShort title (1–255 chars, non-blank)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idNoControl the deficiency is against β€” must be in scope (422 otherwise); obtain from scf_list_scoped_controls
due_dateNoDue date (YYYY-MM-DD)
priorityNoPriority: critical, high, medium, low (platform default medium)
risk_codeNoRisk the deficiency is against β€” must be one the organisation has assessed (422 otherwise)
owner_nameNoFree-text owner
root_causeNoWhy the deficiency arose
descriptionNoWhat is deficient
owner_user_idNoOwner user β€” must be a member of the organisation (404 otherwise); see scf_list_members

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare this is a non-destructive write, so the description's job is to add mutation context beyond that. It does: it discloses the editor role requirement, the initial lifecycle state ('Starts open'), and the referential constraints (control must be in scope; risk must be assessed). It stops short of describing whether the response returns the new id or how 422s surface, but the added context is real.

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

Conciseness5/5

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

Three short clauses, front-loaded with the action and scope, then the constraint, then the initial state. No filler and nothing repeated from the title or schema.

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

Completeness4/5

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

For a 10-parameter mutation with no output schema, the description covers the critical input constraint and lifecycle starting point. It leaves owner-name vs owner-user-id precedence and post-create behavior unstated, which is a minor gap rather than a blocking one.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline would be 3, but the description supplies a cross-field rule the schema does not encode: the required list is only org_id and title, yet scf_id or risk_code must be present in combination. That is meaningful semantics beyond the structured data.

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

Purpose5/5

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

States a specific verb and resource ('Raise a deficiency') and adds a distinguishing qualifier ('by hand') that separates it from auto-generated deficiencies reachable through sibling tools. An agent can tell it apart from scf_update_deficiency and scf_get_deficiency without opening any schema.

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

Usage Guidelines4/5

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

Gives a concrete prerequisite ('At least one of scf_id or risk_code is required') tied to the target being an in-scope control or an assessed risk, which is the key selection condition for this tool. It does not name alternatives or exclusions, but the required context is clear.

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

scf_create_engagementA

Create an audit engagement in draft (write β€” editor role). Freezes the in-scope controls for the named frameworks against the current catalog version, so the scope renders after deprecations.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesEngagement name, e.g. a framework and audit period
org_idYesOrganization UUID β€” obtain from scf_list_organizations
end_dateNoFieldwork end date, ISO 8601 (YYYY-MM-DD)
frameworksYesFramework identifiers in scope β€” obtain from scf_list_frameworks
start_dateNoFieldwork start date, ISO 8601 (YYYY-MM-DD)

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate write and non-destructive, but the description adds key behavior: freezes in-scope controls against current catalog version and requires editor role. This adds 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.

Conciseness5/5

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

One concise sentence, front-loaded with purpose and includes the important scope-freezing side effect without verbosity.

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

Completeness4/5

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

Complete for a creation tool: explains purpose, draft status, scope freezing, and permission. No output schema is present, but that is not required. Minor lack of return value details is acceptable.

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

Parameters3/5

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

Schema coverage is 100% with each parameter described. The description does not add 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.

Purpose5/5

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

States a specific verb (Create) and resource (audit engagement), and distinguishes from siblings like scf_update_engagement and scf_delete_engagement by specifying draft creation and editor role. The purpose is unmistakable.

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

Usage Guidelines3/5

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

Implies usage for creating new engagements, but does not explicitly mention alternatives or conditions for not using it. No reference to scf_update_engagement for modifications, leaving some inference required.

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

scf_create_engagement_queryA

Raise an auditor query against one control in the engagement's scope (write β€” org member or assigned auditor). The control must be in the engagement's frozen scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesFull text of the query
titleYesShort summary of what is being asked
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idYesSCF control the query is about, in DOMAIN-NN format β€” must be in scope, see scf_get_engagement_scope
engagement_idYesAudit engagement UUID β€” obtain from scf_list_engagements

TDQS

A3.8/5.0
Behavior4/5

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

The description explicitly notes 'write β€” org member or assigned auditor', adding permission context beyond the readOnlyHint annotation (which only says false). It also discloses the constraint that the control must be in the engagement's frozen scope. It does not describe return values or error behavior, but for a write operation this is acceptable given annotations.

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

Conciseness4/5

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

The description is a single sentence that efficiently conveys the core action, permission, and scope constraint. It is front-loaded with the verb 'Raise' and packs necessary context without fluff. A slightly clearer separation of the scope constraint could improve readability, but it is still concise.

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

Completeness3/5

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

For a create operation with 5 required parameters and no output schema, the description covers the essential purpose, permission, and a key precondition (frozen scope). However, it does not mention what happens on success (e.g., whether a query ID is returned) or any failure conditions, which an agent might need to know for a write action. This leaves some gaps.

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

Parameters3/5

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

All 5 parameters have schema descriptions (100% coverage), so the schema already documents them. The tool description adds no extra parameter-specific details beyond what the schema provides, such as the format for scf_id or the purpose of title/body. Therefore, it meets the baseline but does not exceed it.

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

Purpose5/5

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

The description clearly states the action ('Raise an auditor query') against a specific resource ('one control in the engagement's scope'), and distinguishes it from related tools like scf_respond_to_engagement_query or scf_update_engagement_query_status by focusing on the creation act. The permission note and scope constraint further sharpen its purpose.

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

Usage Guidelines3/5

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

The description implies when to use the tool (to create a new query) but does not explicitly mention alternatives or contrast with sibling tools such as scf_list_engagement_queries, scf_respond_to_engagement_query, or scf_update_engagement_query_status. It does state the prerequisite that the control must be in the frozen scope, which is helpful but not a full usage guideline.

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

scf_create_evidenceA

Create an evidence tracking record from a catalog evidence ID (write β€” editor+ role). Starts tracking an evidence item for the organization.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerNoPerson accountable for this evidence item
org_idYesOrganization UUID β€” obtain from scf_list_organizations
commentsNoFree-text notes or context
frequencyNoCollection cadence: 'daily', 'weekly', 'monthly', 'quarterly', or 'annually'
system_idNoSystem UUID to link this evidence to β€” obtain from scf_list_systems
is_trackedNoStart actively tracking this item (default false)
evidence_idYesCatalog evidence ID (e.g., 'E-IAM-01') β€” obtain from scf_list_evidence_catalog
maturity_levelNoEvidence maturity level L0–L5 (e.g., 'L3'); omit to leave unset
collecting_systemNoName of the tool or system that collects the evidence
method_of_collectionNoCollection approach: 'automated', 'manual', or 'hybrid'

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate this is a write operation (readOnlyHint=false) and not destructive. The description adds value by specifying the editor+ role requirement and the behavioral effect: it starts tracking an evidence item for the organization. This gives the agent useful context beyond the annotation flags.

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

Conciseness5/5

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

The description is one tight sentence with the core action and role front-loaded. The second sentence adds a useful behavioral clarification without redundancy. No filler or unnecessary detail is present.

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

Completeness4/5

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

For a create operation with no output schema, the description covers the action, the role requirement, and the intended effect. All parameter meaning is fully handled by the schema, and annotations cover the safety profile. The only minor gap is that the description does not hint at what the tool returns, but this is acceptable for a straightforward create-with-2-required-params tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 10 parameters. The description adds only that evidence comes from a catalog ID, which is already in the evidence_id parameter description. This is the baseline 3 case where the schema carries the parameter meaning.

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

Purpose5/5

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

The description states a specific verb ('Create'), a specific resource ('evidence tracking record'), and a clear source ('from a catalog evidence ID'). It also distinguishes this creation action from the many list/update tools in the sibling set, especially scf_list_evidence and scf_update_evidence.

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

Usage Guidelines3/5

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

The description clearly communicates that this tool is for creating or starting to track evidence, and even notes the editor+ role requirement. However, it does not explicitly say when to use this instead of alternatives like scf_update_evidence, scf_list_evidence, or scf_list_evidence_catalog, so the guidance 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.

scf_create_evidence_taskA

Create a manual evidence collection task against a tracking record (write β€” editor role). Due date and evidence_tracking_id are required; status defaults to not_started, priority to medium.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoTask title
statusNoInitial status (default not_started)
due_dateYesDue date, YYYY-MM-DD
priorityNoPriority (default medium)
task_typeNoTask type (default collection)
descriptionNoWhat has to be collected and how
owning_team_idNoTeam that owns the task β€” obtain from scf_list_teams
assigned_user_idNoAssignee user UUID β€” obtain from scf_list_members
evidence_tracking_idYesEvidence tracking record UUID (the id field from scf_list_evidence, not the E-xxx catalog id)

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already mark this as a non-read-only, non-destructive operation. The description adds the editor-role authorization requirement and the fact that the task is attached to a tracking record, which is useful behavioral context beyond annotations.

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

Conciseness5/5

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

A single sentence that front-loads the action and resource, then packs the critical facts (role, required fields, defaults) with no fluff.

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

Completeness3/5

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

For a 9-parameter create tool with no output schema, the description covers core invocation facts but omits what the call returns, how to handle errors, and relationship to related evidence-task tools. The rich parameter schemas compensate partially.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description repeats the required parameters and defaults already present in the schema, adding no new parameter-level meaning beyond highlighting them as key.

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

Purpose4/5

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

The description states a specific verb and resource ('Create a manual evidence collection task against a tracking record') and clarifies it is a write operation requiring editor role. It is clear but does not explicitly differentiate from siblings such as scf_create_evidence or scf_update_evidence_task.

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

Usage Guidelines3/5

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

Usage context is implied: this is the tool for manually creating an evidence task, and the editor-role note restricts who should call it. However, it provides no explicit when-to-use guidance, exclusions, or alternative tools such as scf_list_evidence_tasks or scf_update_evidence_task.

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

scf_create_org_compensating_controlA

Record a compensating control for an in-scope control (write β€” editor). A material control needs risk_code: an accepted, linked risk with an approval in force (409 otherwise).

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idYesControl the gap is in β€” must be in scope (422 otherwise); obtain from scf_list_scoped_controls
risk_codeNoAccepted risk that justifies compensating: one linked to the control and assessed by the org. Required on a material control, where its approval must be in force
gap_descriptionYesWhat the control does not meet (non-blank)
compensating_controlYesWhat compensates for the gap (non-blank)
effectiveness_ratingNoEffectiveness: full, partial, minimal (platform default partial)
risk_reduction_notesNoNotes on how the risk is reduced

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only cover write/safety flags; the description adds the required role (editor) and a concrete failure mode (409 when a material control lacks an accepted, linked risk with an approval in force). That is real behavioral context beyond structured fields, though nothing is said about side effects on linked risks or idempotency.

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

Conciseness5/5

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

Two compact sentences, front-loaded with the action and scoped by the write role and the conditional risk_code rule; no filler.

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

Completeness4/5

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

For a 7-parameter mutation tool with no output schema, the description covers purpose, authorization, and the key error condition. Return shape and the optional fields (effectiveness_rating, risk_reduction_notes) are left to the schema, which is adequate.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds qualifying semantics the schema does not state: risk_code must be accepted, linked to the control, and carry an approval in force, and is mandatory on material controls.

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

Purpose4/5

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

Specific verb+resource: 'Record a compensating control for an in-scope control'. The 'in-scope control' qualifier begins to separate it from the catalog-level sibling scf_create_compensating_control, though it never names that sibling, so an agent must infer the distinction.

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

Usage Guidelines3/5

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

Gives precondition context ('write β€” editor', risk_code required on a material control), which is usable guidance, but never states when to use this tool instead of scf_create_compensating_control or scf_update_org_compensating_control.

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

scf_create_riskA

Create a new risk assessment in the risk register (write β€” editor+ role). Likelihood and impact scores populate the 5Γ—5 risk matrix.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerNoName or identifier of the risk owner
titleYesRisk title (required, max ~100 chars)
impactYesInherent impact on a 1–5 scale
org_idYesOrganization UUID β€” obtain from scf_list_organizations
control_idNoSCF control ID to link (e.g., 'AST-01') β€” obtain from scf_list_controls
likelihoodYesInherent likelihood on a 1–5 scale
descriptionYesRisk description (required)
treatment_statusNoTreatment workflow status (default identified)

TDQS

A3.8/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, so the description correctly implies a mutation but not destructive. It adds the 'editor+ role' requirement and the fact that likelihood/impact populate the 5x5 matrix. This goes beyond annotations by specifying who can call it and the resulting matrix behavior. However, it doesn't warn about side effects like creating a default treatment_status or triggering notifications, but that's minor given annotations.

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

Conciseness4/5

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

The description is concise, with two sentences that are front-loaded with the primary action and key constraints. It avoids redundancy. Slight deduction because it doesn't mention the optional parameters (owner, control_id, treatment_status) that an agent might need to infer, but overall it's well-structured and quickly digestible.

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

Completeness3/5

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

Given the 8 parameters (5 required) and no output schema, the description could have provided more context on how the risk assessment integrates with the risk register, such as the significance of the treatment workflow or how the matrix is used downstream. However, the schema's thorough parameter descriptions and the explicit mention of the matrix partially compensate. The description is complete enough for an agent to call correctly, but not exhaustive about side effects or return values.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters, including required fields and valid ranges. The description adds no additional parameter-level context beyond what the schema provides. Baseline 3 is appropriate because the schema fully covers semantics, and the description doesn't need to repeat them.

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

Purpose5/5

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

The description clearly states the action ('Create a new risk assessment in the risk register'), specifies the target resource, and distinguishes it from related tools like scf_create_custom_risk by focusing on the risk register's 5x5 matrix. It also notes the write nature and required role, making its purpose unmistakable.

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

Usage Guidelines3/5

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

The description implies when to use it: when creating a new risk assessment in the risk register. However, it does not explicitly contrast with alternatives like scf_create_custom_risk or distinguish from scf_update_risk_assessment. No explicit 'when not to use' guidance is provided, leaving some ambiguity for an agent comparing siblings.

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

scf_create_systemA

Create a system in the organization's infrastructure inventory (write β€” editor+ role). Systems can be linked to capabilities and evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable system name (required)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoLifecycle status (default: active)active
vendorNoLegacy free-text vendor name (prefer vendor_id for a structural link)
categoryNoFree-text category (e.g., 'SIEM', 'Endpoint', 'Identity')
in_scopeNoInside the assessment boundary (true) or outside (false); omit when not decided
rpo_hoursNoRecovery point objective, in hours (β‰₯ 0)
rto_hoursNoRecovery time objective, in hours (β‰₯ 0)
vendor_idNoVendor UUID to structurally link this system to β€” obtain from scf_list_vendors (same org)
criticalityNoBusiness criticality β€” one of: low, medium, high, critical
descriptionNoFree-text description of the system
system_typeYesSystem classification β€” one of: cloud_provider, identity_provider, ticketing, logging, security_tool, code_repository, document_management, endpoint_management, vulnerability_management, email_security, security_awareness, password_manager, communication, hr_system, custom
hosting_locationNoWhere the system runs, e.g. a cloud region or data centre
catalog_template_idNoSystem-catalog template ID to link β€” obtain from scf_list_system_catalog
data_classificationNoHighest classification of data held β€” one of: public, internal, confidential, restricted

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the write/additive nature is covered structurally. The description adds the editor+ authorization requirement, which the annotations do not convey, plus the note that systems link to capabilities and evidence. It omits idempotency/duplicate-name behavior and what is returned, keeping it short of a 5.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and target before the role constraint and the linkage note. No filler or restatement of the title.

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

Completeness4/5

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

For a create tool with a fully documented 15-parameter schema and annotations covering the safety profile, the description supplies the missing auth/role context and the entity's relational role. The only real gap is post-call behavior (returned ID, duplicate handling), which is modest for an additive, non-destructive create.

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

Parameters3/5

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

Schema description coverage is 100%, so every one of the 15 parameters is already documented in the schema, including enums, defaults, and UUID sourcing hints (scf_list_organizations, scf_list_vendors, scf_list_system_catalog). The description adds no parameter-level detail 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.

Purpose5/5

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

The description gives a specific verb ('Create') plus resource ('a system') and scopes it to the 'organization's infrastructure inventory', which cleanly separates it from siblings such as scf_create_vendor, scf_create_team, and scf_create_evidence. An agent can identify the target entity without opening the schema.

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

Usage Guidelines3/5

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

The parenthetical '(write β€” editor+ role)' communicates the permission precondition and write nature, which is genuine usage guidance. However, it names no alternative tool and states no when-not condition (e.g., use scf_update_system for existing systems), so selection guidance is only implied.

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

scf_create_system_capabilityA

Declare that a system can provide one evidence type (write β€” editor role). One entry per evidence_id per system; status defaults to potential, confidence to medium.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoFree-text notes about the capability
org_idYesOrganization UUID β€” obtain from scf_list_organizations
system_idYesSystem UUID β€” obtain from scf_list_systems
data_formatNoFormat of the collected data, e.g. 'csv', 'json', 'pdf'
evidence_idYesCatalog evidence ID, e.g. E-IAM-01
confidence_levelNoConfidence in evidence quality (default medium)
capability_statusNoCapability status (default potential)
collection_methodNoHow the evidence is collected

TDQS

A3.9/5.0
Behavior4/5

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

Annotations establish this is a write but not destructive operation; the description adds useful behavioral context by indicating an editor role is required, stating the one-capability-per-evidence/system constraint, and giving defaults for status and confidence. It does not discuss duplicate handling or returned values, but the annotation coverage lowers the burden.

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

Conciseness5/5

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

Two sentences with no filler; the core action, permission requirement, uniqueness constraint, and defaults are all front-loaded. Every clause contributes information the agent needs.

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

Completeness4/5

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

For a create operation with fully documented parameters and clear annotations, the description covers the conceptual model and constraints sufficiently. The only notable omissions are duplicate/error behavior and explicit return information, but these are secondary when the schema and annotations already carry most of the load.

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

Parameters4/5

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

The schema already documents all parameters with 100% coverage, so the baseline is 3. The description adds value by linking evidence_id and system_id to the uniqueness rule and by clarifying default behavior for capability_status and confidence_level beyond the schema entries.

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

Purpose4/5

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

The description states a clear action β€” declaring/creating a link between a system and one evidence type β€” and adds the key granularity rule (one entry per evidence_id per system). It is distinguishable from related tools like scf_update_system_capability by the create semantics, though it does not explicitly name a sibling alternative.

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

Usage Guidelines3/5

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

The intended use is implied: call this when a system should be recorded as providing an evidence type, and the uniqueness constraint hints that an existing capability should not be recreated. However, it does not explicitly state when to prefer scf_update_system_capability or what to do if the entry already exists.

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

scf_create_teamA

Create a team aligned to a business function (write β€” admin role). The team is born empty; that is legal and reported through health warnings, not refused.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTeam name (1–255 characters)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
descriptionNoWhat the team is responsible for
function_idYesPrimary business function β€” obtain from scf_list_functions
function_idsNoAdditional functions the team serves

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only indicate readOnlyHint=false and destructiveHint=false, so the description adds meaningful context: it is a write requiring admin role, and empty teams are allowed but reported through health warnings rather than rejected. This is useful non-obvious behavior beyond the schema.

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

Conciseness5/5

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

Two sentences, front-loaded with the core action, and every clause earns its place. The behavioral caveat about empty teams is concise and relevant.

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

Completeness4/5

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

For a create operation with fully documented parameters and minimal annotations, the description covers the essential action, authorization, and a notable behavioral edge case. It does not mention the return value, which would be useful since there is no output schema, but this is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds only general context about business-function alignment, not additional parameter-level meaning, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource: 'Create a team aligned to a business function.' It also signals the operation type ('write β€” admin role') and is clearly distinguishable from sibling tools like scf_update_team, scf_list_teams, and scf_add_team_member.

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

Usage Guidelines4/5

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

The description makes the intended use clear: creating a new team, not updating or populating one. The 'born empty' note implies member management belongs elsewhere, though it does not explicitly name alternatives such as scf_update_team or scf_add_team_member.

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

scf_create_team_assignmentA
Destructive

Assign a team to one scoped control or evidence item (write β€” admin role). is_accountable makes it the accountable team and demotes any incumbent to consulted.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesItem kind
org_idYesOrganization UUID β€” obtain from scf_list_organizations
item_idYesScoped control or evidence tracking record UUID
team_idYesTeam UUID β€” obtain from scf_list_teams
is_accountableNoMake this the accountable team (default false)

TDQS

A3.9/5.0
Behavior4/5

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

The description aligns with the annotations (readOnlyHint=false, destructiveHint=true) by explicitly labeling the tool as 'write β€” admin role'. It goes beyond annotations by disclosing a specific side effect: is_accountable makes the team accountable and demotes any incumbent to consulted. This is exactly the kind of behavioral context that adds value.

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

Conciseness5/5

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

Two sentences with no wasted words: the first front-loads the action, scope, and role, and the second covers the key behavioral nuance. Every clause earns its place, making the description easy to parse quickly.

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

Completeness4/5

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

Given five parameters, full schema coverage, annotations, and no output schema, the description covers the essential purpose, the administrative requirement, and the most important side effect. It could mention the response shape or what happens when is_accountable is false, but the absence of an output schema lowers that burden. Overall it is adequate for confident tool invocation.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful semantic value for is_accountable by explaining the demotion of an incumbent team, which is not stated in the schema property. It also clarifies the item scope (control or evidence), reinforcing the type enum without repeating it verbatim.

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

Purpose4/5

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

The description uses a specific verb and resource: 'Assign a team to one scoped control or evidence item', which clearly states what the tool does. The scope 'one' implicitly differentiates it from scf_batch_create_team_assignments, and the '(write β€” admin role)' qualifier adds context. It does not explicitly name sibling alternatives, 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.

Usage Guidelines3/5

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

The description provides a clear operational context: it is a write operation requiring an admin role, and it is for assigning to a single scoped control or evidence item. However, it does not state when to prefer this over scf_batch_create_team_assignments or how it relates to scf_delete_team_assignment, so usage guidance 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.

scf_create_vendorA

Create a vendor in the TPRM registry (write β€” editor+ role). Platform auto-scores risk based on criticality and data handling.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesVendor legal or trading name (required)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoLifecycle status (default prospect) β€” one of: prospect, active, under_review, approved, suspended, offboardedprospect
websiteNoVendor website URL
categoryNoCategory label (e.g., 'SaaS', 'Infrastructure', 'Consulting')
criticalityNoBusiness criticality tier (default 'medium')medium
descriptionNoShort free-text description of the vendor
contact_emailNoPrimary contact email address
data_locationNoWhere the vendor stores or processes our data
flow_down_requirementsNoRequirements passed down to the vendor by contract
shared_responsibility_noteNoWho is responsible for what between us and the vendor

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, but the description adds two things structured data cannot: the editor+ role requirement and the side effect that the platform auto-scores risk from criticality and data handling. That side effect is important behavioral context for a create call.

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

Conciseness5/5

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

Two short sentences, front-loaded with purpose and immediately followed by the permission requirement and side effect. No filler and nothing repeated from the title or schema.

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

Completeness3/5

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

For an 11-parameter mutation with no output schema, the description covers role and scoring side effect but omits what happens on duplicate vendor names, what is returned (e.g., vendor id for follow-up calls), and any validation constraints. Adequate but with clear gaps.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics by stating that 'criticality' and data-handling inputs drive automated risk scoring β€” meaning those fields have downstream consequences rather than being passive metadata. It does not elaborate on other fields, which the schema already covers.

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

Purpose4/5

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

States a specific verb (create) and resource (vendor) plus the registry it lands in (TPRM), which distinguishes it from scf_list_vendors and scf_update_vendor. It does not explicitly name those siblings, but the create scope is unambiguous.

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

Usage Guidelines3/5

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

The parenthetical '(write β€” editor+ role)' tells the agent the required permission, which is genuine usage guidance. However, there is no guidance on when to use this versus alternatives such as scf_create_system or scf_trigger_vendor_research, and no prerequisite steps beyond the implied org_id lookup.

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

scf_create_vendor_action_itemA

Create a remediation action item against a vendor (write β€” editor role), typically from an assessment finding. Priority defaults to medium, status to open.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesAction item title
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoStatus (default open)
categoryNoFree-text category, e.g. 'contractual', 'technical'
due_dateNoYYYY-MM-DD
priorityNoPriority (default medium)
vendor_idYesVendor UUID β€” obtain from scf_list_vendors
owner_nameNoOwner name
descriptionNoAction item detail
owner_user_idNoOwner β€” obtain from scf_list_members
completed_dateNoYYYY-MM-DD

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses the write nature ('write β€” editor role') which goes beyond the annotations (readOnlyHint=false, destructiveHint=false) by specifying the required role. It also states defaults for priority and status, which are additional behavioral details. No contradictions with annotations; the description adds useful context.

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

Conciseness5/5

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

A single, tightly worded sentence that states the main purpose, the role requirement, the typical use case, and two defaults. No fluff, front-loaded with the primary action. Every element earns its place.

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

Completeness4/5

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

Given the 11 parameters and no output schema, the description plus the fully documented schema provide enough for correct invocation. It covers the role, defaults, and typical workflow. It does not mention what the tool returns on success, but that is not critical since no output schema exists and the annotations clarify this is a write operation. Strong overall.

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

Parameters3/5

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

Schema coverage is 100% with each parameter having a description, so the schema already carries the parameter semantics. The description only reiterates defaults that are already in the schema (e.g., 'default medium', 'default open'), adding no new parameter-specific information. Baseline 3 as schema does the heavy lifting.

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

Purpose5/5

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

The description states a specific verb ('Create'), a resource ('remediation action item'), and a target ('against a vendor'). It also adds typical provenance ('typically from an assessment finding') which distinguishes it from other create tools like scf_create_evidence_task or scf_create_risk. No ambiguity about what this tool does.

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

Usage Guidelines4/5

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

The description provides a clear typical scenario ('typically from an assessment finding') which tells an agent when to use this tool. It does not explicitly name alternatives like scf_update_vendor_action_item or scf_delete_vendor_action_item, nor state when not to use it, but the context is sufficient for the intended use. Lacks explicit exclusion but is otherwise clear.

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

scf_create_vendor_certificationA

Record a certification a vendor holds (write β€” editor role), e.g. ISO 27001 or SOC 2 Type II. Status defaults to valid; track expiry_date so renewals surface.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoCertification scope statement
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoStatus (default valid)
vendor_idYesVendor UUID β€” obtain from scf_list_vendors
issue_dateNoYYYY-MM-DD
expiry_dateNoYYYY-MM-DD
verification_urlNoPublic verification URL
certificate_numberNoCertificate number
certification_bodyNoIssuing body
certification_nameYesCertification name, e.g. 'ISO 27001:2022'

TDQS

A3.6/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false and destructiveHint=false. The description adds that it is a write operation and defines the editor role requirement, and notes status default and expiry tracking. However, it doesn't mention whether the operation is additive/substitutive or if it affects existing vendor data, but this is minor given annotations are clear about mutation.

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

Conciseness4/5

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

Two sentences, front-loaded with the main action and examples, then key behavioral notes. Efficient and no filler. Could add a bit more on usage but it's concise enough.

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

Completeness3/5

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

Tool is a straightforward create with 10 params, all well-documented in schema, and no output schema required. Annotations cover mutation. This is adequate but lacks any mention of error conditions or idempotency, and the absence of output schema means the agent doesn't know what response to expect. However, given it's a simple create, it's sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already provides details for all 10 parameters (e.g., org_id source, date format). The description adds the default for status and the purpose of expiry_date (renewals), but does not go beyond schema for most fields, so baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb ('Record'), resource ('vendor certification'), and purpose ('a vendor holds'), with examples ('ISO 27001 or SOC 2'). Clearly distinguishes from siblings like scf_update_vendor_certification and scf_list_vendor_certifications.

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

Usage Guidelines3/5

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

The description implies when to use it (recording a new certification) but does not explicitly state when not to use it or when to prefer scf_update_vendor_certification (e.g., for changing existing certifications). No clear exclusions or alternative routing.

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

scf_create_webhookA

Create a webhook endpoint for evidence-inbox ingestion (write β€” admin role). Returns the plaintext HMAC signing secret exactly once β€” store it immediately; it cannot be retrieved later.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable label (e.g., 'Splunk SIEM', 'AWS Config')
org_idYesOrganization UUID β€” obtain from scf_list_organizations
descriptionNoFree-text description of what this endpoint is for
allowed_evidence_idsNoRestrict ingestion to specific evidence IDs (e.g., ['ERL-IAM-001']); omit to allow any
rate_limit_per_minuteNoPer-endpoint rate limit in requests/min (1–10000); omit to use the org default

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false and destructiveHint=false, so the description carries the burden of explaining the write nature and admin requirement. It adds critical non-obvious behavior: the plaintext HMAC signing secret is returned exactly once, must be stored immediately, and cannot be retrieved later. This is exactly the kind of behavioral disclosure an agent needs.

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

Conciseness5/5

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

Two tight sentences: the first defines the action and purpose, the second delivers a one-time secret warning. No filler, no repetition of schema content, and the most important operational caveat is front and center.

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

Completeness4/5

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

For a create operation with a fully documented input schema, the description covers the key non-obvious outcome: the one-time return of the HMAC secret. It does not enumerate the full response shape, but no output schema exists and the critical handling instruction is present. Overall, an agent has enough to invoke the tool correctly and handle the result safely.

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

Parameters3/5

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

The schema has 100% parameter description coverage, so the description does not need to explain parameters. It does not add much parameter-specific meaning beyond the schema, staying at the baseline for high schema coverage. The mention of HMAC secret is about the response, not the parameters.

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

Purpose5/5

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

States a specific verb and resource: 'Create a webhook endpoint' with a clear purpose ('for evidence-inbox ingestion'). The parenthetical '(write β€” admin role)' further clarifies the operation type. Among the many webhook-related siblings (list/get/delete/rotate), this stands out as the creation tool.

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

Usage Guidelines4/5

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

The description clearly indicates this is for creating a webhook endpoint and flags that it is a write operation requiring admin role. It does not explicitly name alternatives such as scf_list_webhooks or scf_rotate_webhook_secret, but the creation context is unmistakable and sufficient for basic tool selection.

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

scf_delete_assignmentA
Destructive

Remove a user assignment (destructive write β€” editor role).

ParametersJSON Schema
NameRequiredDescriptionDefault
assignment_idYesAssignment UUID β€” from scf_list_assignments

TDQS

A4/5.0
Behavior4/5

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

It explicitly flags the operation as destructive and states the required editor role, adding auth context beyond the destructiveHint/readOnlyHint annotations. It does not describe side effects or reversibility, but the role and destructive label are valuable.

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

Conciseness5/5

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

One sentence that front-loads the action and packs the destructive nature and role requirement into a parenthetical. No filler or repetition.

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

Completeness4/5

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

With one well-documented parameter, destructiveHint annotation, and a clear purpose plus role, the description is largely sufficient. It could be more complete by naming deletion alternatives, but the schema and sibling list partially cover that.

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

Parameters3/5

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

Schema coverage is 100%: assignment_id has format, pattern, and a description pointing to scf_list_assignments. The tool description itself adds no parameter-specific detail, so the baseline 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('Remove') and clarifies the resource as a user assignment, distinguishing it from sibling tools like scf_delete_team_assignment. The destructive-write label reinforces the mutation nature.

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

Usage Guidelines3/5

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

The description implies the tool is for removing a user assignment, and the editor-role note states a prerequisite, but it does not explicitly say when to prefer this over scf_delete_team_assignment or other delete tools. No exclusions or alternatives are named.

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

scf_delete_commentA
Destructive

Retract a comment you authored (write β€” author only). Soft delete: the thread keeps its place, the body is withdrawn.

ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idYesComment UUID β€” obtain from scf_list_comments

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already mark destructiveHint=true, so the description is not expected to restate destructiveness. It adds value by disclosing the soft-delete nature (thread keeps place, body withdrawn) and the authorization requirement (author only). It does not mention reversibility, but this is a minor gap given the annotation already signals destruction.

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

Conciseness5/5

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

A single, front-loaded sentence that packs in the action, the permission model, and the structural consequence. Every word contributes information, with no fluff or repetition.

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

Completeness4/5

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

For a one-parameter destructive action, the description covers what, who, and the behavioral effect. It does not describe the returned payload, but since no output schema exists and simple success/failure is expected, the essential context is adequate. Error cases (e.g., non-owned comment) are implied by the author-only constraint.

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

Parameters4/5

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

The schema already provides a strong description for comment_id (format and provenance from scf_list_comments). The description adds the semantic constraint that the ID must reference a comment authored by the caller, which meaningfully narrows the valid value domain beyond what the schema describes.

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

Purpose5/5

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

The description clearly states the verb 'retract' and the resource 'comment', and adds the constraint 'you authored' which immediately distinguishes it from scf_update_comment (which edits body text) and other scf_delete_* tools targeting different resources. The soft-delete clarification removes any ambiguity about the operation's effect.

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

Usage Guidelines4/5

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

It provides clear context: the tool is only for comments the caller authored, and the soft-delete behavior implies when it is appropriate (retract a comment without removing the thread). It does not explicitly name alternatives or state 'use update_comment instead if you want to edit', but the verb and author-only constraint make the usage conditions sufficiently clear.

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

scf_delete_compensating_controlA
Destructive

Delete a vendor compensating control record (destructive write β€” editor role).

ParametersJSON Schema
NameRequiredDescriptionDefault
cc_idYesCompensating control UUID β€” obtain from scf_list_compensating_controls
org_idYesOrganization UUID β€” obtain from scf_list_organizations
vendor_idYesVendor UUID β€” obtain from scf_list_vendors

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the description's 'destructive write' is redundant. It does add one useful piece of contextβ€”the 'editor role' requirementβ€”but it does not disclose irreversibility, cascading effects, or what happens if the record is not found. With annotations covering the core safety profile, this is adequate but not rich.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no filler, but the parenthetical 'destructive write' repeats what annotations already state. The 'editor role' part is valuable. Overall compact, with a minor redundancy preventing a 5.

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

Completeness4/5

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

For a simple delete operation, the definition is largely complete: the resource is clear, the destructive nature is covered by annotations, the role is stated, and all parameters are fully described in the schema. It could add a note on permanence or cascading effects, but these are minor given the annotations.

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

Parameters3/5

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

Schema description coverage is 100%, with each UUID parameter already documented including how to obtain it (e.g., 'obtain from scf_list_compensating_controls'). The description itself adds no parameter semantics, so the baseline of 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('Delete') and names an exact resource ('vendor compensating control record'), which distinguishes it from sibling delete tools like scf_delete_vendor_certification or scf_delete_vendor_action_item. The title also reinforces the resource. No ambiguity about what operation this performs.

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

Usage Guidelines2/5

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

The description gives no guidance on when to choose this tool over alternatives such as scf_update_compensating_control or scf_list_compensating_controls. The intended use is only implied by the verb 'Delete'; there are no conditions, exclusions, or mentions of related siblings.

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

scf_delete_custom_riskA
Destructive

Delete a custom risk definition, its assessment record, and every control mapping (destructive write β€” editor+ role). Irreversible.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
risk_codeYesCustom risk code in R-ORG-N format (e.g., 'R-ORG-1') β€” obtain from scf_list_custom_risks

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark destructiveHint=true and readOnlyHint=false, and the description adds meaningful behavioral context beyond that: it deletes the definition, its assessment record, every control mapping, requires editor+ role, and is irreversible. This materially helps an agent predict side effects.

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

Conciseness5/5

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

The description is two short, information-dense sentences. It front-loads the core action and immediately highlights the critical destructive scope, role requirement, and irreversibility with no filler.

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

Completeness5/5

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

For a two-parameter delete operation without an output schema, the description covers the essentials: what is deleted, the permission required, and irreversibility. Nothing necessary for an agent to safely invoke this tool is missing.

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

Parameters3/5

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

Schema description coverage is 100%, with both org_id and risk_code already described in the schema, including how to obtain them. The tool description adds no parameter-level 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.

Purpose5/5

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

The description uses the specific verb 'Delete' with the explicit resource 'custom risk definition' and states the cascade scope: assessment record and every control mapping. This clearly distinguishes it from partial operations like scf_remove_custom_risk_control and other delete tools among siblings.

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

Usage Guidelines4/5

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

The description conveys clear context: it is a destructive write requiring an editor+ role and is irreversible. It implies this tool is for full custom-risk deletion rather than partial mapping removal, but it does not explicitly name alternatives or state when not to use it.

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

scf_delete_engagementA
Destructive

Delete a draft audit engagement and its frozen scope (destructive write β€” admin role). Non-draft engagements are refused with 409 β€” close them instead. Auditor grants are revoked with it.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
engagement_idYesAudit engagement UUID β€” obtain from scf_list_engagements

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark destructiveHint=true and readOnlyHint=false, and the description adds meaningful behavioral context: admin role requirement, 409 refusal for non-draft engagements, revocation of auditor grants, and deletion of frozen scope. This goes well beyond the annotation surface.

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

Conciseness5/5

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

Three dense sentences deliver all essential facts with no filler. Destructive/role information is front-loaded, followed by refusal behavior and side effects.

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

Completeness5/5

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

For a destructive write tool with no output schema, the description covers prerequisites, failure mode, side effects, and scope of impact. The parameter schema completes the picture, making the tool fully callable by an agent.

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

Parameters3/5

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

Schema description coverage is 100%, with both params fully described including how to obtain each UUID. The description adds no additional parameter-level meaning, but none is needed because the schema already carries the burden.

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

Purpose5/5

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

The description states a specific verb ('delete'), a specific resource ('draft audit engagement'), and a scope boundary ('and its frozen scope'). It clearly distinguishes the tool from related siblings like scf_update_engagement and scf_create_engagement by restricting it to draft engagements.

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

Usage Guidelines5/5

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

The description explicitly says when to use it (draft engagements) and when not to (non-draft engagements), and it directs the agent to close non-draft engagements instead. This gives unambiguous selection guidance.

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

scf_delete_evidence_fileA
Destructive

Soft-delete an evidence file (destructive write β€” editor role). The record is marked deleted and drops out of listings; the stored object is retained for audit and retention.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
file_idYesEvidence file UUID β€” obtain from scf_list_evidence_files
evidence_idYesCatalog evidence ID the file belongs to, e.g. E-IAM-01

TDQS

A4.5/5.0
Behavior5/5

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

The description goes beyond annotations by explaining the soft-delete behavior: the record is marked deleted, drops out of listings, and the stored object is retained for audit and retention. This adds meaningful behavioral context that annotations alone do not convey.

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

Conciseness5/5

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

The description is concise, with two sentences that front-load the core purpose and role, then explain the behavioral outcome. No redundant or extraneous information is present.

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

Completeness5/5

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

For a simple delete operation with three well-documented parameters and no output schema, the description covers the essential behavioral aspects and role requirement. It is complete for an agent to invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and the description does not add any parameter-specific semantics beyond what the schema already provides. The parameter meanings are fully captured in the schema, so no additional value is added.

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

Purpose5/5

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

The description uses a specific verb 'soft-delete' and identifies the resource 'evidence file', clearly distinguishing it from other file operations like get or list. It also states the destructive write and editor role, which is unambiguous.

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

Usage Guidelines4/5

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

It provides clear context on when to use this tool (soft-delete scenario) and the role requirement, but does not explicitly name alternatives or exclusions. The context is sufficient for an agent to select it correctly among sibling file tools.

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

scf_delete_risk_assessmentA
Destructive

Delete an organization's scoring of a risk code (destructive write β€” editor role). The catalog or custom risk definition itself remains; only this org's assessment row is removed.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
risk_codeYesRisk code β€” catalog R-XX-N or custom R-ORG-N

TDQS

A4.5/5.0
Behavior5/5

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

Even though annotations already mark destructiveHint=true, the description adds valuable context: the required role, the destructive nature, and the precise scope of deletion. It explains that the catalog or custom risk definition is preserved, giving an agent a clear picture of side effects.

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

Conciseness5/5

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

Two sentences with no filler. The destructive warning and role requirement are front-loaded, followed by a precise clarification of what remains versus what is removed.

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

Completeness5/5

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

For a simple two-parameter destructive action with annotations covering the safety profile and schema covering parameters, the description is fully adequate. It includes the role requirement, the destructive nature, and the exact scope of the deletion.

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

Parameters3/5

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

Schema description coverage is 100%, with both org_id and risk_code already documented in the input schema. The description reinforces that the deletion is organization-scoped, but it does not need to add more because the schema already carries the parameter meaning.

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

Purpose5/5

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

The description states a specific verb and resource: it deletes an organization's scoring of a risk code. It also clearly distinguishes this from deleting the risk definition itself, which differentiates it from sibling tools like scf_delete_custom_risk.

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

Usage Guidelines4/5

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

The description provides clear context: this is a destructive write requiring an editor role, and it explicitly clarifies that the risk definition remains while only the org's assessment row is removed. It does not name an alternative tool explicitly, but the scope is clear enough for an agent to avoid using it for definition deletion.

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

scf_delete_team_assignmentA
Destructive

Remove a team's assignment from a control or evidence item (destructive write β€” admin role).

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
assignment_idYesTeam assignment UUID β€” from scf_list_team_assignments

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, and the description reinforces this with 'destructive write.' It adds useful context beyond annotations by specifying the admin-role requirement, which an agent needs to know before invoking the tool.

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

Conciseness5/5

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

A single sentence front-loads the operation, states the target scope, and appends a compact warning about destructiveness and admin role. Every word earns its place with no redundancy.

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

Completeness5/5

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

For a simple two-parameter destructive operation, the description is complete: it names the operation, the target resource, the parent scope, and the authorization requirement. Annotations cover the destructive/read-only profile, and the schema fully documents parameter origins, so nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters include provenance guidance ('obtain from scf_list_organizations' and 'from scf_list_team_assignments'). The description itself adds no parameter-level detail, but the schema already carries the full burden, so baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Remove'), a clear resource ('a team's assignment'), and the target scope ('from a control or evidence item'). It goes beyond the title by clarifying exactly what object the assignment is removed from, which distinguishes it from sibling delete tools like scf_delete_assignment.

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

Usage Guidelines3/5

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

The description implies usage when a team assignment needs to be removed and adds an admin-role prerequisite. However, it does not explicitly contrast this with alternatives such as scf_delete_assignment or scf_create_team_assignment, nor does it state conditions like 'use scf_delete_assignment for non-team assignments.'

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

scf_delete_vendor_action_itemA
Destructive

Delete a vendor action item (destructive write β€” editor role). Prefer status=cancelled when the record should stay visible.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
item_idYesAction item UUID β€” obtain from scf_list_vendor_action_items
vendor_idYesVendor UUID β€” obtain from scf_list_vendors

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the description's 'destructive write' confirms rather than adds. It does add genuinely new context: the editor-role authorization requirement and the visibility-related cancellation alternative.

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

Conciseness5/5

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

Two short sentences, front-loaded with verb and resource, with no filler. The cancellation guidance is packed into fewer than ten words.

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

Completeness4/5

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

For a 3-parameter destructive delete with no output schema, the description plus rich schema covers the essential call path. It could specify permanence or error behavior, but the destructive annotation and role note already cover the main risk.

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

Parameters3/5

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

Schema description coverage is 100%, with each UUID given a source via list tools, so the description doesn't need to add parameter details. It adds no extra semantics beyond what the schema already provides.

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

Purpose5/5

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

The description opens with the exact operation ('Delete a vendor action item') and reinforces scope with 'destructive write β€” editor role.' This is clearly distinguishable from sibling tools like scf_update_vendor_action_item or scf_create_vendor_action_item.

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

Usage Guidelines4/5

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

It explicitly warns to prefer status=cancelled when the record must remain visible, which is a clear exclusion for soft-delete scenarios. It doesn't name the sibling update tool, but the guidance is sufficient to route an agent away from hard deletion in that case.

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

scf_delete_vendor_certificationA
Destructive

Delete a vendor certification record (destructive write β€” editor role). Prefer status=expired or revoked when the history matters.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
cert_idYesCertification UUID β€” obtain from scf_list_vendor_certifications
vendor_idYesVendor UUID β€” obtain from scf_list_vendors

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide destructiveHint=true and readOnlyHint=false, so the 'destructive write' label is redundant. However, the description adds an 'editor role' permission requirement, which is not in the annotations, and it explains the softer alternative of status-based retirement. This adds meaningful context beyond the structured metadata.

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

Conciseness5/5

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

The entire description is a single, dense sentence that front-loads the action and resource, then packs in the role and the history-preservation guidance. Every clause earns its place; there is no fluff or repetition of schema details.

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

Completeness4/5

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

For a destructive delete tool with three fully documented UUID parameters, no output schema, and safety cues in annotations, the description covers the core usage: what it deletes, who can do it, and when to avoid it. It could mention cascading effects or audit-log implications, but for the stated scope this is sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, with each UUID parameter documented as obtainable from a specific list tool (e.g., 'obtain from scf_list_organizations'). The description itself adds no parameter-level detail 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.

Purpose5/5

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

The description opens with 'Delete a vendor certification record,' a specific verb and resource that unambiguously identifies the operation. It further clarifies this is a destructive write, and the sibling set includes create/update/list vendor certifications, so the tool is easily distinguished without opening the schema.

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

Usage Guidelines4/5

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

The description gives a clear when-not-to-use condition: 'Prefer status=expired or revoked when the history matters.' This tells the agent to avoid hard deletion when record history is important. It stops short of naming the alternative tool (scf_update_vendor_certification), but the guidance is explicit enough to route behavior.

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

scf_delete_webhookA
Destructive

Revoke a webhook endpoint β€” soft-delete that marks it inactive (destructive write β€” admin role). Future deliveries return 403; the record remains for audit.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
endpoint_idYesWebhook endpoint UUID β€” obtain from scf_list_webhooks

TDQS

A4.5/5.0
Behavior5/5

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

Beyond annotations (destructiveHint=true), the description adds valuable behavioral detail: this is a soft-delete, the endpoint is marked inactive, future deliveries return 403, the record is retained for audit, and admin role is required. This fully informs the agent of the operational consequences.

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

Conciseness5/5

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

The description is a single, tightly packed sentence that front-loads the core action and then efficiently conveys soft-delete behavior, permissions, delivery impact, and audit retention. Every clause adds useful information with no waste.

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

Completeness5/5

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

For a destructive two-parameter tool with no output schema, the description covers the essential context: what action is performed, what happens to future deliveries, why the record persists, and who can perform it. The schema fully documents parameters, so nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, with both org_id and endpoint_id documented including how to obtain them. The description adds no further parameter-level meaning, so the baseline of 3 is appropriate since the schema does the heavy lifting.

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

Purpose5/5

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

The description states a specific verb ('Revoke') and resource ('webhook endpoint'), and clarifies the soft-delete semantics that distinguish it from a hard delete. It clearly differentiates this from sibling webhook tools like create_webhook, get_webhook, and rotate_webhook_secret by the action of revoking.

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

Usage Guidelines4/5

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

The description makes the usage context clear: use this when you need to revoke a webhook endpoint so it stops receiving deliveries. It does not explicitly name alternative tools or state when not to use it, but the destructive-write and admin-role notes provide enough contextual guidance for an agent.

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

scf_export_documentA
Read-only

Export a document as rendered markdown or HTML text (read β€” viewer role). The platform also renders PDF, but that is a binary download and is not offered here β€” fetch it from the web UI instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoExport format: 'md' for markdown, 'html' for rendered HTMLmd
org_idYesOrganization UUID β€” obtain from scf_list_organizations
document_idYesGenerated document UUID β€” obtain from scf_list_documents

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark readOnlyHint=true, and the description reinforces this with '(read β€” viewer role)', adding an authorization requirement beyond the annotation. It also discloses that PDF is a binary download intentionally not offered here, which helps the agent avoid expecting a binary response.

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

Conciseness5/5

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

Two tight sentences with no filler. The core purpose is front-loaded, and the PDF exclusion is delivered in a clear, useful second sentence. Every clause earns its place.

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

Completeness4/5

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

For a simple read-only export tool with fully documented parameters and no nested objects, the description plus schema covers the essentials: role, format options, parameter sourcing, and the PDF limitation. It does not describe response shape in detail, but the description's 'text' framing makes the expected output sufficiently clear.

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

Parameters3/5

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

Schema description coverage is 100%, with all three parameters already well documented: format's enum and default, org_id's provenance from scf_list_organizations, and document_id's provenance from scf_list_documents. The description adds minimal parameter-level meaning beyond the schema, 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.

Purpose5/5

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

The description clearly states the action ('Export'), the resource ('a document'), and the exact output forms ('rendered markdown or HTML text'). It also draws a bright line against PDF export, which is explicitly excluded, helping an agent distinguish this tool from any PDF-related expectation.

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

Usage Guidelines4/5

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

The description gives explicit context: use this tool for markdown/HTML text export, and if PDF is needed, fetch it from the web UI instead. It does not specifically route to sibling tools like scf_get_document or scf_preview_document, but the PDF exclusion and format scoping provide clear practical guidance.

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

scf_generate_documentsA

Queue ISMS document generation for one or more generators (write β€” admin role). Returns a task_id; poll scf_get_document_generation_status. Existing documents are skipped unless force is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoRegenerate even when a document already exists for that generator and domain (default false)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
requestsYesBetween 1 and 40 generation requests to queue in this batch

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false) by disclosing the admin-role requirement, the async task_id handoff with a named polling tool, and the skip-existing-unless-force idempotency semantics. These are exactly the behavioral traits an agent needs before invoking a mutation.

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

Conciseness5/5

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

Three tight sentences with the write/admin constraint and the async contract front-loaded; every sentence carries information and nothing is padded.

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

Completeness5/5

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

With no output schema, the description compensates by stating the return value (task_id) and the polling path, plus the permission level and skip/force behavior. An agent has everything needed to call it and handle the result.

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

Parameters3/5

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

Schema description coverage is 100%, so org_id, requests, generator, domain_id, and force are already documented in the schema; the description's 'unless force is set' restates the force schema text. Baseline 3 applies since the description adds no new parameter syntax or constraints.

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

Purpose5/5

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

States a specific verb ('Queue ... generation'), the resource ('ISMS document'), and the scope ('one or more generators'), which cleanly separates it from siblings such as scf_preview_document, scf_list_documents, and scf_get_document_generation_status.

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

Usage Guidelines4/5

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

Gives clear operating context: it is a write requiring admin role, it is asynchronous (poll scf_get_document_generation_status), and existing documents are skipped unless force is set. It names the follow-up tool but does not contrast against alternatives like preview or the synchronous document tools.

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

scf_generate_system_recipesA

Queue AI generation of evidence-collection recipes for a system (write β€” editor+ role, async, HTTP 202). Poll scf_get_recipe_generation_status for progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
system_idYesSystem UUID β€” obtain from scf_list_systems

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description adds valuable behavioral detail: required role (editor+), asynchronous execution, expected HTTP status (202), and follow-up polling behavior. It also clarifies that the tool queues work rather than returning final results synchronously. No contradiction with annotations exists.

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

Conciseness5/5

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

The description is compact, front-loaded with the primary action, and packs essential operational facts (role, async behavior, HTTP status, polling endpoint) into two short sentences. There is no filler or repetition of schema details.

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

Completeness4/5

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

For a two-parameter async tool with no output schema, the description gives the essential call-and-follow-up flow: invoke with org/system IDs, expect 202, poll status endpoint. It could be slightly more complete by stating whether the response includes a generation ID or other correlation token needed for the status poll, but the stated workflow is enough for an agent to proceed.

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

Parameters3/5

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

Schema coverage is 100%, and both parameters already have descriptive text explaining they are UUIDs obtainable from scf_list_organizations and scf_list_systems respectively. The tool description does not add further parameter-level meaning beyond indicating the action is for a system, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb ('Queue') and resource ('AI generation of evidence-collection recipes for a system'), making the operation's intent unmistakable. It also distinguishes this from sibling retrieval tools like scf_get_system_recipes by framing it as an asynchronous generation action, not a read.

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

Usage Guidelines4/5

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

The description gives clear context: this is a write operation requiring editor+ role, is asynchronous, and returns HTTP 202. It also explicitly directs the agent to poll scf_get_recipe_generation_status afterward, which is actionable follow-up guidance. It does not mention exclusions or alternative tools for cases like retrieving already-generated recipes, but the core usage context is clear.

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

scf_get_assessment_review_queueA
Read-only

List AI verdicts awaiting a human decision, worst first (read β€” viewer role). tier=file (default) lists per-file verdicts; tier=window is the web app's Awaiting-confirmation queue.

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNofile (default): entries carry file_id, act with scf_review_evidence_assessment. window: entries carry window_assessment_id, act with scf_review_window_assessment_verdictfile
limitNoPage size (1–200, default 50)
offsetNoPagination offset (default 0)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoQueue filter (default awaiting)awaiting

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=true, so the description goes further by specifying the viewer role, 'worst first' ordering, and the behavioral difference between tier=file and tier=window. It stops short of describing response shape or pagination behavior, but the existing annotation lowers the burden.

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

Conciseness5/5

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

The description is compact: two sentences with no filler. It front-loads the core purpose, ordering, and access role, then efficiently covers tier behavior.

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

Completeness4/5

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

For a read-only list tool, the description covers the essential selection context: what is listed, in what order, with what access, and how tiers differ. The schema fully documents parameters, so invocation details are available; only the absence of an output schema leaves minor uncertainty about exact response fields.

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

Parameters3/5

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

The input schema covers 100% of parameters with useful descriptions, so the baseline is 3. The description adds a slight extra meaning for tier by noting it maps to the web app's Awaiting-confirmation queue, but it does not materially improve on the schema for limit, offset, status, or org_id.

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

Purpose5/5

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

The description uses the specific verb 'List' with a clear resource: AI verdicts awaiting a human decision. It also conveys ordering ('worst first'), access level ('read β€” viewer role'), and the two tier modes, making it easy to distinguish from nearby review-action tools.

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

Usage Guidelines4/5

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

The description gives clear context for when to use this tool: when retrieving AI verdicts that need human review. It also explains the tier distinction between file-level and window-level queues, but it does not explicitly state exclusions or name alternative review tools 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.

scf_get_audit_logA
Read-only

Query one organization's append-only audit trail (read β€” viewer role): field-level changes with actor, source and before/after values. Filter by entity, control, action, actor, source, date or text.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (1–200, default 50)
actionNoFilter by action: create, update or delete
offsetNoPagination offset β€” number of results to skip (default 0)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idNoFilter by SCF control ID in DOMAIN-NN format
date_toNoInclude changes at or before this ISO-8601 timestamp (YYYY-MM-DDTHH:MM:SSZ)
actor_idNoFilter by actor user UUID β€” platform alias of changed_by_user_id
date_fromNoInclude changes at or after this ISO-8601 timestamp (YYYY-MM-DDTHH:MM:SSZ)
entity_idNoFilter by the changed entity's UUID
request_idNoFilter by request correlation ID β€” groups every change one API call made
entity_typeNoFilter by exact entity type as written in the log, e.g. scoped_control, evidence_file, audit_engagement, vendor β€” unsure of the spelling? use search_text
search_textNoCase-insensitive search across entity_type, field_name, old_value and new_value
action_sourceNoFilter by origin of the change: ui, api_key, mcp or system
changed_by_user_idNoFilter by the user who made the change β€” obtain from scf_list_members

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description's 'read' is consistent. It adds valuable behavioral context beyond the annotation: the trail is append-only, requires viewer role, and returns field-level changes with actor, source, and before/after values. No contradiction with annotations.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence states the core purpose and return content; the second enumerates the filter dimensions. All essential information is front-loaded.

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

Completeness4/5

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

There is no output schema, but the description partially compensates by naming the returned content (field-level changes with actor, source, and before/after values). The schema fully documents all 14 parameters, and the description covers the filter dimensions. It could add ordering or pagination behavior, but nothing critical is missing for selecting and invoking the tool.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by grouping the 14 parameters into meaningful filter categories ('entity, control, action, actor, source, date or text'), which helps an agent map intent to the right parameter without reading every schema entry.

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

Purpose5/5

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

The description names a specific verb ('Query'), a specific resource ('one organization's append-only audit trail'), and the exact content ('field-level changes with actor, source and before/after values'). It also states the access level ('read β€” viewer role'), making it clearly distinguishable from the many mutation tools in the sibling list.

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

Usage Guidelines4/5

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

The description makes the tool's context clear: it is for reading audit log entries for a single organization, with filtering by entity, control, action, actor, source, date, or text. It does not explicitly name alternatives or state when not to use it, but the purpose is specific enough that an agent can infer when this is the right tool.

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

scf_get_capability_testB
Read-only

Get one capability test with its findings, each returned as a deficiency.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
test_idYesCapability test UUID β€” obtain from scf_list_capability_tests

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so safety is covered. The description adds one genuinely non-obvious behavioral fact β€” findings are returned as deficiencies β€” but says nothing about pagination, error behavior, or permissions, and no output schema exists to carry that load.

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

Conciseness4/5

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

A single front-loaded sentence with no filler. The phrase 'each returned as a deficiency' is slightly awkward but does earn its place by disclosing return behavior.

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

Completeness3/5

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

With no output schema, the description should describe the return shape; it only hints that findings surface as deficiencies without clarifying the deficiency payload or structure. Adequate for a simple read, but leaves the return contract thin.

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

Parameters3/5

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

Schema description coverage is 100% and both UUID parameters are fully documented in the schema with acquisition hints. The description adds no syntax or meaning beyond that, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Get one capability test') and its singular scope distinguishes it from scf_list_capability_tests. It does not explicitly name the sibling, but the 'one' vs 'list' distinction is unambiguous.

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

Usage Guidelines2/5

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

No guidance on when to use this versus scf_list_capability_tests or scf_update_capability_test beyond the implicit singular lookup. The schema tells the agent the IDs come from scf_list_organizations/scf_list_capability_tests, but the description itself offers no when/when-not or prerequisite context.

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

scf_get_capability_themeA
Read-only

Get a single capability theme (KSI) with full posture, multi-axis scores, band, and legacy posture_percentage.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
theme_codeYesCapability theme code (e.g., 'ACCESS_CONTROL', 'INCIDENT_RESPONSE') β€” obtain from scf_list_capability_themes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, and the description aligns with that by describing a read operation. It adds value by specifying what data will be returned (posture, multi-axis scores, band, legacy posture_percentage), which goes beyond the annotation and helps the agent set expectations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that names the operation, the resource, and the key distinguishing return fields. There is no filler or redundancy.

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

Completeness5/5

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

For a simple two-parameter read-only getter with no output schema, the description gives enough context about what the tool returns and what kind of resource it operates on. Combined with the schema's parameter documentation and the readOnly annotation, nothing essential is missing for correct selection and invocation.

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

Parameters3/5

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

Schema description coverage is 100%, with both org_id and theme_code documented including how to obtain them from list tools. The description itself adds no new parameter semantics, 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.

Purpose5/5

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

The description uses a specific verb ('Get') and resource ('a single capability theme (KSI)') and enumerates the key returned content: posture, multi-axis scores, band, and legacy posture_percentage. This distinguishes it from sibling list tools like scf_list_capability_themes and related getters like scf_get_capability_theme_scorecard.

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

Usage Guidelines4/5

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

The description makes the use case clear: retrieve one specific capability theme by org_id and theme_code, with rich posture data. It doesn't explicitly name alternatives or state when not to use it, but the 'single theme' framing gives adequate context against the sibling list and scorecard tools.

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

scf_get_capability_theme_evidence_postureA
Read-only

Get per-theme evidence metrics: controls with evidence, file counts by assessment status, average relevance score, and derived confidence (strong/moderate/weak/none). Use for KSI evidence dashboards.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description does not need to restate read-only safety. The description adds transparency about what the read returns (metrics and confidence tiers) but does not disclose details like output grouping, potential empty results, or whether org_id must have associated capability themes. It is adequate, not rich.

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

Conciseness5/5

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

Two sentences with no filler: the first enumerates the returned metrics, and the second gives the intended use case. All content earns its place and the key information is front-loaded.

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

Completeness4/5

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

For a single-parameter, read-only tool, the description covers what the call returns and when to use it. There is no output schema, so the metric list is helpful, though it could more explicitly state that results are grouped by capability theme. Overall, an agent has enough to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, with org_id already documented as an Organization UUID obtainable from scf_list_organizations. The tool description does not add further parameter-level detail, so the baseline of 3 applies. The phrase 'per-theme' clarifies output granularity but not the input parameter.

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

Purpose5/5

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

Description uses a specific verb ('Get') and resource ('per-theme evidence metrics') and lists concrete output content: controls with evidence, file counts by assessment status, average relevance score, and derived confidence levels. This is clearly differentiated from siblings like scf_get_evidence_maturity and scf_get_capability_theme_scorecard by the specific metric set.

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

Usage Guidelines4/5

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

The sentence 'Use for KSI evidence dashboards' provides a clear intended use context. It does not explicitly name alternative tools or exclusion criteria among the many evidence-related siblings, but the dashboard use case is sufficient to guide selection in most situations.

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

scf_get_capability_theme_scorecardB
Read-only

Get the multi-axis KSI scorecard for every capability theme. Returns per-theme Implementation Coverage, Maturity, Evidence Coverage, Evidence Quality, and composite KSI Posture Score bands.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

B3.4/5.0
Behavior3/5

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

readOnlyHint=true already covers the safety profile, so the description need not restate it. It adds useful detail about the returned KSI dimensions and composite bands, though it does not mention pagination, ordering, or behavior for organizations with no capability themes.

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

Conciseness5/5

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

Two tightly focused sentences with zero filler. The main action and scope are front-loaded, and the metric list is compact and information-dense.

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

Completeness4/5

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

For a read-only, single-parameter report, the description is largely complete: it names the five returned axes and the composite score. It does not describe response shape or pagination, but no output schema exists and the endpoint is simple enough that this is a minor gap.

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

Parameters3/5

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

The single org_id parameter is already fully documented in the schema, including its source via scf_list_organizations. The description adds no parameter-specific semantics beyond the report's scope, so the baseline 3 applies.

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

Purpose4/5

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

States a specific action ('Get') and concrete resource ('multi-axis KSI scorecard for every capability theme'), and enumerates the exact metrics returned: Implementation Coverage, Maturity, Evidence Coverage, Evidence Quality, and composite KSI Posture Score bands. It is clearly not a single-theme or evidence-only endpoint, though it does not explicitly call out a sibling for contrast.

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

Usage Guidelines2/5

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

No guidance on when to select this over nearby siblings such as scf_get_capability_theme_evidence_posture or scf_get_control_assessment_composite. The scope 'every capability theme' implies an aggregate view, but alternatives and conditions are left unstated.

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

scf_get_catalog_changelogA
Read-only

Get this organization's catalog changelog (read β€” viewer role): what changed across reconciliations, newest first. Answers 'when did this control change, and what did we decide?'

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, 1–500 (default 50)
offsetNoRows to skip for pagination (default 0)
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description reinforces this with 'read β€” viewer role,' adding the required permission level. It also discloses the ordering ('newest first'), scope ('this organization's'), and the nature of the returned data ('what changed across reconciliations... what did we decide?'), which goes beyond the annotation.

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

Conciseness5/5

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

A single, information-dense sentence covers purpose, read-only nature, role requirement, scope, ordering, and the core question the tool answers. There is no filler or repetition of schema details.

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

Completeness5/5

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

With only three parameters, all fully described in the schema, and a read-only annotation, the description supplies the essential behavioral context: what the changelog contains, how it is ordered, and who can access it. Nothing critical for an agent to invoke the tool correctly is missing, even without an output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents org_id, limit, and offset. The description adds only indirect context through 'this organization's,' which maps to org_id, but provides no additional parameter-level detail beyond what the schema already gives.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Get this organization's catalog changelog.' It clearly defines the scope (organization-level), the content (what changed across reconciliations), and the ordering (newest first). It even frames the practical question it answers, distinguishing it from audit logs or reconciliation-run tools.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: to retrieve catalog change history across reconciliations, focused on control changes and decisions. It does not explicitly name alternatives or exclusions, but the phrasing 'this organization's catalog changelog' and 'across reconciliations' makes the intended use unambiguous among the many sibling tools.

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

scf_get_catalog_evidenceA
Read-only

Get one catalog evidence entry with the controls it maps to (read, no org). The reference definition, not an organization's tracking record β€” see scf_get_evidence for that.

ParametersJSON Schema
NameRequiredDescriptionDefault
evidence_idYesCatalog evidence ID, e.g. E-IAM-01 β€” obtain from scf_list_evidence_catalog

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description reinforces the read-only nature. It adds useful behavioral context beyond annotations: this is the reference definition, not an org tracking record, and it returns mapped controls. No contradiction with annotations.

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

Conciseness5/5

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

Two tightly written sentences with no filler. The core purpose is stated first, and the distinguishing clarification and sibling pointer are delivered efficiently in the second sentence.

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

Completeness4/5

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

For a simple single-parameter read operation, the description plus schema are sufficient. It states what is returned (one catalog evidence entry with mapped controls), how to obtain the ID, and how this differs from scf_get_evidence. No output schema exists, but the return expectation is adequately described.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already fully documents evidence_id. The description adds no new parameter-level meaning, though it does clarify the overall return includes mapped controls. Baseline 3 is appropriate because the schema handles parameter documentation.

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

Purpose5/5

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

States a specific verb ('Get') and resource ('one catalog evidence entry') plus the additional behavior of returning mapped controls. It explicitly distinguishes itself from scf_get_evidence by clarifying this is the reference definition, not an organization's tracking record.

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

Usage Guidelines5/5

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

Provides direct usage context: 'read, no org' tells the agent this is a read-only catalog lookup independent of organization. It also names the alternative tool, scf_get_evidence, for the org-specific case, making the selection criteria clear.

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

scf_get_catalog_reconciliation_statusA
Read-only

Get this organization's catalog position (read β€” viewer role): its catalog version, the platform's current version, and whether reconciliation is due or in flight. Start here.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.3/5.0
Behavior4/5

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

Annotations supply readOnlyHint=true, and the description adds value by stating the 'viewer role' requirement and what state the tool reports (due or in flight). These go beyond the annotation while remaining consistent with it.

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

Conciseness5/5

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

The description is a single well-structured sentence that front-loads the action, then provides the read-only qualifier, output contents, and the 'Start here' workflow nudge with no filler. Every phrase earns its place.

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

Completeness5/5

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

With no output schema, the description compensates by naming the three result components: catalog version, platform version, and reconciliation due/in-flight state. For a one-parameter read-only status endpoint, this is complete: the agent knows input source, required permission, output semantics, and where this tool fits in the workflow.

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

Parameters3/5

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

The input schema already covers org_id completely with a UUID format, required flag, and guidance to obtain it from scf_list_organizations. The description does not add parameter-level meaning beyond 'this organization's', so baseline 3 is warranted.

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

Purpose5/5

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

The description uses a specific verb and resource ('Get this organization's catalog position') and lists exactly what is returned: catalog version, platform's current version, and reconciliation due/in-flight state. The '(read β€” viewer role)' qualifier and the 'Start here' cue distinguish this top-level status check from reconciliation-run-specific siblings.

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

Usage Guidelines4/5

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

'Start here' explicitly frames this tool as the entry point for catalog reconciliation status, and the viewer-role/read qualifier tells the agent it can be used safely in read-only contexts. It does not enumerate alternatives or exclusions, but the workflow cue is clear and appropriate for this simple status tool.

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

scf_get_change_cursorA
Read-only

Cheap has-anything-changed probe (read β€” viewer role): newest audit timestamp and row count for one organization. Compare with the pair you last saw; poll this before re-pulling the audit log.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only mark readOnlyHint; the description adds operational context: it is a cheap probe, requires only viewer role, and returns two values (timestamp and row count). It also discloses the intended polling pattern, which annotations cannot convey. No contradiction with annotations.

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

Conciseness5/5

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

Two dense sentences front-load the purpose, cost, and auth level before giving the polling instruction. Every clause earns its place; no filler.

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

Completeness5/5

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

For a one-parameter read-only probe with no output schema, the description covers purpose, return values, role requirement, and the exact usage pattern. The only mild ambiguity is 'the pair you last saw,' but the preceding clause identifies the pair as timestamp and row count.

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

Parameters3/5

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

Schema description coverage is 100%, and the org_id schema already explains it is an Organization UUID from scf_list_organizations. The tool description only restates 'for one organization' and adds no parameter-level 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.

Purpose5/5

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

Description opens with 'Cheap has-anything-changed probe' and specifies it returns 'newest audit timestamp and row count for one organization', giving a concrete verb, resource, and output. The 'poll this before re-pulling the audit log' line distinguishes it from the audit-log fetching sibling without ambiguity.

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

Usage Guidelines5/5

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

Explicitly instructs when to call: 'poll this before re-pulling the audit log' and how to use results: 'Compare with the pair you last saw.' It also implies the alternative (full audit log fetch) and frames this as the cheap pre-check, so an agent knows when to choose it.

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

scf_get_controlA
Read-only

Get a single SCF control by ID. Returns description, mapped frameworks, assessment objectives, and linked evidence items from the reference catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault
scf_idYesSCF control identifier in DOMAIN-NN format (e.g., 'AST-01', 'IAC-15', 'GOV-02')

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds value by specifying exactly what the read returns: description, mapped frameworks, assessment objectives, and linked evidence items. This gives the agent a concrete picture of the operation without contradicting the read-only annotation.

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

Conciseness5/5

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

The description is a single, information-dense sentence with no filler. The primary action and target are front-loaded, followed by a concise list of returned content.

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

Completeness4/5

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

For a simple single-parameter read tool with no output schema, the description covers the input format via the schema and the key return categories in prose. It is complete enough for an agent to select and invoke the tool correctly, though exact output structure is not specified.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter scf_id is already fully described with a format and examples. The description adds no additional parameter semantics beyond restating that the lookup is 'by ID', so the baseline of 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('Get'), a concrete resource ('a single SCF control by ID'), and clarifies the catalog scope ('from the reference catalog'). This clearly distinguishes it from list-style siblings like scf_list_controls and from scf_get_scoped_control, which operates on scoped controls.

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

Usage Guidelines3/5

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

The phrase 'from the reference catalog' implies this is the tool for reference-catalog controls rather than scoped controls, providing some contextual guidance. However, it does not explicitly state when to choose this over scf_list_controls, scf_get_scoped_control, or scf_list_assessment_objectives, nor does it provide exclusions.

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

scf_get_control_assessment_compositeA
Read-only

Get the rolled-up assessment composite for one SCF control: composite score, status band, included/missing evidence IDs, mandatory gaps, per-window detail. 404 if no composite row exists yet (async).

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idYesSCF control identifier in DOMAIN-NN format (e.g., 'AST-01', 'GOV-02')

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses the 404-when-row-not-yet-computed error behavior, the async nature of composite generation, and the exact response composition (five field groups). With no output schema present, this behavioral disclosure carries the return-format burden and notably tells the agent a 404 is a legitimate 'not ready yet' state rather than a malformed request.

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

Conciseness5/5

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

Two sentences with zero waste: the first front-loads the verb, resource, and available return fields; the second delivers the critical error/timing caveat. The field enumeration earns its place because there is no output schema to compensate for missing return-value documentation.

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

Completeness4/5

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

For a 2-parameter read-only tool with fully documented parameters and a readOnlyHint annotation, the description covers operation, return content, and error behavior β€” a solidly complete picture. The only gap is the absence of an explicit pointer to scf_list_control_assessment_composites for browsing, and minor ambiguity about status-band value ranges, which keeps it shy of a 5.

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

Parameters3/5

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

Schema description coverage is 100%: org_id already includes cross-tool sourcing guidance ('obtain from scf_list_organizations') and scf_id already gives the DOMAIN-NN format with examples. The tool description adds no parameter-level detail beyond loosely echoing scf_id with 'one SCF control,' so the schema does the heavy lifting β€” the baseline 3 applies.

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

Purpose5/5

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

The description uses a specific verb and resource ('Get the rolled-up assessment composite for one SCF control') and enumerates the returned content (composite score, status band, included/missing evidence IDs, mandatory gaps, per-window detail). 'One SCF control' and 'rolled-up' clearly distinguish it from the plural sibling scf_list_control_assessment_composites and from window/evidence-level assessment tools.

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

Usage Guidelines4/5

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

The singular scope ('for one SCF control') gives clear context that this is the single-entity getter versus scf_list_control_assessment_composites, and the async/404 note signals when it is appropriate to call vs wait. However, it never explicitly names an alternative or states when not to use it β€” the routing is implied rather than stated.

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

scf_get_controls_for_riskA
Read-only

List the controls that address a risk code (read β€” viewer role). Works for catalog risks (R-XX-N via the SCF mapping) and custom risks (R-ORG-N via the org's control mappings).

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
risk_codeYesRisk code β€” catalog R-XX-N or custom R-ORG-N

TDQS

A4.2/5.0
Behavior4/5

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

The description reinforces the readOnlyHint=true annotation with 'read β€” viewer role' and adds behavioral context about how risk codes are resolved (via SCF mapping for catalog risks and org's control mappings for custom risks). This goes beyond the annotation by explaining the underlying mapping mechanism, with no contradictions.

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

Conciseness5/5

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

The description is two sentences with no wasted words. The first sentence front-loads the core action and read-only nature, and the second clarifies the supported risk code types. It is appropriately concise and well-structured.

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

Completeness4/5

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

For a simple read-only list with fully documented parameters and a clear result type (controls), the description is largely complete. It lacks explicit output structure details, but for a list tool of this simplicity, the description provides enough for an agent to call it correctly without an output schema.

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

Parameters3/5

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

Schema descriptions cover both parameters fully: org_id is described as 'Organization UUID β€” obtain from scf_list_organizations' and risk_code includes the format 'catalog R-XX-N or custom R-ORG-N'. The description reiterates these formats but does not add new parameter semantics beyond what the schema already provides, so it meets the baseline for 100% coverage.

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

Purpose5/5

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

The description clearly states the action ('List the controls'), the resource ('controls'), and the scope ('that address a risk code'). It also explicitly differentiates from sibling tools like scf_get_risks_for_control (which does the inverse) and scf_list_controls (which lists all controls) by specifying the risk-code association and supporting both catalog and custom risk types.

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

Usage Guidelines4/5

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

The description provides clear context on when to use this tool: it supports catalog risks (R-XX-N) and custom risks (R-ORG-N), and it is read-only with viewer role. However, it does not explicitly name alternative tools or state when not to use it, though the direction (risk β†’ controls) is unambiguous.

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

scf_get_current_userA
Read-only

Get the authenticated caller's profile: name, email, organization memberships, and per-org role.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true, and the description adds context by tying the operation to the authenticated caller and specifying the profile contents returned. This gives an agent useful behavioral understanding beyond the annotation alone, though it does not discuss error cases or exact response structure.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that names the action, resource, and the key fields returned. Every word earns its place with no redundancy or filler.

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

Completeness5/5

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

For a zero-parameter read-only profile lookup, the description fully covers purpose, return content, and the authentication context. No output schema exists, but the enumerated fields give an agent sufficient expectation of what the tool returns.

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

Parameters4/5

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

The tool has zero parameters and 100% schema coverage, so there is no parameter burden for the description to carry. The description correctly implies the operation requires no input, which is consistent with the empty schema.

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

Purpose5/5

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

The description states a specific verb ('Get') and a specific resource ('the authenticated caller's profile'), and enumerates the returned fields: name, email, organization memberships, and per-org role. This clearly distinguishes it from sibling tools that list organizations or members.

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

Usage Guidelines4/5

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

The description identifies the exact use case: retrieving the current authenticated caller's identity and organization context. It does not explicitly contrast with sibling tools, but no sibling appears to be an alternative for this operation, so the context is sufficiently clear.

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

scf_get_deficiencyA
Read-only

Get one deficiency: title, priority, status, owner, due date, control or risk it is against, source, root cause, retest note and who closed it.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
deficiency_idYesDeficiency UUID β€” obtain from scf_list_deficiencies

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, so safety is already covered; the description adds value by disclosing the shape of the result (title, priority, status, owner, due date, linked control/risk, source, root cause, retest note, closer), which matters because there is no output schema. It stops short of full transparency (no error/not-found or permission notes) but is well above baseline.

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

Conciseness4/5

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

A single front-loaded sentence with the verb and resource first, followed by an enumeration that earns its place as return-field documentation given the missing output schema. The field list is long but not padded with filler.

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

Completeness4/5

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

For a two-parameter read-only fetch with fully documented params and no output schema, the description supplies the essential missing piece (what comes back). It is nearly complete, lacking only explicit routing guidance relative to the list and summary siblings.

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

Parameters3/5

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

Schema description coverage is 100% and both UUID params already document their formats and where to obtain them (scf_list_organizations, scf_list_deficiencies). The description adds no parameter-level 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.

Purpose4/5

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

States a specific verb ('Get') and resource ('one deficiency') and enumerates the returned fields, which clearly separates it from scf_list_deficiencies and scf_get_deficiency_summary. It does not explicitly name a sibling, so it falls just short of the top score.

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

Usage Guidelines3/5

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

The word 'one' implies a single-record lookup versus the list/summary siblings, but there is no explicit statement of when to choose this tool over scf_list_deficiencies or scf_get_deficiency_summary, and no prerequisites mentioned. Usage is only implied.

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

scf_get_deficiency_summaryA
Read-only

Summarise open deficiencies: open_total, material_open_total, unlinked_open, and open counts per control (with material flag) and per domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=true, so the description usefully adds the scope constraint that only *open* deficiencies are counted and enumerates the four metric families returned. It stops short of describing pagination, time window, or any filtering behavior, but it meaningfully extends the safety-only annotation.

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

Conciseness4/5

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

A single front-loaded sentence that leads with the verb and resource before enumerating output metrics. The dense field list is justified because no output schema exists, though the parenthetical "(with material flag)" slightly interrupts scanning.

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

Completeness4/5

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

With no output schema, the description compensates by naming the returned metrics, and readOnlyHint covers the safety profile for this single-parameter read tool. The main remaining gap is the absence of any statement about time range or whether counts are org-wide, which an agent might want to know.

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

Parameters3/5

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

Only one parameter (org_id) exists and its schema description is fully populated, including a pointer to scf_list_organizations for discovery. The description adds no parameter semantics of its own, so the baseline 3 applies since the schema carries the full burden.

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

Purpose4/5

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

The description names a specific aggregation action ("Summarise open deficiencies") and enumerates the exact metrics produced (open_total, material_open_total, unlinked_open, per-control and per-domain counts). It is clearly distinct from siblings like scf_list_deficiencies or scf_get_deficiency, though it never names those siblings as alternatives.

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

Usage Guidelines3/5

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

Usage is implied by the word "Summarise" and the aggregate metrics listed, so an agent can infer this is the rollup view rather than the detail view. However, there is no explicit statement of when to prefer this over scf_list_deficiencies, nor any prerequisite or scoping guidance.

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

scf_get_documentA
Read-only

Get one generated document in full (read β€” viewer role): metadata plus every section with its merge state β€” clean, edited, conflicted or pending retirement. Use this to read a document.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
document_idYesGenerated document UUID β€” obtain from scf_list_documents

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already flag readOnlyHint=true, and the description reinforces this with 'read' and adds extra behavioral context: the required viewer role, full-document scope, and the merge-state values returned (clean, edited, conflicted, pending retirement). This goes beyond the annotation without contradicting it.

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

Conciseness5/5

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

One compact, front-loaded sentence states purpose, required role, return scope, and merge-state vocabulary with no wasted words.

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

Completeness4/5

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

For a simple two-parameter read with readOnlyHint and fully documented parameters, the description adequately conveys what the caller receives. It could be slightly more complete by pointing to the section-level sibling or mentioning access failure behavior, but nothing essential is missing for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, with both org_id and document_id documented and linked to scf_list_organizations and scf_list_documents. The description itself adds no parameter-level semantics, so it meets the baseline of 3 rather than exceeding it.

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

Purpose5/5

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

The description names a specific operation ('Get one generated document in full'), the resource (a single generated document), and the scope (metadata plus every section with merge state). This differentiates it from list-style siblings like scf_list_documents and section-level tools like scf_get_document_section_generated, and closes with an explicit invocation cue: 'Use this to read a document.'

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

Usage Guidelines4/5

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

It clearly establishes when to use the tool: when an agent needs to read a full generated document as a viewer. However, it does not explicitly name sibling alternatives or state when not to use it, such as pointing to scf_get_document_section_generated for a single section or scf_get_document_history for history.

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

scf_get_document_generation_statusA
Read-only

Poll this organization's in-flight document generation (read β€” viewer role). Returns {status: 'idle'} when nothing is running. Call after scf_generate_documents until it completes.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, and the description reinforces this with '(read β€” viewer role)'. It adds useful behavioral detail beyond the annotation by documenting the idle sentinel: Returns {status: 'idle'} when nothing is running, and signals that it reflects in-flight work.

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

Conciseness5/5

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

Three short, purposeful sentences with no filler. The core purpose is front-loaded, the viewer-role note is concise, and the return behavior and usage trigger are each stated in one sentence.

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

Completeness4/5

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

For a simple one-parameter polling tool with no output schema, the description is largely complete: it states the idle return value, the relationship to scf_generate_documents, and when to stop polling. It does not explicitly document the non-idle status values, but 'until it completes' sufficiently implies the polling contract.

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

Parameters3/5

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

The input schema already covers the single org_id parameter with a clear description and source instruction ('obtain from scf_list_organizations'). The tool description itself adds no additional parameter meaning, so a baseline of 3 is appropriate given 100% schema coverage.

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

Purpose5/5

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

The description states a specific verb ('Poll'), a specific resource ('this organization's in-flight document generation'), and clarifies it is a read operation with viewer role. It clearly distinguishes itself from the large sibling set by focusing on document generation status, and even names its companion tool scf_generate_documents.

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

Usage Guidelines4/5

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

The description gives explicit context: call it after scf_generate_documents and keep polling until completion. It does not explicitly name alternative status tools or say when not to use it, but the 'Call after...' instruction is clear enough for correct usage.

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

scf_get_document_historyA
Read-only

Get a document's version and transition history (read β€” viewer role): who moved it between lifecycle states, when, why, and what each generation version changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
document_idYesGenerated document UUID β€” obtain from scf_list_documents

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, and the description reinforces this with 'read β€” viewer role' while adding meaningful behavioral detail about lifecycle transitions and version changes. It does not mention ordering or pagination, but for a simple read tool with no output schema the disclosed behavior is sufficient.

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

Conciseness5/5

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

A single sentence front-loads the core purpose and then packs in the specific information the history returns. There is no fluff or repetition.

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

Completeness5/5

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

For a two-parameter read-only tool with no output schema, the description is complete enough: it states the purpose, the auth role, and the response content. An agent can decide when to call it and what to expect in return.

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

Parameters3/5

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

The input schema covers both parameters with sourced descriptions (org_id from scf_list_organizations, document_id from scf_list_documents), so schema coverage is 100%. The tool description adds no additional parameter-level meaning, keeping this at the baseline 3.

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

Purpose5/5

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

The description uses a specific verb and resource ('Get a document's version and transition history') and enumerates exactly what the history covers: who moved it, when, why, and what changed per generation. This clearly distinguishes it from related tools like scf_get_document or scf_get_audit_log.

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

Usage Guidelines4/5

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

The description gives clear context by marking the operation as a read for viewer-role users, so an agent knows it is a safe read-only retrieval of document history. It does not explicitly name alternative tools or state when not to use it, so it stops short of a 5.

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

scf_get_document_section_generatedA
Read-only

Get the generator's own version of a section, ignoring any human edit (read β€” viewer role). Use it to see what the platform would produce before resolving a conflict.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
versionNoGeneration version number to read; omit for the latest
section_idYesSection identifier from the document detail (scf_get_document). May contain slashes β€” pass it exactly as returned, unescaped.
document_idYesGenerated document UUID β€” obtain from scf_list_documents

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark readOnlyHint=true, and the description adds useful context: 'read β€” viewer role' clarifies permission expectations, and 'ignoring any human edit' reveals a key behavioral trait. It does not contradict annotations and adds value 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.

Conciseness5/5

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

Two sentences carry the purpose, read-only role, behavioral distinction, and intended usage context without fluff. The important 'ignoring any human edit' qualifier is front-loaded in the first sentence.

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

Completeness4/5

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

For a simple read-only get tool with well-documented parameters, the description covers what the tool does, who can use it, and when to use it. There is no output schema, but the return concept is clear from 'get the generator's own version of a section'; a bit more return-shape detail would make it fully complete.

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

Parameters3/5

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

Schema description coverage is 100%, and each parameter already has meaningful descriptions (source tool, formatting warning for slashes, optional version behavior). The tool description itself adds no parameter-level 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Get the generator's own version of a section', and crisply distinguishes it from human-edited content by stating 'ignoring any human edit'. This makes the tool's unique purpose clear against similar document/section siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit use case: 'Use it to see what the platform would produce before resolving a conflict.' This tells the agent when to invoke it, though it does not explicitly name alternatives like scf_get_document or scf_resolve_document_section for contrast.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_document_settingsA
Read-only

Get the organization's document-generation settings (read β€” viewer role): whether doc-gen is enabled, whether derivative generators are enabled, and the SCF licence acknowledgement state.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral context: the viewer-role requirement and the specific settings that will be returned. It also implicitly conveys there are no side effects, which is consistent with the read-only hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is a single sentence that front-loads the operation and resource, then compactly lists the three settings returned. There is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter with one well-documented parameter, the description covers role, operation, resource, and return contents. No output schema exists, but the list of returned settings compensates adequately, so nothing important is missing for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the org_id parameter already has a helpful description pointing to scf_list_organizations. The tool description does not need to add parameter semantics; the schema carries the full burden, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and names the exact resource ('organization's document-generation settings') with the precise fields returned. It clearly differentiates from the sibling 'scf_update_document_settings' by emphasizing the read-only nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context by stating this is a read operation appropriate for a viewer role and enumerates what it returns. It does not explicitly name alternatives or exclusions, but the read vs. update contrast with sibling tools is evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_domainA
Read-only

Get one SCF domain with its controls (read, no org). Deprecated controls are excluded unless include_deprecated is set; a deprecated domain still resolves, badged.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesDomain code or slug, e.g. 'IAC' β€” obtain from scf_list_domains
include_deprecatedNoInclude deprecated controls (default false)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds useful non-obvious behavior: deprecated controls are excluded by default, and a deprecated domain still resolves but is badged. This goes beyond what the annotation alone communicates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. The first sentence front-loads the core purpose, and the second conveys the key behavioral nuance. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only getter with two well-documented parameters, the description covers purpose, filtering behavior, and identifier edge cases. There is no output schema, but 'domain with its controls' and 'badged' provide sufficient return-context for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds extra meaning by explaining the include_deprecated default behavior and by revealing that a deprecated domain identifier still resolves and comes back badged, which is not present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get one SCF domain with its controls.' It also includes scope ('read, no org') that distinguishes it from list-style or org-scoped siblings like scf_list_domains, making the tool's purpose immediately unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: it is a read-only fetch of one domain, not org-scoped, with deprecated controls excluded unless explicitly included. It does not explicitly name alternative tools or state when not to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_engagementA
Read-only

Get one audit engagement's detail (read β€” viewer role, or an auditor assigned to this engagement).

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
engagement_idYesAudit engagement UUID β€” obtain from scf_list_engagements

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description's 'read' label aligns with that. The description adds useful behavioral context by specifying role-based access restrictions (viewer or assigned auditor), which is not present in the annotations or schema. No contradiction found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler. The core action and resource are front-loaded, and the role restriction is compactly appended in parentheses. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read-only getter with no output schema, the description covers purpose, resource, and authorization context. It does not describe return shape, but the absence of an output schema lowers that burden. Minor gap: it doesn't mention sibling tools that return different engagement-related views, but the tool is simple enough that this is not a major omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters already have descriptive text ('Organization UUID β€” obtain from scf_list_organizations', 'Audit engagement UUID β€” obtain from scf_list_engagements'). The tool description itself adds no parameter-level detail, so the schema carries the burden; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get one audit engagement's detail.' It clearly identifies the singular engagement focus and includes role context. It doesn't explicitly differentiate from sibling tools like scf_get_engagement_scope or scf_get_engagement_presentation, but 'detail' is reasonably distinct from those.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives access/role context ('read β€” viewer role, or an auditor assigned to this engagement') which implies when the tool is usable, but it does not explicitly state when to choose this over alternatives such as scf_list_engagements, scf_get_engagement_scope, or scf_get_engagement_presentation. Usage context 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.

scf_get_engagement_presentationB
Read-only

Get the engagement's scope presented natively in one of its frameworks (read β€” viewer, or assigned auditor): SCF controls organised by that framework's own structure, as an auditor reads them.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
frameworkYesFramework to present from β€” must be one of the engagement's own frameworks
engagement_idYesAudit engagement UUID β€” obtain from scf_list_engagements

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description reinforces this with 'read β€” viewer, or assigned auditor'. It adds that the output is organized by the framework's own structure, but it does not disclose error/access-failure behavior or response shape, so it adds only moderate context beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the core action and packs the distinguishing behavior into a parenthetical and colon. It is compact, though the 'read β€” viewer, or assigned auditor' phrase is somewhat dense and could be clearer.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with three required parameters and a fully documented schema, the description is mostly sufficient. It gives a high-level idea of the return (controls organized by framework structure), but because there is no output schema it could say more about exact return format, and it does not provide explicit routing guidance relative to sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (org_id, engagement_id, framework) are already documented in the schema. The description merely echoes the framework constraint and does not add new syntax or parameter-level detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: get the engagement's scope rendered in a chosen framework's native structure. The phrase 'as an auditor reads them' and 'one of its frameworks' helps distinguish it from generic scope/control-list siblings, though it never explicitly names an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance, and no sibling alternatives are named. The 'natively in one of its frameworks' wording implies its niche versus similar tools like scf_get_engagement_scope or scf_list_scoped_controls, but the agent must infer this.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_engagement_queryA
Read-only

Get one auditor query with its full response thread (read β€” viewer role, or an assigned auditor).

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
query_idYesQuery UUID β€” obtain from scf_list_engagement_queries
engagement_idYesAudit engagement UUID β€” obtain from scf_list_engagements

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation readOnlyHint=true already covers the safety profile, so the description's '(read)' echo adds little. It does add useful behavioral context via the role requirement and the 'full response thread' scope, but it does not describe return shape or error behavior. This is comparable to the calibration example where annotations carry most of the safety weight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence front-loads the verb and resource, then appends the read semantic and role constraint. There is no filler, repetition, or extraneous detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with three well-documented UUID parameters and no output schema, the description covers what is returned (one query plus its full response thread) and who can call it. The only notable gap is that it does not enumerate the fields inside the response thread, which is minor given the operation's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each UUID parameter includes provenance ('obtain from scf_list_engagements', etc.). The description itself adds no parameter-level detail beyond saying the tool fetches one query and its thread, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), a singular resource ('one auditor query'), and a distinguishing feature ('full response thread'). It is clearly differentiated from sibling query tools like scf_list_engagement_queries, scf_create_engagement_query, and scf_respond_to_engagement_query.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by labeling the call as a read and stating the access prerequisite ('viewer role, or an assigned auditor'). It does not explicitly name alternatives or exclusions, but the schema's 'obtain from' instructions for each UUID parameter effectively guide the agent to the right lookup flow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_engagement_scopeA
Read-only

Get an engagement's frozen control scope (read β€” viewer role, or an assigned auditor). Rows carry a catalog lifecycle badge, so controls deprecated since the freeze still render, marked.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
engagement_idYesAudit engagement UUID β€” obtain from scf_list_engagements

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses important behavioral details: the scope is frozen, rows carry a catalog lifecycle badge, and controls deprecated since the freeze still render as marked. This gives the agent meaningful expectations about the data without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence with no filler. It front-loads the core purpose, then adds the role constraint and the key behavioral nuance about deprecated controls in a compact, efficient way.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only tool with fully documented parameters, the description is complete enough for an agent to select and invoke it correctly. It covers what the tool does, who can call it, and an important output behavior, so no critical missing context remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers both parameters fully, including format, required status, and provenance instructions ('obtain from scf_list_organizations' / 'scf_list_engagements'). The description adds no parameter-specific semantics, but none are needed given the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and a precise resource ('an engagement's frozen control scope'), and clarifies that this is a read operation. The phrase 'frozen control scope' distinguishes it from related sibling tools like scf_list_scoped_controls, which would presumably return the current scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly establishes the context: use this tool to retrieve the frozen control scope for an engagement, and it notes the role requirements (viewer or assigned auditor). It does not explicitly name alternative tools or state when not to use it, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_evidenceA
Read-only

Get one evidence tracking record (read β€” viewer role): tracked flag, collection method, owner, assignee, frequency, system, maturity level and its catalog deprecation badge.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
evidence_idYesCatalog evidence ID, e.g. E-IAM-01 β€” obtain from scf_list_evidence_catalog

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, but the description adds the 'viewer role' detail and enumerates the returned fields (tracked flag, collection method, etc.), which goes beyond the annotation. No contradictions found; the description consistently reflects a read-only operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the core action and then lists the relevant fields. It is efficient with no fluff, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter with two parameters, the description is fully sufficient. It lists the exact fields the agent can expect in the response, and the schema covers parameter sourcing. There is no output schema, but the field list compensates. Nothing essential is missing for a correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both org_id and evidence_id fully documented including examples and how to obtain them. The description adds no new parameter information; it only mentions output fields. Baseline 3 is appropriate given the schema's thoroughness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get one evidence tracking record') and the resource, and lists the specific fields returned. It distinguishes itself from list-style tools (scf_list_evidence) and catalog-specific tools (scf_get_catalog_evidence) by focusing on a single tracking record, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes role context ('viewer role') and implies a single-record fetch, but does not explicitly mention alternatives or when not to use it. With many sibling tools, an agent could benefit from explicit routing (e.g., 'use scf_get_catalog_evidence for catalog metadata'). This is a clear gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_evidence_assessmentA
Read-only

Get the AI assessment for an evidence file: status, relevance score (0–100), structured findings, summary, and audit metadata (model, tokens, cost). Poll after scf_trigger_evidence_assessment.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
file_idYesEvidence file UUID β€” obtain from scf_list_evidence_files
evidence_idYesEvidence ID (e.g., 'ERL-IAM-001') β€” obtain from scf_list_evidence

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as read-only, and the description adds meaningful behavioral context by indicating that this is an async polling operation triggered by scf_trigger_evidence_assessment. It also previews the status field, which implies the result may be in progress, adding value beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that front-loads the core purpose, then efficiently enumerates the key returned fields and the required polling relationship. There is no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by listing the expected response contents (status, relevance score, findings, summary, audit metadata). The parameter details are fully covered by the input schema, and the async polling relationship is explicitly stated, making this sufficiently complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the input schema already explains how to obtain each parameter (e.g., 'obtain from scf_list_evidence_files'). The tool description itself adds little about parameter semantics, so it stays at the schema-covered baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: 'Get the AI assessment for an evidence file', and lists the returned content (status, relevance score, structured findings, summary, audit metadata). It does not explicitly distinguish itself from closely named siblings like scf_get_evidence_assessment_summary, so it misses full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage context with 'Poll after scf_trigger_evidence_assessment,' telling the agent when it is appropriate to call this tool. It does not, however, clarify when to prefer a sibling such as scf_get_evidence_assessment_summary over this one, so exclusions are not fully addressed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_evidence_assessment_summaryA
Read-only

Get aggregate AI assessment metrics for the organization dashboard: total assessed, counts by status, unassessed count, average relevance score, and total cost in cents.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safe read-only nature is covered. The description adds useful context about the scope (organization dashboard) and the exact metrics returned, but it does not disclose potential nuances like how statuses are categorized, whether aggregates are point-in-time or time-bounded, or how average relevance is computed. Given the annotation coverage, a middle score 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single well-structured sentence that front-loads the core purpose and then compactly lists the returned metrics. Every word earns its place, with no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one well-documented parameter, the description provides enough context for an agent to select and invoke it correctly. It names the data returned, the aggregation scope, and the cost unit. The only minor gap is the absence of any note about response shape or empty-result behavior, but the output schema is absent and the tool is simple enough that this is not a significant omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter, org_id, and its schema description is 100% covered, even providing a source hint ('obtain from scf_list_organizations'). The tool description adds no parameter-level meaning beyond the schema, but none is needed given the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('aggregate AI assessment metrics') and enumerates the exact returned fields (total assessed, counts by status, unassessed count, average relevance score, total cost in cents). It clearly identifies what the tool does, though it does not explicitly differentiate it from sibling summary tools like scf_get_evidence_validation_summary or scf_get_window_assessment_summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for the organization dashboard' implies the intended use case: retrieving high-level aggregate assessment metrics for display or reporting. However, there is no explicit guidance on when to prefer this tool over sibling summary tools, nor any exclusions or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_evidence_fileA
Read-only

Get metadata and a pre-signed download URL (15-min expiry) for a single evidence file. Use to inspect or retrieve a specific uploaded artifact.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
file_idYesEvidence file UUID β€” obtain from scf_list_evidence_files
evidence_idYesEvidence ID (e.g., 'ERL-IAM-001') β€” obtain from scf_list_evidence

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as read-only, so the safety profile is covered. The description adds meaningful behavioral context beyond the annotation: the tool returns metadata plus a pre-signed download URL, and the URL expires in 15 minutes. This helps the agent understand response timing and re-invocation needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The key facts β€” metadata, pre-signed URL, 15-minute expiry, single artifact β€” are front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only single-file retrieval tool with 100% schema coverage and three well-documented parameters, the description conveys the essential behavior. There is no output schema, so slightly more detail about what 'metadata' includes could improve completeness, but it is adequate for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter already has a clear description with a source command for obtaining its value. The tool description does not add additional parameter-level meaning, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: retrieving metadata and a pre-signed download URL for a single evidence file. The phrase 'single evidence file' and 'specific uploaded artifact' clearly distinguishes this from listing or aggregation siblings like scf_list_evidence_files or scf_get_evidence_maturity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use the tool to inspect or retrieve a specific uploaded artifact, which gives clear context for when it applies. It does not name alternatives or exclusion conditions, but the 'single file' wording implicitly sets it apart from list or bulk operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_evidence_healthA
Read-only

Get evidence collection health for the organization: per-item freshness status (green/amber/red) against collection frequency, with a roll-up summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral context by specifying the output structure and the classification scheme (green/amber/red against collection frequency). For a read-only health query, the description provides sufficient transparency about what the agent should expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence front-loads the action and resource, then packs the essential output semantics into a compact clause. No filler, no repetition of schema information, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only tool with no output schema, the description conveys enough: what is returned (per-item freshness status and roll-up summary), the scope (organization), and the evaluation basis (collection frequency). The agent can select and call this tool confidently without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: org_id is fully documented with type, format, pattern, and a source hint ('obtain from scf_list_organizations'). The description only weakly reinforces the organization scope and adds no parameter-level detail 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource ('get evidence collection health') and defines the output at a useful level of detail: per-item freshness status (green/amber/red) against collection frequency plus a roll-up summary. This clearly distinguishes it from sibling tools like maturity or validation summaries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for the organization' clarifies that this tool reports organization-level health rather than item-level detail, and the mention of freshness against collection frequency gives an agent a clear basis for choosing it. However, it does not explicitly name alternatives or exclusion conditions, so it stops short of full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_evidence_item_maturityA
Read-only

Get one evidence item's collection maturity: current level (1=Ad Hoc to 5=Optimized), contributing factors, upgrade potential, and tracking state.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
evidence_idYesEvidence ID (e.g., 'E-RSK-02') β€” obtain from scf_list_evidence

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes that this is a safe read operation, so the description does not need to restate that. It adds some useful behavioral context by listing the returned data dimensions, but it does not disclose additional traits such as auth requirements, rate limits, pagination, or what happens when the evidence item is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It states the scope, defines the level scale inline, and lists the output categories compactly. This is an efficient and well-structured description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining return values, and it does so by naming current level, contributing factors, upgrade potential, and tracking state. The inputs are fully documented in the schema, and the readOnlyHint covers safety. A small gap is that 'tracking state' and 'upgrade potential' are left terse, and no relationship to the similar evidence-maturity sibling is mentioned, but for a simple read tool this is largely adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters already have meaningful descriptions with provenance instructions ('obtain from scf_list_organizations' and 'obtain from scf_list_evidence'). The tool description itself adds no parameter-level semantics beyond what the schema provides, so the baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource pair: 'Get one evidence item's collection maturity', which clearly identifies both the action and the exact scope. It also enumerates what the tool returns (current level on the 1-5 scale, contributing factors, upgrade potential, tracking state), making its purpose unambiguous and distinguishing it from the collection-level sibling scf_get_evidence_maturity via the 'one evidence item' qualifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this tool is for a single evidence item's maturity, giving the agent a straightforward context for when to select it. However, it does not explicitly name alternatives or state when not to use it, such as pointing to scf_get_evidence_maturity for overall maturity or scf_get_evidence_upgrade_recommendations for detailed upgrade paths.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_evidence_maturityA
Read-only

Get the organization's evidence maturity summary: average maturity score, automation percentage, distribution by maturity level, and improvement opportunities.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds useful behavioral context beyond that by enumerating what the summary contains: average maturity score, automation percentage, distribution by maturity level, and improvement opportunities.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the verb and resource, then lists the return contents in a compact list. Every element earns its place and no unnecessary words are present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only summary tool with one fully documented parameter, the description covers the key return areas sufficiently. It does not describe the exact response structure, but no output schema exists and the listed fields give an agent enough context to invoke and interpret the call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the org_id parameter already has a clear description telling the agent to obtain it from scf_list_organizations. The tool description itself adds no additional parameter-level 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get'), a clear resource ('organization's evidence maturity summary'), and the exact data included. The 'organization's' qualifier and contents distinguish it from sibling tools like scf_get_evidence_item_maturity and scf_get_evidence_validation_summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies org-level use by naming the organization's summary, but it provides no explicit when-to-use guidance or exclusions. It does not tell the agent to prefer scf_get_evidence_item_maturity for item-level maturity questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_evidence_suggestionsA
Read-only

Get system-aware collection suggestions for one evidence item: which tracked system currently collects it, which in-scope systems are capable of collecting it, and tailored collection guidance.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
evidence_idYesEvidence ID (e.g., 'E-RSK-02') β€” obtain from scf_list_evidence

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation readOnlyHint=true already communicates that this is a safe read operation, and the description does not contradict it. The description adds meaningful behavioral detail beyond the annotation by enumerating what the tool returns: current collector, capable systems, and tailored guidance. It does not discuss error cases or permission requirements, but those are minor given the read-only annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-structured sentence front-loads the core action and then expands with a colon-delimited list of exactly what the response covers. Every phrase adds value, with no filler or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description compensates for the absent output schema by explicitly listing the main components of the returned suggestions. For a simple two-parameter read-only tool, this is sufficient context. It does not cover edge cases such as no tracked system or invalid evidence ID, but those are not necessary for correct tool selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented with types and source hints like 'obtain from scf_list_organizations.' The description does not need to repeat parameter details and adds no new parameter-level semantics. Baseline 3 is appropriate because the schema carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: 'Get system-aware collection suggestions for one evidence item.' It distinguishes itself from the many evidence sibling tools by clarifying the output scope: tracked system, capable in-scope systems, and tailored guidance. This is not a tautology and leaves little ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use it: for a single evidence item when the agent needs collection suggestions and system comparisons. It does not explicitly name alternatives or provide when-not-to-use exclusions, but the 'one evidence item' scoping and 'system-aware' framing give strong contextual direction in a crowded tool set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_evidence_upgrade_recommendationsA
Read-only

Get upgrade-path recommendations for maturing one evidence item's collection: target level, effort, impact, and step-by-step actions β€” the same guidance shown in the platform UI.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
evidence_idYesEvidence ID (e.g., 'E-RSK-02') β€” obtain from scf_list_evidence

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already declared, the safety profile is covered by annotations. The description adds useful context by specifying what the response contains (target level, effort, impact, step-by-step actions) and that it mirrors platform UI guidance, but it does not disclose response format, pagination, or any other behavioral traits. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-structured sentence that front-loads the verb and resource, lists the output components in a compact colon-separated form, and closes with a grounding remark about the platform UI. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with two fully documented parameters and no output schema, the description compensates well by naming the expected output components. Minor gaps remain: no indication of response structure/format beyond the component list and no explicit exclusions against sibling tools, but nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the parameter descriptions are genuinely helpful, including source-lookup hints ('obtain from scf_list_organizations') and an example format ('E-RSK-02'). The tool description itself adds no parameter-level meaning, so the baseline of 3 applies as the schema carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), resource ('upgrade-path recommendations'), and scope ('one evidence item's collection'), then enumerates concrete output components (target level, effort, impact, step-by-step actions). This is clear enough for an agent to understand what the tool does, though it does not explicitly differentiate itself from the similarly named sibling scf_get_evidence_suggestions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: an agent can infer this tool is for when it needs upgrade/maturity-path recommendations for a single evidence item, and the parameter descriptions hint where to obtain IDs. However, the description names no alternatives and gives no when-not-to-use guidance, leaving the distinction from scf_get_evidence_suggestions and scf_get_evidence_maturity to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_evidence_validationA
Read-only

Get the validation result for a single evidence file: status (valid/warning/partial/invalid), completeness score, individual rule findings, source, and timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
file_idYesEvidence file UUID β€” obtain from scf_list_evidence_files
evidence_idYesEvidence ID (e.g., 'ERL-IAM-001') β€” obtain from scf_list_evidence

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers the safety profile, and the description adds meaningful behavioral detail by specifying exactly what the response contains, especially valuable given no output schema exists. It does not describe edge cases such as missing validation results, but for a simple read operation this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the operation, the scope, and the key returned fields without any filler. Every element earns its place and the structure makes it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only getter with no output schema, the description covers the essential return values and the parameter schema handles the inputs. It could more explicitly differentiate itself from summary or maturity tools, but the per-file scope and detailed field list make it adequately complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter already has a description with guidance on where to obtain the value (e.g., 'obtain from scf_list_organizations'). The tool description adds no parameter-level meaning beyond the schema, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Get the validation result for a single evidence file') and enumerates the return contents (status, completeness score, rule findings, source, timestamp). This clearly distinguishes it from siblings like scf_get_evidence_validation_summary by emphasizing per-file granularity and individual rule findings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for a single evidence file' implies this tool is for detailed, per-file validation data rather than aggregate summaries, but it never explicitly names alternatives or states when not to use it. An agent must infer the intended usage from the description and sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_evidence_validation_summaryA
Read-only

Get aggregate evidence validation metrics for the organization dashboard: total files validated, counts by status (valid/warning/partial/invalid), and overall pass rate.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers the safety profile. The description adds useful context about the aggregated nature and output fields, but does not disclose additional behavioral traits such as potential data staleness, scoping rules, or whether the metrics are computed live. With annotations present, this level is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, information-dense sentence that front-loads the main action and resource, then specifies exactly what is returned. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only aggregate tool with one well-documented parameter and no output schema, the description fully conveys the purpose and expected return contents. It is complete enough for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage for the single parameter, including format, pattern, and a pointer to scf_list_organizations for obtaining valid org_id values. The description does not add further parameter-level 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('aggregate evidence validation metrics'), and clearly enumerates the returned data (counts by status, pass rate). It differentiates itself as an organization-dashboard aggregate, which distinguishes it from per-file validation tools, though it does not explicitly name sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for the organization dashboard' implies the intended context, but the description offers no explicit guidance on when to use this tool versus closely related siblings like scf_get_evidence_validation, scf_get_evidence_health, or scf_get_evidence_assessment_summary. No exclusions or alternative conditions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_framework_scope_summaryA
Read-only

Get framework coverage and selection state (read β€” viewer): each framework's coverage, basis, obligation_type and obligation_source, and basis_counts (in-scope controls by mcr/dsr/unclassified).

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the read nature is covered; the description nonetheless adds the 'viewer' role requirement, which is auth context the annotations do not supply. It does not discuss pagination or result size, but for a summary endpoint that is a minor omission.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense sentence with the core purpose front-loaded and the field inventory in a parenthetical. Every clause carries content, though the parenthetical is somewhat packed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the returned fields (coverage, basis, obligation_type, obligation_source, basis_counts by mcr/dsr/unclassified), which compensates well for the missing schema. It says nothing about pagination or org scoping, a small remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage, including the hint to obtain org_id from scf_list_organizations. The description adds no further parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Get framework coverage and selection state') and enumerates the returned fields, so an agent knows this is a read-summary of framework scoping rather than the raw framework list (scf_list_frameworks) or aggregate stats (scf_get_scoping_stats). It stops short of naming 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'read β€” viewer' signals a read-only operation available to viewers, and the field list implies a summarization use case. There is no explicit statement of when to choose this over scf_get_scoping_stats or scf_list_scoped_controls, nor any exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_frequency_healthA
Read-only

Report evidence whose declared frequency disagrees with the observed upload cadence over the last 90 days (read β€” viewer role). Only misaligned items are returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals safety, and the description adds meaningful behavior beyond that: it states the viewer role, the 90-day lookback window, and that only misaligned items are returned. This gives the agent a clear behavioral contract without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that covers purpose, time window, permission, and output filtering without filler. Every clause contributes information an agent needs to select and invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only tool with a fully documented schema, the description supplies the essential invocation context: what the report detects, the time window, the permission level, and the output filter. It does not describe result field shapes or pagination, but no output schema exists and the core selection/invocation needs are met.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already fully documents the single org_id parameter, including a UUID format and a pointer to scf_list_organizations for obtaining it. The description adds no additional parameter-specific meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Report') and identifies a precise resource: evidence whose declared frequency disagrees with observed upload cadence over the last 90 days. It also distinguishes itself from broader evidence-health siblings by emphasizing that only misaligned items are returned, so an agent can tell this apart from tools like scf_get_evidence_health.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: it applies to evidence frequency-vs-cadence mismatches over a 90-day window, and it states that the operation is a read available to a viewer role. It does not explicitly name alternative tools or exclusions, but the context is specific enough for an agent to infer when to call it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_journeyA
Read-only

Get the organization's guided journey β€” the staged path it walks, with preconditions evaluated (read β€” viewer role). Never writes: an org without a journey sees the default template as a preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description adds meaningful behavior: it explicitly states 'Never writes', names the viewer role requirement, notes preconditions are evaluated, and discloses that an org without a journey receives a default-template preview. This gives an agent clear expectations without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no filler. The core purpose is front-loaded, and the important non-writing behavior plus preview fallback are packed into the second sentence. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter, read-only getter with no output schema, the description is complete: it explains what is returned in concept (guided journey with preconditions), the authorization context, and the no-journey fallback. An agent has enough to decide to call it and know what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the single parameter org_id already includes a useful description ('Organization UUID β€” obtain from scf_list_organizations'). The tool description adds little parameter-level meaning beyond connecting org_id to 'the organization's journey', so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource ('the organization's guided journey') and the action ('Get'), and distinguishes it from siblings like scf_list_journey_templates by emphasizing the org-specific staged path rather than the template library. The preview-fallback clause further sharpens what this tool returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: this is the read-only way to read the org's journey, appropriate for a viewer-role caller, and explains the fallback when no journey exists. It lacks an explicit exclusion such as 'for templates use list_journey_templates', so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_latest_vendor_assessmentA
Read-only

Get a vendor's latest completed AI security assessment: RAG status, recommendation, executive summary, report_markdown/report_json. 404 if none completed yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
vendor_idYesVendor UUID β€” obtain from scf_list_vendors

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, and the description adds value by disclosing the 404 behavior when no completed assessment exists and by listing the specific return fields (RAG status, recommendation, executive summary, report_markdown/report_json). This goes beyond the structured annotation data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence that covers purpose, returned content, and error behavior with no wasted words. It earns every word it uses.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema present, the description compensates by naming the included report fields, and it covers the key edge case (404 when no completed assessment exists). Parameters are fully handled by the schema, and the read-only stance is covered by annotations. Nothing needed to call this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both org_id and vendor_id already carry actionable descriptions ('obtain from scf_list_organizations' and 'obtain from scf_list_vendors'). The tool description does not add additional parameter-level meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), a specific resource ('a vendor's latest completed AI security assessment'), and even enumerates the fields returned. It distinguishes itself from sibling tools like scf_get_vendor_assessment and scf_list_vendor_assessments by emphasizing 'latest completed'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when you need the latest completed assessment, and it notes a 404 condition. However, it does not explicitly name alternatives or state when not to use it, leaving the agent to infer which sibling tool is appropriate in other scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_notificationsA
Read-only

Get the caller's notifications: assignments, comments, status changes and alerts, including risk_acceptance_expired (a risk) and control_validation_due (a control).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (1–100, default 25)
unread_onlyNoReturn only unread notifications (default false)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already establishes this as a safe read, so the description's added value is modest: it scopes results to the current caller and clarifies that risk_acceptance_expired is a risk-type alert and control_validation_due a control-type alert. It says nothing about ordering, pagination behavior, or read/unread state beyond the parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that leads with the verb and resource, then lists contents. The parenthetical '(a risk)' / '(a control)' clarifications are useful but slightly noisy; overall it is efficient with little waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read tool with complete schema coverage and annotations declaring read-only behavior, the description covers the essentials. The lack of an output schema is partly offset by the enumerated notification types, though pagination and result ordering remain unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (limit and unread_only are both documented inline with defaults and ranges), so the schema carries parameter meaning. The description adds no syntax, default, or semantics beyond what is already in 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get the caller's notifications') and then enumerates the notification categories it returns (assignments, comments, status changes, alerts), which makes the tool's scope concrete. It does not explicitly name the nearest sibling (scf_mark_notifications_read), so sibling differentiation is only implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'the caller's notifications' implies a personal inbox use case, but there is no statement of when to use this versus alternatives such as scf_mark_notifications_read or scf_get_org_work_queue, and no exclusions. Usage is 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.

scf_get_organizationA
Read-only

Get one organization's detail: subscription tier, member count, usage limits, and settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals this is a safe read operation. The description adds value beyond the annotation by stating what data the response contains (subscription tier, member count, usage limits, settings), which helps an agent predict the tool's output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the action, the target resource, and the key return fields with no filler. Every part of the sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter, read-only retrieval tool, the description is largely complete: it identifies the resource, the required input source, and the expected detail categories. There is no output schema, but the description compensates by listing the major output areas, though it does not detail error behavior or authorization requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the org_id property description already explains the UUID and how to obtain it from scf_list_organizations. The main description adds no additional parameter semantics, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('one organization's detail') and then enumerates the exact data categories returned: subscription tier, member count, usage limits, and settings. This clearly distinguishes it from sibling list operations like scf_list_organizations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for retrieving a single organization's details rather than listing organizations. The parameter description adds workflow guidance by stating the org_id should be obtained from scf_list_organizations, though it does not explicitly name alternatives or exclusion cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_org_compensating_controlB
Read-only

Get one organisation compensating control: gap, what compensates, effectiveness, risk_code, and whether it is still justified.

ParametersJSON Schema
NameRequiredDescriptionDefault
cc_idYesCompensating control UUID β€” obtain from scf_list_org_compensating_controls
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds value by naming the substantive fields returned (gap, what compensates, effectiveness, risk_code, justification status), but says nothing about lookup failure behavior or whether the control is scoped to the caller's organization context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that packs the verb, resource, and return-field summary with no filler. The trailing field enumeration is slightly list-like but earns its place by previewing the payload.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description wisely summarizes the returned fields, which is the main completeness gap a get-by-id tool could have. Only the missing guidance on lookup failure and sibling routing keeps it below full marks.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both UUID parameters document their own provenance (scf_list_organizations, scf_list_org_compensating_controls). The description adds nothing about the parameters, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Get one organisation compensating control") and enumerates the fields the agent will receive, which makes it distinguishable from list/update siblings. It stops short of explicitly contrasting itself with the catalog-level scf_get_compensating_control, so the org-scoped distinction is inferred from the name 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.

Usage Guidelines2/5

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 guidance in the description; the only retrieval hint (obtain the UUID from the list tool) lives in the schema's parameter descriptions. The agent must infer that this is the detail-fetch counterpart to scf_list_org_compensating_controls.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_org_settingsA
Read-only

Get an organization's settings (read β€” viewer): profile (business_size, mission_statement), per-domain maturity_targets, name, industry, owner teams and feature switches.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true is already given by annotations, but the description adds the required access level ("viewer") and concretely enumerates what the response contains, which is useful scope disclosure for an agent. It does not cover failure modes (e.g. non-existent or unauthorized org) or pagination, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with no filler; the action and permission level come first and the field inventory follows. The nested parenthetical with five comma-separated items is dense but each item earns its place by substituting for an absent output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by listing the returned settings categories, which is exactly the right move. Annotations cover the safety profile. Minor gaps remain around error behavior and whether org_id must be one the caller belongs to.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single org_id parameter already documents its UUID format and points to scf_list_organizations as the source. The description adds nothing 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Get an organization's settings") and enumerates the returned fields (profile, maturity_targets, name, industry, teams, feature switches), which meaningfully separates it from scf_get_organization and scf_update_org_settings. It stops short of naming those siblings explicitly, so the differentiation is inferential 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The "(read β€” viewer)" parenthetical implies the caller needs viewer permission and that this is a read path, but there is no explicit when-to-use guidance, no statement of when to prefer scf_get_organization vs this tool, and no note that scf_update_org_settings is the write counterpart.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_org_work_queueA
Read-only

Get one org's GRC work queue (read β€” viewer): overdue evidence tasks, blocking controls (material first, then catalogue weighting), stale schedules. assigned_to_me narrows to the caller.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
assigned_to_meNoOnly items owned by or assigned to the caller (default false)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already give readOnlyHint=true, so safety is covered; the description adds useful non-structured context: '(read β€” viewer)' discloses the required permission level, and it explains the ordering logic (material first, then catalogue weighting) that governs returned results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the verb and scope, with the filter detail appended. Every clause contributes; the parenthetical is compact rather than wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by enumerating the queue's categories so the agent knows roughly what comes back. Pagination/volume behavior is unstated, which is the main residual gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema; the clause 'assigned_to_me narrows to the caller' restates the schema description rather than adding format or edge-case detail. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get one org's GRC work queue') and enumerates the content categories (overdue evidence tasks, blocking controls, stale schedules). However, a sibling scf_get_work_queue exists and the description never differentiates itself from it, so an agent cannot fully disambiguate 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The org-scoping and the assigned_to_me filter imply a usage context, but there is no explicit when-to-use vs when-not guidance and no reference to the near-identical sibling scf_get_work_queue. Usage 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.

scf_get_posture_snapshotB
Read-only

Get one month's posture snapshot by period (YYYY-MM). 404 if that month has none.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
periodYesMonth of the snapshot, YYYY-MM (e.g. 2026-09)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful error behavior by stating '404 if that month has none,' but it does not describe the snapshot response shape or any permission requirements beyond the read-only annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with zero waste. It front-loads the core action and appends the important 404 behavior compactly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two fully documented parameters, the description is nearly complete: it explains what is fetched, the period format, and the missing-month behavior. The main gap is that no output schema exists and the description does not describe what the returned snapshot contains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters already include descriptions, including where to obtain org_id and the YYYY-MM format for period. The description restates the period format but adds no parameter semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get one month's posture snapshot by period (YYYY-MM).' This is clear enough to know it retrieves a single monthly posture snapshot, but it does not explicitly differentiate itself from sibling tools like scf_list_posture_snapshots or scf_take_posture_snapshot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit when-to-use guidance or alternatives. It implies retrieving one month's snapshot by period, but leaves the agent to infer when to use this instead of scf_list_posture_snapshots or scf_take_posture_snapshot.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_recipe_generation_statusA
Read-only

Get the status of a queued AI recipe-generation job for a system. Poll this after scf_generate_system_recipes.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
system_idYesSystem UUID β€” obtain from scf_list_systems

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read operation, and the description adds useful behavioral context: the operation is an async polling call for a queued job, implying it can be called repeatedly without side effects. It doesn't disclose the full status lifecycle, but the polling guidance adds real value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The purpose is stated first, and the second sentence gives a direct actionable usage instruction referencing the prerequisite tool. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter read-only status tool, the description plus schema provides enough to select and invoke correctly: required IDs, their provenance, and the prerequisite generation call. Since there is no output schema, a note about possible status values would be a nice addition, but its absence does not block correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% parameter coverage with helpful descriptions for both org_id and system_id, including where to obtain them. The tool description adds no parameter-level information, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get the status') with a clear resource ('queued AI recipe-generation job for a system'). It distinguishes itself from the generation tool by explicitly framing this as the status-check step, so an agent can tell it apart from scf_generate_system_recipes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to poll this after scf_generate_system_recipes, giving a clear triggering context and sequencing. It does not enumerate exclusions or alternative tools, but for a standalone status poll the usage guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_reconciliation_runA
Read-only

Get one reconciliation run in detail (read β€” viewer role): the computed diff, every deprecated entity needing a decision, and the planned action currently recorded against each.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
run_idYesReconciliation run UUID β€” obtain from scf_list_reconciliation_runs or scf_preview_catalog_reconciliation

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, and the description adds meaningful context beyond that: it is safe for a viewer role, it returns the computed diff, and it shows the planned action "currently recorded" rather than an applied action. This helps the agent understand the read-only and inspection-oriented nature of the call without contradicting the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single well-structured sentence with no filler. It front-loads the core semantics ("Get one reconciliation run in detail"), then briefly conveys the read-only nature and the key output components, making every part informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read tool with readOnlyHint and full schema coverage, the description is complete. It describes the return content sufficiently even without an output schema, and the parameter descriptions cover where to obtain the required IDs. No critical gaps remain for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters already have helpful descriptions explaining how to obtain org_id and run_id. The description does not add parameter-level detail, but with full schema coverage the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: "Get one reconciliation run in detail," and enumerates its contents (computed diff, deprecated entities needing a decision, planned action). This clearly distinguishes it from scf_list_reconciliation_runs (list vs. single detail) and from action-oriented siblings like scf_set_reconciliation_actions or scf_apply_catalog_reconciliation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the use context clear: use this when you need detailed information about one reconciliation run, and the parenthetical "read β€” viewer role" indicates it is a read operation accessible to viewers. It does not explicitly name alternatives or exclusion cases, but the context is sufficiently clear for an agent to select it over listing or mutation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_riskA
Read-only

Get one risk assessment: inherent and residual scores, treatment plan, owner, review date, and any acceptance (accepted_by, accepted_at, rationale, expires_on, acceptance_state).

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
risk_idYesRisk assessment ID β€” obtain from scf_list_risks

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, so the safety profile is already covered; the description goes further by disclosing the exact contents of the response (inherent/residual scores, treatment plan, owner, review date, and the acceptance sub-fields), which matters because there is no output schema. It says nothing about authorization scope or behavior when the risk is not found, but it adds real value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence β€” the action comes first, then the returned fields. The parenthetical acceptance enumeration is dense but earns its place given the absence of an output schema; no filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with full schema coverage and no output schema, the description compensates by listing the returned fields, which is the main informational gap. Only minor omissions (error/not-found behavior, permission requirements) remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters already document where their IDs come from (scf_list_organizations, scf_list_risks). The description adds no parameter-level detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get one risk assessment') and enumerates the payload, which distinguishes it from list/get-aggregate siblings like scf_list_risks, scf_get_risk_summary, and scf_get_risk_profile. It does not explicitly name those siblings, so an agent must infer the difference from the word 'one'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no statement of alternatives (e.g. use scf_list_risks to find IDs, scf_get_risk_profile for a portfolio view), and no prerequisites. Usage is only implied by the name and the schema notes about where to obtain IDs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_risk_matrixA
Read-only

Get the 5Γ—5 risk matrix data for the organization β€” risk distribution across likelihood Γ— impact, ready for visualization.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes this as a safe read operation. The description adds useful behavioral detail by specifying the output shape (5Γ—5) and semantic content (risk distribution across likelihood Γ— impact), which goes beyond what the annotation alone provides. It does not describe pagination or error behavior, but those are low-risk concerns for a matrix read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, information-dense sentence with no filler. The most important identifying information (5Γ—5 risk matrix data) is front-loaded, followed by the distribution semantics and visualization purpose. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read operation with a read-only annotation, the description is largely complete. It explains what the output represents well enough for an agent to know what to expect, even without an output schema. It could be marginally stronger by noting whether this covers standard and custom risks, but that is not a blocking gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents org_id, including how to obtain it via scf_list_organizations, so the schema carries the parameter-semantics burden. The description adds no additional parameter meaning, which is acceptable given 100% schema coverage. A baseline of 3 is appropriate here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific resource (5Γ—5 risk matrix data), a specific action (Get), and clarifies the matrix dimensions and axes (likelihood Γ— impact). This clearly distinguishes it from sibling tools such as scf_get_risk and scf_get_risk_summary, which focus on individual risks or summarized counts rather than a visualization-ready matrix.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'risk distribution across likelihood Γ— impact, ready for visualization' gives clear context for when to use this tool: when the agent needs matrix-shaped data for visual presentation. It does not explicitly name alternatives or state when not to use it, so it falls short of a full 5, but the intended use case is still clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_risk_profileA
Read-only

Get the organization's risk profile (read β€” viewer role): the severity thresholds that band the 5Γ—5 matrix into low, medium, high and critical. Auto-created with defaults if unset.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds useful context beyond that: the viewer-role authorization and the auto-created default behavior when the profile is unset. The '(read β€” viewer role)' phrasing aligns with the annotation, so there is no direct contradiction; 'auto-created' is best interpreted as system-side default provisioning rather than a user-facing write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the verb and resource are front-loaded, followed by a compact definition of the return value and one behavioral note about defaults. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one parameter, full schema coverage, a readOnlyHint annotation, and no output schema, the description supplies everything an agent needs: what is returned, the role required, and the behavior when the profile is unset. Nothing essential is missing for selecting and invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents org_id as a UUID and tells the agent to obtain it from scf_list_organizations, so schema coverage is 100%. The description adds no parameter-specific detail beyond the schema, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Get the organization's risk profile') and immediately defines what the risk profile is: 'severity thresholds that band the 5Γ—5 matrix into low, medium, high and critical.' This clearly distinguishes it from sibling tools like scf_get_risk_matrix, which would return the matrix itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states the read-only nature, the viewer role, and the auto-created default behavior, giving an agent clear context for when a call will succeed even if no profile has been configured. It does not explicitly name alternatives for other risk-related lookups, but for a simple getter the usage context is sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_risks_for_controlA
Read-only

List the risk codes a control addresses and this organization's assessments of them (read β€” viewer role). Control-to-risk traceability from the SCF catalog mapping.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idYesSCF control ID in DOMAIN-NN format, e.g. IAC-01

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds useful behavioral context beyond the readOnlyHint annotation by stating 'read β€” viewer role' and scoping results to 'this organization'. It does not contradict the annotation and clarifies permission expectations without listing side effects that do not exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler; the action and object are front-loaded, and the parenthetical permission note is efficiently placed. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only two-parameter lookup, the description covers inputs, permission, scoping, and expected output ('risk codes ... and this organization's assessments'). It does not detail the exact response shape, but there is no output schema and the summary is adequate for invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already describes org_id as an Organization UUID and scf_id as an SCF control ID in DOMAIN-NN format with an example. The description adds only a general sense of the control-to-risk relationship, not meaningful parameter-level detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('List'), a concrete resource (risk codes + assessments for a control), and makes the direction explicit: from control to risk. This distinguishes it from the sibling scf_get_controls_for_risk, which is the reverse mapping.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Control-to-risk traceability from the SCF catalog mapping' provides clear context for when this read-only lookup is appropriate. It does not explicitly name the inverse sibling or list exclusions, but the intended use is evident from the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_risk_summaryA
Read-only

Get the organization's aggregate risk summary: totals by severity, treatment status breakdown, and trend data.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint=true annotation already establishes the safe read-only nature, so the description does not need to restate that. The description adds the kind of data returned (severity totals, treatment status, trends), which is useful, but it does not clarify behaviors like time-range scope, data freshness, or whether the summary is computed on demand versus pre-aggregated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that immediately names the resource and then lists the key data components. Every phrase earns its place, with no filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, read-only tool with one fully documented parameter and no output schema, the description fully covers what the agent needs: what the tool does, what data it returns, and how to obtain the required org_id. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: org_id is described with 'Organization UUID β€” obtain from scf_list_organizations', which already tells the agent where to get the value. The description adds no parameter-specific 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and a precise resource ('organization's aggregate risk summary'), then enumerates the contained data: totals by severity, treatment status breakdown, and trend data. This clearly differentiates it from siblings like scf_get_risk and scf_list_risks, which target individual risks or lists rather than an org-level aggregate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'organization's aggregate risk summary' provides clear context that this tool is for high-level, org-wide rollup data, implying it is not for individual risk details or risk lists. It does not explicitly name alternatives or exclusion criteria, but the intent is reasonably apparent given the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_scoped_controlB
Read-only

Get one scoped control: owner, notes, scope/basis/target/material overrides with reason, set_at and set_by, procedure_document_id, last validation. Identify by scf_id, not UUID.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idYesSCF control identifier in DOMAIN-NN format (e.g., 'AST-01', 'GOV-02') β€” NOT the UUID

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description enumerates returned data (owner, notes, overrides with reason, set_at/set_by, procedure_document_id, last validation) which adds useful context, but doesn't explain how these differ from the base control's fields – a meaningful part of the behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the action and enumerates outputs efficiently. Slightly list-like but no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a readOnly annotation and a fully-covered schema, the missing piece is how this 'scoped control' concept relates to plain scf_get_control, and there is no output schema to compensate. Adequate but with a clear gap for an agent choosing among the many control-related siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters already carry detailed descriptions including the DOMAIN-NN format. The description's 'Identify by scf_id, not UUID' note is redundant with the schema description for scf_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get one scoped control') and lists the fields returned, which differentiates it from scf_get_control and scf_list_scoped_controls. The distinction from siblings is implied through the returned-field enumeration rather than stated outright.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance. The 'Identify by scf_id, not UUID' note is a scoping hint, not usage guidance, and the description never names sibling alternatives like scf_list_scoped_controls or scf_get_control.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_scoping_statsA
Read-only

Get the organization's implementation statistics: counts by status, overall completion percentage, and per-framework coverage breakdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description's 'Get' is consistent with that safety profile. The description adds what data is returned but does not disclose any additional behavioral traits such as aggregation scope, data freshness, or response limits. This is adequate given the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. It states the operation, resource, and the key return components in a compact, readable structure that an agent can quickly parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only statistics tool with no output schema, the description sufficiently covers what the agent will receive: counts by status, overall completion percentage, and per-framework coverage breakdown. Nothing critical is missing at this complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single required org_id parameter, and the schema itself already explains it is an Organization UUID and points to scf_list_organizations. The description adds no parameter-level detail 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and identifies the resource ('organization's implementation statistics'), then enumerates the contents: counts by status, overall completion percentage, and per-framework coverage breakdown. This clearly distinguishes it from other read-only summary tools like scf_get_evidence_maturity or scf_get_risk_summary, even without naming a sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by describing what the tool returns, but it does not explicitly state when to use this tool versus alternatives. The only extra contextual hint is the schema note advising to obtain org_id from scf_list_organizations, which is a prerequisite rather than a selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_systemA
Read-only

Get one system from the organization's inventory (read β€” viewer role): name, type, vendor, description, catalog template link and the evidence it is configured to provide.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
system_idYesSystem UUID β€” obtain from scf_list_systems

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds viewer-role access context and enumerates the returned data fields, which complements the readOnlyHint annotation. It does not describe error behavior or 404 handling, but for a simple read tool with readOnlyHint=true, the disclosed behavior is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the operation and resource, then lists the returned fields. Every element earns its place with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-id tool, the description is complete: it states the role requirement, the exact returned fields, and the schema documents how to obtain both required IDs. No output schema exists, but the description fills that gap by enumerating the response content.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters have helpful provenance notes ('obtain from scf_list_organizations' / 'obtain from scf_list_systems'). The description itself adds no parameter-level 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get'), the resource ('one system from the organization's inventory'), and the exact fields returned, which distinguishes it from scf_list_systems and scf_create_system/update_system. The parenthetical read note further clarifies its non-mutating nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the use case clear: retrieve a single system when you already have org_id and system_id, and it signals viewer-role access. It does not explicitly name alternatives like scf_list_systems, but the singular 'Get one system' versus the sibling list tool provides sufficient context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_system_catalog_templateA
Read-only

Get one system-catalog template by slug with full detail: aliases and curated evidence-collection recipes (maturity level, steps, frequency, estimated time).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesTemplate slug β€” obtain from scf_list_system_catalog

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already conveys safety, and the description adds useful context about the response scope: full detail including aliases and curated evidence-collection recipes with maturity, steps, frequency, and estimated time. This goes beyond the annotation and helps set agent expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one compact sentence that front-loads the action and resource, then efficiently lists the meaningful return content. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only getter with a fully documented schema and a readOnlyHint, the description is complete. It tells the agent what the tool fetches, by what identifier, and what the response will include.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the single required parameter slug is described and even tells the agent to obtain it from scf_list_system_catalog. The description adds no extra parameter-level detail, but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific verb 'Get' and the resource 'system-catalog template by slug', with 'one' making clear it is a single-item fetch. It distinguishes itself from list-style siblings like scf_list_system_catalog by focusing on one template and by enumerating the returned detail (aliases, recipes).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when a specific template is needed by slug and that the slug should come from scf_list_system_catalog. It provides clear context for selection, but it does not explicitly name alternatives or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_system_recipesA
Read-only

Get evidence-collection recipes for a system, matched via its catalog template, alias, or fallback. Returns matched_via, the template summary, and per-maturity-level recipe steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
system_idYesSystem UUID β€” obtain from scf_list_systems

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals safety, and the description adds meaningful behavior beyond that: recipes are matched via catalog template, alias, or fallback, and the tool returns matched_via, template summary, and per-maturity-level steps. This gives the agent a useful picture of the retrieval behavior and response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tightly packed sentence leads with the primary purpose, then specifies matching behavior and return contents. No filler or redundant restating of the title/schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only getter with full schema coverage, the description explains the return payload and matching semantics well. It does not mention what happens when no template/alias/fallback match exists or how this relates to recipe generation, but those are minor gaps rather than blockers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both org_id and system_id already documented and sourcing guidance provided. The description does not add substantive parameter-level detail beyond what the schema provides, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description names a specific verb ('Get'), resource ('evidence-collection recipes for a system'), and the matching mechanism ('catalog template, alias, or fallback'). It clearly differentiates from sibling scf_generate_system_recipes by focusing on retrieval rather than generation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a read/retrieval use case and notes how recipes are matched, but it does not explicitly state when to prefer this over scf_generate_system_recipes or scf_get_recipe_generation_status. The presence of a 'generate' sibling suggests important context that 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.

scf_get_systems_for_evidenceA
Read-only

Find every system that can provide a given evidence type (read β€” viewer role) β€” the inverse of the per-system capability list. Filter by capability status.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
evidence_idYesCatalog evidence ID, e.g. E-IAM-01
capability_statusNoFilter by capability status

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful context beyond that: the viewer-role/read qualifier and the inverse-traversal relationship to per-system capability listings. Return format and pagination are not discussed, but that is a minor gap for a simple read-only lookup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one compact sentence with a front-loaded verb and object. Every clause earns its place: scope, inverse relationship, auth/read context, and optional filtering. The em-dash aside is efficient and wastes no tokens.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter read-only tool, the description covers the core behavior, the inversion semantics, and the optional filter. org_id and evidence_id are already explained in the schema, including an example for evidence_id. No output schema exists, but the return contract ('every system') is clear enough for an agent to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so org_id, evidence_id, and capability_status are already documented with formats and examples. The description's mention of 'Filter by capability status' restates the optional parameter but adds no new meaning beyond the schema. The schema carries the parameter-documentation burden, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action and object: 'Find every system that can provide a given evidence type.' It further disambiguates by describing itself as 'the inverse of the per-system capability list,' which separates it from sibling tools like scf_list_system_capabilities. The 'read β€” viewer role' qualifier narrows the operation's scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'inverse of the per-system capability list' phrase tells an agent when to use this tool: when starting from an evidence type rather than from a system. It also signals the optional 'Filter by capability status' behavior. It does not name an alternative explicitly, but the directional contrast gives sufficient routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_teamA
Read-only

Get one team with its full roster and advisory health warnings (read β€” viewer role), e.g. no primary owner or no members.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
team_idYesTeam UUID β€” obtain from scf_list_teams

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, so the description's 'read β€” viewer role' aligns with that. It adds value beyond annotations by describing the specific outputs (full roster, advisory health warnings), which gives the agent a clearer expectation of what the call returns. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that packs purpose, output, and permission into an efficient, front-loaded statement. No redundant words or tangential details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get operation with two well-documented parameters and no output schema, the description provides the key context: it returns the full roster and health warnings, and it is read-only. It does not enumerate every field in the response, but that is acceptable given the absence of an output schema and the tool's straightforward nature. It is complete enough for an agent to decide and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both org_id and team_id have descriptions explaining how to obtain them (from scf_list_organizations and scf_list_teams respectively). The tool description adds no further parameter detail, so it relies on the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action (Get), a specific resource (one team), and the key output: full roster and advisory health warnings. It also notes the read-only viewer role, which distinguishes it from mutation tools like scf_update_team and from the plural list tool scf_list_teams.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context: use it when you need a single team's roster and health warnings, not for listing or updating. However, it does not explicitly name alternatives like scf_list_teams or scf_update_team, so it falls short of the explicit guidance required for a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_upcoming_evidenceA
Read-only

List evidence whose next collection falls due within N days (read β€” viewer role), computed from each item's frequency and last upload. The daily 'what is due' view.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLook-ahead window in days (1–90, default 14)
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already marks this as read-only; the description adds value by specifying the viewer role requirement and explaining the calculation method (frequency and last upload). It discloses behavior beyond the annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The core purpose is front-loaded, and the final phrase 'The daily what is due view' adds contextual value without redundancy. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with two well-documented parameters and no output schema, the description covers the essential context: what it lists, how it computes, and the viewer role. It doesn't describe return format or pagination, but that is minor given the tool's simplicity and the safety profile provided by annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters fully documented (days has range and default; org_id has format and sourcing instruction). The description adds no new parameter meaning, so it meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and a precise resource ('evidence whose next collection falls due within N days'), and clarifies the computation basis (frequency and last upload). It distinguishes itself from sibling tools like scf_list_evidence and scf_get_evidence by focusing on the 'daily what is due' view, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage via 'The daily what is due view,' which suggests when an agent would use this over a general listing tool, but it never explicitly names alternatives or states when not to use them. The guidance is inferred, not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_vendorA
Read-only

Get one vendor's detail: certifications, assessments, computed risk score, and latest research results.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
vendor_idYesVendor UUID β€” obtain from scf_list_vendors

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already communicates that this is a safe read operation, lowering the bar for the description. The description adds useful context by listing what the caller will receive (certifications, assessments, computed risk score, latest research results), but it does not disclose potential side effects, authorization requirements, or rate limiting. That is acceptable because the annotation covers the main behavioral risk.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence that front-loads the action and resource, then enumerates the key returned data categories. There is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema present, the description's enumeration of certifications, assessments, computed risk score, and latest research results provides a helpful return-shape. Given the straightforward required parameters and read-only nature, this is sufficient for an agent to call the tool, though a more explicit note about how this relates to get_vendor_research and get_latest_vendor_assessment would be marginally richer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both org_id and vendor_id already include provenance hints ('obtain from scf_list_organizations' / 'obtain from scf_list_vendors'). The description adds no additional parameter-level meaning, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get one vendor's detail'. It also enumerates the returned content (certifications, assessments, computed risk score, latest research results), which clearly distinguishes it from list-oriented siblings like scf_list_vendors and from research/assessment-specific tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Get one vendor's detail' makes the intended use clear: fetch a single vendor's consolidated detail record. It does not explicitly name alternatives or exclusions, such as using scf_list_vendors for a vendor list or scf_get_vendor_research for research-only results, but the context is unambiguous enough for an agent to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_vendor_assessmentA
Read-only

Get one vendor AI assessment by ID with full detail: services_used, data_role, RAG status, recommendation, full report fields, and research sources.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
vendor_idYesVendor UUID β€” obtain from scf_list_vendors
assessment_idYesAssessment UUID β€” obtain from scf_list_vendor_assessments or the trigger response

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, which already covers the safety profile, so the description only needs to add value beyond that. It does so by disclosing the response content β€” services_used, data_role, RAG status, recommendation, full report fields, and research sources β€” giving the agent a concrete expectation of what 'full detail' means. There is no contradiction between the description ('Get') and the read-only annotation. It stops short of describing failure behavior or data freshness, but for a read operation the disclosed detail is solid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence of roughly 24 words, front-loaded with the verb and resource ('Get one vendor AI assessment by ID') followed by a colon-delimited enumeration of return contents. There is zero filler, and the detail list is information-dense and well structured. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-by-ID tool with all three required parameters fully documented and a readOnlyHint annotation, the description is nearly complete. The enumeration of return fields partially compensates for the missing output schema. The only notable gap is the absence of guidance on how this tool differs from scf_get_latest_vendor_assessment and scf_get_vendor_assessment_status, which is already penalized under usage guidelines rather than here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each UUID parameter having a 'format' and an explicit provenance hint (e.g., 'obtain from scf_list_vendors', 'obtain from scf_list_vendor_assessments or the trigger response'), so the schema already carries the documentation burden. The description adds no parameter-level semantics beyond the phrase 'by ID', which confirms assessment_id is the primary selector. Baseline 3 is appropriate 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Get one vendor AI assessment by ID') and enumerates the detail fields returned (services_used, data_role, RAG status, recommendation, full report fields, research sources), making the purpose unmistakable. The phrase 'by ID with full detail' hints at differentiation from close siblings like scf_get_latest_vendor_assessment and scf_get_vendor_assessment_status, but it does not explicitly name them. This is clear, though slightly short of the explicit sibling differentiation that earns a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied rather than stated: 'by ID' signals this tool is for when a specific assessment identifier is already known, and the assessment_id parameter description ('obtain from scf_list_vendor_assessments or the trigger response') provides some navigational guidance. However, there is no explicit when-to-use versus scf_get_latest_vendor_assessment or scf_get_vendor_assessment_status, and no exclusions or alternatives are named. The agent must infer the selection criteria from the tool name and parameter provenance hints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_vendor_assessment_statusA
Read-only

Get the job status of a queued vendor AI assessment: status, started_at, completed_at, error_message. Poll this after scf_trigger_vendor_assessment.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
vendor_idYesVendor UUID β€” obtain from scf_list_vendors
assessment_idYesAssessment UUID β€” returned by scf_trigger_vendor_assessment

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation readOnlyHint=true already establishes this as a safe read operation, and the description does not contradict it. The description adds useful behavioral context beyond annotations: this is a polling endpoint for a queued job and returns status, timestamps, and error_message rather than full assessment content.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero filler: the first defines the resource and response fields, and the second gives the workflow context. It is front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read tool, this description covers what an agent needs: what the tool returns, that it is a polling operation, and which prior call supplies assessment_id. Since there is no output schema, listing the returned fields in the description is the key missing piece, and it is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter is already well documented with its source (scf_list_organizations, scf_list_vendors, scf_trigger_vendor_assessment) and UUID format. The description adds no additional parameter 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb with a precise resource: 'Get the job status of a queued vendor AI assessment' and enumerates the returned fields (status, started_at, completed_at, error_message). This clearly differentiates it from sibling tools like scf_get_vendor_assessment and scf_get_latest_vendor_assessment by focusing on job status rather than assessment content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to call this tool: 'Poll this after scf_trigger_vendor_assessment,' which maps directly to the asynchronous workflow. It does not enumerate exclusions or name alternative read tools, but the usage context is clear enough to route an agent correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_vendor_researchA
Read-only

Get the latest vendor research result: breach history, known vulnerabilities, and security posture analysis. Poll this after scf_trigger_vendor_research.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
vendor_idYesVendor UUID β€” obtain from scf_list_vendors

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already declares the safety profile, and the description adds useful behavioral context: it is a polling endpoint that returns the latest research snapshot after triggering. It does not disclose what happens if the research is not ready, but the explicit 'poll after trigger' guidance covers the primary behavioral requirement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with no filler. The first sentence states what the tool returns, and the second gives the actionable workflow instruction. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only retrieval tool with two fully documented parameters and no output schema, the description is complete: it states what the result contains, that it is the latest result, and when to call it. The missing detail about pre-completion state is minimized by the polling guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both parameters 100%, including how to obtain them (scf_list_organizations and scf_list_vendors). The description adds no additional parameter-level 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Get the latest vendor research result') and enumerates the result contents: breach history, known vulnerabilities, and security posture analysis. This distinguishes it from generic vendor lookup tools and vendor assessment tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit usage context by instructing the agent to poll this after scf_trigger_vendor_research, which clearly sequences it in the research workflow. However, it does not name alternatives or state when not to use this tool, so it stops short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_webhookA
Read-only

Get one webhook endpoint's detail: delivery stats, allowed evidence IDs, and rate-limit configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
endpoint_idYesWebhook endpoint UUID β€” obtain from scf_list_webhooks

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, covering the safety profile. The description adds concrete behavioral context by enumerating what detail is returned: delivery stats, allowed evidence IDs, and rate-limit configuration, which tells the agent what to expect. It doesn't describe pagination, response shape, or error conditions, but for a simple read-only get one resource, this is adequate; no contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence that front-loads the verb and resource, then lists the three substantive return categories. Every word earns its place; no fluff, no repetition of the title, and no redundant restating of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is a simple read-only retrieval with two fully documented UUID parameters, the description plus schema is largely sufficient. The only minor gap is not explicitly stating the relationship to scf_list_webhooks, but the schema's parameter descriptions already provide that hint (endpoint_id obtain from scf_list_webhooks). Complete enough for an agent to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds no parameter-level details beyond what the schema provides, but it does help by naming the endpoint concept and expected returned fields, which indirectly clarifies the purpose of endpoint_id. Baseline 3 is appropriate when schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb ('Get'), identifies the specific resource ('one webhook endpoint's detail'), and names the concrete content returned: delivery stats, allowed evidence IDs, and rate-limit configuration. This differentiates it from sibling tools like scf_list_webhooks, scf_create_webhook, scf_delete_webhook, and scf_rotate_webhook_secret without needing to inspect schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this is for retrieving a single webhook endpoint's detail, and the sibling names establish the context (list vs get vs create vs delete). It doesn't explicitly say 'use scf_list_webhooks first to get endpoint_id' in the description text, but the input schema does, which counts as surrounding context. It lacks an explicit when-not-to-use statement but is otherwise clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_window_assessmentA
Read-only

Get one windowed AI assessment by ID. Returns full detail: window bounds, frequency, file IDs, coverage, expected artifact types, status, relevance score, findings, summary, hashes, tokens, cost.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
assessment_idYesWindowed assessment UUID β€” obtain from scf_list_window_assessments

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read operation, and the description adds useful behavioral context by listing exactly what the response contains: window bounds, frequency, file IDs, coverage, status, findings, hashes, tokens, and cost. It does not disclose edge-case behaviors, but for a read-only get-by-ID tool this is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the action and target, then finishes with a compact list of return fields. Every part earns its place, and there is no filler or redundant restating of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-ID tool with two fully documented parameters and no output schema, the description provides sufficient context. It names the return fields and specifies how to obtain both required IDs, so an agent can select and invoke the tool confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameter descriptions already tell the caller where to get valid UUIDs from scf_list_organizations and scf_list_window_assessments. The description itself adds no further parameter-specific meaning, so it earns the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb and resource: 'Get one windowed AI assessment by ID.' It clearly indicates the operation is a single-item lookup and differentiates itself from list- or summary-style siblings by promising 'full detail' and enumerating the returned fields.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes clear this is the by-ID lookup tool and tells the caller where to obtain the required assessment_id via scf_list_window_assessments. It does not explicitly say when to prefer summary or list alternatives, but the context is clear enough for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_window_assessment_summaryA
Read-only

Get aggregate windowed-assessment metrics for the organization dashboard: total windows assessed, counts by status (including insufficient_sample), average relevance score, and total cost in cents.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read operation, so the bar is lower. The description adds useful context by naming the statuses (including insufficient_sample) and clarifying that cost is in cents, but it does not disclose aggregation window behavior, empty-organization responses, or any data freshness caveats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. Every phrase adds information: the resource, the dashboard context, and the specific metrics returned.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only summary tool, the description adequately communicates what the caller gets: totals, status counts, average relevance, and cost unit. The input schema fully documents the only parameter. It falls slightly short only by not explicitly distinguishing usage from the closest sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the org_id parameter is already well described as an Organization UUID sourced from scf_list_organizations. The description adds no additional parameter-level meaning beyond the schema, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('aggregate windowed-assessment metrics for the organization dashboard'), and enumerates the exact metrics returned. The word 'aggregate' clearly distinguishes this from per-window siblings like scf_get_window_assessment and scf_list_window_assessments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for the organization dashboard' provides some implied usage context for high-level summary reporting. However, the description does not explicitly state when to prefer this over scf_get_window_assessment, scf_list_window_assessments, or scf_trigger_window_assessment, nor does it name alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_window_assessment_versionsA
Read-only

List every AI verdict a window assessment has received, newest first (read β€” viewer role). Each version is frozen as reached (model, prompt version, designations) plus any human decision on it.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
assessment_idYesWindow assessment UUID β€” obtain from scf_list_window_assessments

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true already declared, the description reinforces the safe read nature and adds detail about what each version captures ('model, prompt version, designations plus any human decision'). However, it does not disclose pagination, limits, or the exact response structure, which would be valuable given no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary purpose, and contains no filler. Every clause adds information (ordering, role, content of each version).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given it is a list operation with straightforward parameters and read-only annotations, the description is quite complete. It covers what the versions contain and the ordering. The only missing piece is output format or pagination, but for a read-only list tool this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and both parameters have clear descriptions (UUID formats and how to obtain them). The description adds no new parameter-level meaning beyond the schema, which is acceptable given the high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb 'List' and a precise resource ('every AI verdict a window assessment has received'), directly conveying what the tool does. It also notes the ordering ('newest first') and what each version contains, making it distinct from siblings like scf_get_window_assessment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for viewing version history but does not explicitly contrast it with scf_get_window_assessment or scf_get_window_assessment_summary. It states a read-only context ('read β€” viewer role'), which is helpful, but no concrete 'use when' or 'use instead' guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_get_work_queueA
Read-only

Get the caller's work queue: prioritized pending tasks, assignments, and action items across every organization they belong to.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds meaningful context by specifying that it aggregates across all organizations and includes prioritized items. However, it does not disclose potential edge behaviors such as empty-queue handling, ordering guarantees, pagination, or whether results are real-time or cached. With annotations covering safety, this is acceptable but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler. It front-loads the core action and resource, then lists the content types and scope. Every phrase earns its place, and there is no redundancy with the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with no output schema, the description is sufficiently complete. It specifies what the tool returns (pending tasks, assignments, action items) and the aggregation scope (all organizations). Nothing an agent needs to decide whether to call it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters with 100% schema description coverage, making parameter documentation unnecessary. Per guidelines, zero-parameter tools receive a baseline of 4, and the description does not need to add parameter semantics. It correctly avoids inventing any.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Get') on a well-defined resource ('the caller's work queue') and enumerates its contents: prioritized pending tasks, assignments, and action items. It also clarifies the scope as 'across every organization they belong to,' which distinguishes it from other list-style sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by naming the resource and contents, but it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions. No sibling is referenced as an alternative. The reader can infer it is for viewing one's own aggregated work queue, but explicit guidance is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_import_journeyA

Set or re-issue the org's journey from a template (write β€” ADMIN role). Merges by stage key: attestations survive; dropping an attested stage is refused (409). An uploaded template wins outright.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
activateNoStart the first stage immediately (default false)
templateNoA practitioner-authored journey artefact to upload. When present it wins over template_key entirely.
template_keyNoTemplate to import, e.g. 'compliancegenie-default' β€” obtain from scf_list_journey_templates. Ignored when `template` is supplied.
practitioner_nameNoThe consultancy or practitioner recorded as having set this journey up

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and destructiveHint=false, a minimal profile. The description adds crucial context beyond that: ADMIN role requirement, merge semantics by stage key ('attestations survive'), explicit refusal behavior with status 409 for dropping an attested stage, and precedence rules ('an uploaded template wins outright'). This is exactly the kind of behavioral disclosure meant to be present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact clauses front-load the action, the role requirement, and the critical merge/refusal rules. Every sentence earns its place; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with a nested schema, no output schema, and complex precondition logic, the description covers role, merge behavior, error cases, and source precedence. It stops short of describing the returned journey object or any side effects on dependent entities, but the key operational facts are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, with rich descriptions for every parameter including the complex precondition_spec. The description adds only high-level import semantics (template wins over template_key) but doesn't clarify any parameter's behavior beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Set or re-issue the org's journey from a template'. The scope and write nature are clear, and a sibling (scf_get_journey) covers retrieval. It doesn't name any sibling explicitly, so it falls short of 5, but the 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it ('Set or re-issue') and mentions ADMIN role and template sources, but never states when to use this versus scf_get_journey or scf_list_journey_templates, nor when NOT to re-import. 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.

scf_list_assessment_objectivesA
Read-only

List SCF assessment objectives β€” the 5,736 test criteria used to evaluate control implementation. Optionally filter by control ID; supports free-text search and pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (1–100, default 25)
offsetNoPagination offset β€” number of results to skip (default 0)
searchNoFree-text filter applied to objective text
control_idNoLimit to one SCF control in DOMAIN-NN format (e.g., 'GOV-01', 'AST-02')
include_deprecatedNoInclude catalog rows deprecated by a later SCF version. Default false β€” the catalog answers with active rows only, and deprecated rows carry a lifecycle badge when included.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already communicates that this is a safe read operation. The description adds useful behavioral context by quantifying the catalog (5,736 criteria) and mentioning filter/search/pagination capabilities. However, it does not disclose default behavior such as active-row-only responses, sort order, or return format; those details are left to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the verb and resource, adds a clarifying definition, and lists the key invocation options. Every phrase earns its place with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list operation with a fully documented 5-parameter schema, the description is functionally complete: it identifies the resource, its purpose, the main filter, and pagination support. Minor omissions like response shape and default sorting are acceptable given the readOnly annotation and the absence of an output schema, but explicit notes on return values would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage across all 5 parameters, including defaults, ranges, and format examples like 'GOV-01'. The description only restates that control_id filtering and free-text search exist, adding no semantic value beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with the verb 'List' and names the exact resource ('SCF assessment objectives'), then defines them as 'the 5,736 test criteria used to evaluate control implementation.' This makes the tool's purpose immediately specific and distinguishes it from sibling listing tools like scf_list_controls or scf_list_domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states the invocation context: list assessment objectives, optionally filter by control ID, and use free-text search and pagination. It does not explicitly name alternatives or when not to use this tool, but the domain (assessment objectives vs. controls/evidence/risks) is clear enough for an agent to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_assignmentsA
Read-only

List user assignments to controls, evidence items or tasks (read β€” viewer role). Filter by item type and id, or by user_id to see one person's workload.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNoAssignee β€” obtain from scf_list_members
assignable_idNoItem UUID
assignable_typeNoFilter by item kind

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, and the description reinforces this with '(read β€” viewer role)', adding the permission level. No destructive behavior is implied, but the description doesn't cover pagination or response format. With readOnlyHint covering the safety profile, the extra role info provides modest added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no redundant words. The first sentence states the core action and scope; the second covers filtering. Ideal length and front-loaded with the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list with three optional filters, the description covers actions, targets, role, and filtering strategies. It doesn't specify return format or pagination, but the absence of an output schema and low complexity make this acceptable. It would benefit from clarifying that assignable_type and assignable_id should be used together.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds relational meaning: it shows how filters combine ('item type and id') and presents user_id as an alternative with a real-world purpose (seeing one person's workload). This goes slightly beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with the verb 'List', names the resource 'user assignments', and specifies the target set 'controls, evidence items or tasks'. This clearly distinguishes it from sibling tools like scf_list_team_assignments, whose name targets a different resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context: a viewer can read assignments, and filtering by item type/id or by user_id supports specific use cases ('one person's workload'). However, it doesn't explicitly name alternatives like scf_list_team_assignments or state when not to use this tool, so it lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_capabilitiesB
Read-only

List an organization's capabilities. Capabilities map to systems and evidence, showing what security functions the infrastructure supports.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers the read-only safety profile. The description adds conceptual domain context ('Capabilities map to systems and evidence') but does not disclose behavioral details such as pagination, filtering, ordering, response shape, or any other runtime behavior beyond simply listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with the action front-loaded in the first sentence and a useful domain clarification in the second. There is no filler or repetition of the tool name beyond the natural verb usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list operation with one well-documented required parameter, the description is largely adequate. It lacks explicit output shape or pagination details, but the combination of tool name, description, and schema provides enough context for an agent to invoke the tool successfully.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully documents the single org_id parameter, including its UUID format and the guidance to obtain it from scf_list_organizations. The description restates the organization scope but adds little beyond what the schema provides, 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List an organization's capabilities.' It also clarifies what capabilities are by explaining they map to systems and evidence. It does not explicitly differentiate from similar sibling tools like scf_list_capability_themes, but the resource name and explanation make the purpose clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for retrieving capability information for an organization, but it offers no when-to-use guidance, no exclusions, and no comparison to related tools such as scf_list_capability_themes or scf_list_system_catalog. Usage context is only implied through the domain definition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_capability_testsA
Read-only

List capability tests (incident response exercises, continuity tests, others), most recently run first, with finding_count and open_finding_count.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoTests run on or after this date (YYYY-MM-DD)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
test_typeNoFilter by type: incident_response, continuity, other

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: results are ordered most-recently-run first, and each item carries finding_count and open_finding_count aggregates. It does not mention permissions, result volume, or any pagination/limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with zero filler, front-loaded with the action and resource, then the domain examples, ordering, and returned aggregates in descending order of importance. Nothing is wasted and nothing essential is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must convey return shape; it does so partially by naming finding_count and open_finding_count. For a simple read-only list tool with three fully documented parameters, this is nearly complete β€” only the full item shape and any result-size behavior are unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the enum values for test_type and the YYYY-MM-DD pattern for since, so the schema already carries parameter semantics. The description only echoes the test types ('incident response exercises, continuity tests, others') without adding filtering semantics or defaults beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource (list capability tests) and immediately defines the domain with examples ('incident response exercises, continuity tests, others'), which makes it easy to tell apart from scf_get_capability_test and scf_create_capability_test. It also states the ordering and the aggregate fields returned, so the agent knows exactly what it gets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: a listing tool is obviously used to enumerate capability tests, and the type examples hint at the filtering context. However, there is no explicit 'use this when...' guidance and no mention of the single-record sibling scf_get_capability_test or when a caller should prefer it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_capability_theme_controlsA
Read-only

List SCF controls mapped to a capability theme (KSI), with scoping status, implementation status, and maturity level. Supports pagination and scope filtering β€” ideal for KSI drill-down.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results per page (1–200, default 50)
offsetNoPagination offset β€” number of results to skip (default 0)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
theme_codeYesCapability theme code (e.g., 'ACCESS_CONTROL') β€” obtain from scf_list_capability_themes
scope_statusNoFilter by scoping status (default: in_scope)in_scope

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers the safety profile. The description adds useful behavioral context: results include scoping status, implementation status, and maturity level, and the tool supports pagination and scope filtering. This goes beyond what annotations alone convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly worded sentences: the first states what the tool does and its output fields, the second states capabilities and use case. Every sentence earns its place and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with 100% schema coverage, the description is largely complete: it defines the resource, key returned attributes, filtering, pagination, and an intended use case. Minor gaps are the unexplained KSI acronym and the lack of an explicit alternative versus scf_list_scoped_controls, but these do not prevent correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well documented. The description reinforces pagination and scope filtering but does not add meaningful param-specific meaning beyond the schema. Baseline 3 is appropriate here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: list SCF controls mapped to a capability theme (KSI). It also names the key output dimensions (scopng status, implementation status, maturity level), making the tool's purpose unambiguous and distinguishable from generic control-listing tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly signals when to use it with the phrase 'ideal for KSI drill-down,' giving an agent a strong contextual trigger. It does not explicitly name sibling alternatives or provide when-not-to-use guidance, but the purpose-based context is sufficient for most selection decisions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_capability_themesA
Read-only

List an organization's 11 KSI capability themes. Themes group NIST 800-53 controls into security capability areas for a high-level posture view.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, so the safe read behavior is already declared. The description adds useful domain context (11 themes, grouping NIST 800-53 controls, high-level posture view) but does not disclose what the returned list contains, whether themes are ordered, or any pagination/response shape. With annotations already covering the safety profile, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The first sentence states the action and count ('11 KSI capability themes'), and the second provides useful domain context about what themes represent. It is front-loaded and each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with one well-documented parameter and readOnlyHint=true, the description is complete enough: it states the resource, the count, the domain context, and the parameter source. The absence of an output schema is partially mitigated by the description's statement that themes group NIST controls for a posture view, though exact return fields are not specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the only parameter, org_id, is documented in the schema as 'Organization UUID β€” obtain from scf_list_organizations'. The description adds domain context about themes but no additional parameter semantics beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('an organization's 11 KSI capability themes'), and adds context that themes group NIST 800-53 controls into security capability areas for a high-level posture view. It differentiates itself from siblings like scf_list_capabilities and scf_list_capability_theme_controls by focusing on the theme list itself, though it does not explicitly name those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the tool to use when you need the organization's capability themes, and the org_id parameter description says to obtain it from scf_list_organizations. However, it gives no explicit guidance on when to prefer this over sibling tools like scf_get_capability_theme, scf_list_capabilities, or scf_list_capability_theme_controls.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_commentsA
Read-only

List the comment thread on one control, evidence item or task (read β€” viewer role), oldest first, with authors, mentions and reply structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentable_idYesScoped control, evidence tracking or task UUID
commentable_typeYesItem kind

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, which the description reinforces with 'read β€” viewer role'. Beyond that, the description adds behavioral specifics: ordering ('oldest first'), content ('authors, mentions and reply structure'). This goes beyond the annotation by clarifying what the returned thread contains and how it is sorted. No contradictions exist between description and annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the primary purpose ('List the comment thread'), then adds scoping, role, ordering, and content details. Every clause contributes meaning without redundancy. It is concise and immediately informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two well-described parameters and no output schema, the description covers the essential aspects: what it does, the scope, the read-only nature, and expected output structure. It does not mention pagination or potential large result sets, but that is a minor omission given the tool's simplicity and the presence of sibling mutation tools that clarify its role.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both commentable_id and commentable_type have descriptions. The tool description adds little beyond the schemaβ€”it restates the allowed types (control, evidence, task) which are already in the enum, and implies the pairing via 'on one control, evidence item or task'. Since the schema already documents the parameters adequately, the description's marginal value is limited, fitting the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and a specific resource ('comment thread') scoped to one control, evidence item, or task, with ordering and content details. It clearly distinguishes itself from the comment mutation siblings (scf_create_comment, scf_update_comment, scf_delete_comment) by explicitly being a read operation. The viewer-role note further clarifies the operation's nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates this is a read-only operation for listing a comment thread on a specific item, which implies its use case. However, it does not explicitly name alternatives or provide a 'when not to use' condition beyond the read/write distinction. The sibling set includes comment creation/update/delete, so the read vs. write contrast is implicitly understood but not stated explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_compensating_controlsA
Read-only

List compensating controls recorded against a vendor's gaps (read β€” viewer): gap, offsetting control, effectiveness, notes. For the org's own controls use scf_list_org_compensating_controls.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
vendor_idYesVendor UUID β€” obtain from scf_list_vendors

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already declares the safety profile, but the description adds the access-level requirement ('read β€” viewer') and the shape of what is returned (gap, offsetting control, effectiveness, notes). It stops short of describing pagination or ordering, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the primary scope and returned fields come first, the disambiguation clause second. Every clause earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-required-param list tool with no output schema, the description covers purpose, scope, access level, returned fields, and the sibling alternative. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters already carry descriptions pointing at scf_list_organizations and scf_list_vendors. The phrase 'against a vendor's gaps' loosely frames vendor_id, but the description adds no syntax or format detail 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List), resource (compensating controls), and scope (recorded against a vendor's gaps), then enumerates the returned fields. It also explicitly distinguishes itself from the sibling scf_list_org_compensating_controls, so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative tool directly and the condition that selects it: 'For the org's own controls use scf_list_org_compensating_controls.' That is an explicit when-to-use-this vs when-to-use-that statement, not an inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_control_assessment_compositesA
Read-only

List rolled-up assessment composites for the org. Cursor-paginated, worst-band first (insufficient β†’ sufficient). Filter by status/domain/computation_version. Pass next_cursor to page forward.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (1–500, default 100)
cursorNoOpaque pagination cursor β€” pass next_cursor from a prior response
domainNoFilter by SCF domain code (e.g., 'BCD', 'GOV', 'AST')
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoComma-separated composite_status values to include (e.g., 'insufficient,partial'). Valid values: insufficient, insufficient_sample, partial, pending, no_evidence, sufficient
computation_versionNoRestrict to composites computed at this algorithm version

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as readOnlyHint=true, and the description adds meaningful behavioral context: cursor pagination, ordering worst-band first (insufficient β†’ sufficient), and the need to pass next_cursor. This goes beyond the read-only hint and helps the agent anticipate response iteration behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with no fluff. The core purpose is front-loaded, followed by pagination behavior, ordering, filters, and the pagination action. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with a 100%-described input schema, the description covers the essential operational details: scope, pagination, ordering, filters, and how to advance pages. No output schema is provided, but the listing and pagination expectations are sufficiently communicated for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already defines each parameter. The description restates the filters by name but adds little new parameter-level meaning; the mention of passing next_cursor slightly reinforces pagination semantics already present in the cursor schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List rolled-up assessment composites for the org.' It also differentiates from sibling scf_get_control_assessment_composite by conveying this is the list-level, org-wide variant with pagination and filters, so an agent can distinguish the tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly establishes the context: use this to list org-level rolled-up composites, with pagination and optional filters. It does not explicitly name alternatives or state when not to use it, but the list-vs-get distinction is strongly implied by the wording.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_controlsA
Read-only

List SCF security controls from the reference catalog. Returns paginated controls with SCF ID, title, description, and mapped frameworks. Filter by domain, framework, or free-text search.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (1–100, default 25)
domainNoSCF domain code (e.g., 'GOV', 'AST', 'IAC') β€” obtain from scf_list_domains
offsetNoPagination offset β€” number of results to skip (default 0)
searchNoFree-text filter applied to control title and description
frameworkNoFramework slug (e.g., 'nist-800-53', 'iso-27001') β€” obtain from scf_list_frameworks
include_deprecatedNoInclude catalog rows deprecated by a later SCF version. Default false β€” the catalog answers with active rows only, and deprecated rows carry a lifecycle badge when included.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes that this is a safe read operation. The description adds value by stating that results are paginated and include SCF ID, title, description, and mapped frameworks. It does not mention default deprecated-row exclusion or sort order, though include_deprecated is documented in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two purposeful sentences with the main operation front-loaded. Every sentence adds useful information about what the tool returns and how to filter, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with six optional parameters and no output schema, the description covers the core purpose, return fields, and filter dimensions. Some details like deprecated-row inclusion and pagination defaults are delegated to the schema, but the schema fully documents them, so no critical gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter already documented including ranges, defaults, and source tools for domain and framework values. The description merely repeats 'filter by domain, framework, or free-text search' and does not add new 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'List' and resource 'SCF security controls from the reference catalog', clearly stating the operation and scope. It differentiates from siblings like scf_get_control (single control) and scf_list_scoped_controls (scoped controls) by describing catalog-level, paginated listing with mapped frameworks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: list catalog controls, optionally filtered by domain, framework, or free-text search. It does not explicitly name alternatives or when to prefer scf_get_control or scf_list_scoped_controls, but the 'reference catalog' framing makes the intended use reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_control_validationsA
Read-only

List the validation schedule: each in-scope control's cadence, last validation, next due date and state, plus counts per state (taken before the state filter).

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoFilter by state: current, due_soon (due within 30 days), overdue, never (not validated) or unknown_cadence
domainNoControls in this SCF domain code
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idNoOne control

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes this as a safe read operation. The description adds non-obvious behavior: counts are 'taken before the state filter,' so the agent knows the state filter narrows the listed controls but not the aggregate counts. It does not describe pagination or ordering, but it adds useful behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence. Every clause earns its place by naming the operation, the returned fields, and the filter/count behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry return-value context; it does so by enumerating cadence, last validation, next due date, state, and counts. It omits details like pagination or ordering, but is otherwise sufficient for a read-only list tool with fully documented parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by clarifying the interaction between the state filter and the per-state counts, and by scoping results to 'in-scope' controls. It does not add syntax for org_id, domain, or scf_id, but the state-filter nuance is a genuine increment.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'List the validation schedule.' It enumerates the returned fields (cadence, last validation, next due date, state, counts), clearly distinguishing it from write-oriented siblings such as scf_record_control_validation and inventory-oriented tools like scf_list_controls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not state when to use this tool versus alternatives. It never names scf_record_control_validation, scf_list_controls, or any other sibling, and provides no 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.

scf_list_custom_risk_controlsA
Read-only

List controls linked to a custom risk: catalog_control_ids, links (scf_id + document_id of the standard it is an exception against) and scoped_controls with implementation status.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
risk_codeYesCustom risk code in R-ORG-N format (e.g., 'R-ORG-1') β€” obtain from scf_list_custom_risks

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true; the description goes further by disclosing the shape of the returned data, including that links carry scf_id plus document_id of the standard the control is an exception against, and that scoped_controls include implementation status. It omits pagination and result-size behavior, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tightly packed sentence with the resource front-loaded and no filler. The nested parenthetical listing of return fields makes it dense but still readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully documents the main returned sections and the exception-link semantics. It leaves out pagination/ordering and any hint of failure modes, which is the only remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters carry descriptions that even name the source tools (scf_list_organizations, scf_list_custom_risks). The description adds nothing about org_id or risk_code, so baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource: lists controls linked to a custom risk, and it even names the payload sections (catalog_control_ids, links, scoped_controls). However, it does not differentiate itself from the close sibling scf_get_controls_for_risk, so an agent must guess which one to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use statement, no prerequisites, and no mention of the near-duplicate alternatives (scf_get_controls_for_risk, scf_list_risks, scf_list_custom_risks). Usage is only implied by the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_custom_risksA
Read-only

List the organization's custom risk definitions β€” org-defined risks alongside the static SCF catalog, carrying auto-generated R-ORG-N codes.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, covering the safe-read aspect. The description adds useful context about the scope (org-defined risks vs static catalog) and auto-generated R-ORG-N codes, but it does not disclose response shape, pagination, or other behavioral details. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that names the verb, resource, and differentiator (R-ORG-N codes) with no redundant restatement of the title or schema. Every clause adds information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only list operation, this is largely complete: it names the resource, org scoping, and a distinguishing output attribute. The main gap is that it does not explicitly state what the returned list contains (e.g., whether standard SCF risks are excluded) or describe response shape, though the operation's simplicity makes this minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: org_id is fully described and tells the caller to obtain it from scf_list_organizations. The tool description only echoes 'organization's' and adds no extra parameter semantics, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('custom risk definitions'), and clarifies the scope ('org-defined risks alongside the static SCF catalog, carrying auto-generated R-ORG-N codes'). This distinguishes it from siblings like scf_list_risks (general risks) and scf_get_risk (single risk).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: call this when you need an organization's custom risk definitions. However, it does not explicitly say when to prefer this over scf_list_risks or name alternatives/exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_deficienciesA
Read-only

List the organisation's control deficiencies, newest first: hand-raised ones and those the platform raises (control at risk, insufficient composite, rejected evidence, capability tests).

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoDeficiencies against controls in this SCF domain code
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idNoDeficiencies against this control β€” obtain from scf_list_scoped_controls
statusNoFilter by status: open, in_progress, completed, cancelled
open_onlyNoOnly open and in-progress deficiencies
risk_codeNoDeficiencies against this risk code
capability_test_idNoFindings of this capability test β€” obtain from scf_list_capability_tests

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful behavioral context: newest-first ordering and the taxonomy of deficiency sources (control at risk, insufficient composite, rejected evidence, capability tests). However, it says nothing about pagination, result limits, or whether any deficiencies are excluded 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-constructed sentence that front-loads the core purpose (list deficiencies) and tucks the ordering and source taxonomy into a tight parenthetical list. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a readOnly listing tool with a fully documented 7-parameter schema and no output schema, the description covers purpose, ordering, and item origins well. It omits pagination/result-size behavior and any note on default filtering, which are the only meaningful gaps for a listing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every filter parameter clearly, including enums and foreign-key sourcing hints (e.g., 'obtain from scf_list_organizations'). The description adds no parameter-level detail 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the organisation's control deficiencies') and adds scope detail (newest-first ordering, and the two origins of deficiencies: hand-raised vs platform-raised types). Clear enough to distinguish from scf_get_deficiency (single-item) and scf_create_deficiency, but it doesn't name a sibling it might be confused with, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage through filtering parameters (domain, scf_id, risk_code, capability_test_id) and the enumeration of deficiency origins, but there is no explicit when-to-use/when-not guidance or routing to alternatives. The agent can infer it is the listing tool but receives no exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_document_domainsA
Read-only

List the SCF domains this organization can currently generate documents for (read β€” viewer role). A domain appears only when it has enough scoped controls to produce a document.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description adds that this is a viewer-role operation and explains the behavioral rule that a domain appears only when it has enough scoped controls to produce a document. This gives useful context about access and result filtering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The primary action is front-loaded, and the second sentence adds the key selection condition without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only list operation with no output schema, the description is complete: it names the resource, the scope, the access context, and the condition governing which items appear. An agent has enough to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, org_id, is fully documented in the input schema with type, format, and a source instruction ('obtain from scf_list_organizations'). Since schema description coverage is 100%, the description adds no parameter-specific meaning, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'List the SCF domains this organization can currently generate documents for.' This clearly distinguishes it from generic domain-listing tools like scf_list_domains and scoped-control tools like scf_list_scoped_controls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the intended use context clear: check which domains are currently available for document generation, with the visibility rule based on scoped controls. It does not explicitly name sibling alternatives or state when not to use it, but the context is sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_document_generatorsA
Read-only

List the ISMS document generators available to this organization (read β€” viewer role): generator name, document type, tier, derivative flag. Call before scf_generate_documents.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint already annotated true, the description adds useful behavioral context by noting 'read β€” viewer role' and 'available to this organization,' clarifying both permission requirements and data scope. This goes beyond the annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single well-structured sentence that front-loads the action and resource, lists expected return fields, and includes actionable sequencing guidance. No filler or redundant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no output schema, the description covers what the tool returns, the permission level needed, the data scope, and the intended call-before relationship. Everything an agent needs to decide to call it and interpret its result is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the single org_id parameter is already well documented with 'Organization UUID β€” obtain from scf_list_organizations.' The tool description adds no specific parameter-level detail but aligns with the schema by scoping results to the organization.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource β€” 'List the ISMS document generators available to this organization' β€” and enumerates the returned fields (generator name, document type, tier, derivative flag). This clearly distinguishes it from document-related siblings like scf_list_documents and scf_list_document_domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage context: 'Call before scf_generate_documents,' which tells the agent exactly when to invoke this tool. It does not name alternatives or exclusions, but its sequencing guidance is clear enough for a simple read-only list tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_documentsA
Read-only

List generated ISMS documents (read β€” viewer role): lifecycle status, section counts, unresolved conflicts, pending retirements, and whether the document is stale against current org inputs.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoFilter by lifecycle status (e.g. 'draft', 'approved', 'published')
document_typeNoFilter by document type (e.g. 'policy', 'procedure')

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description reinforces this by stating 'read β€” viewer role'. It adds useful behavioral content by enumerating what the list reveals: lifecycle status, section counts, unresolved conflicts, pending retirements, and staleness against current org inputs. No contradiction with annotations is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that states the action, resource, access level, and key returned fields without redundancy. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with fully documented parameters and no output schema, the description adequately covers what the call returns and the access context. The agent can correctly select and invoke the tool without needing additional undocumented guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with all three parameters already documented in the input schema. The description's mention of 'lifecycle status' loosely aligns with the status filter but does not add new meaning beyond what the schema provides. This is the appropriate baseline when the schema carries the parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a specific resource ('generated ISMS documents'), and the scope ('read β€” viewer role'), immediately distinguishing it from singular tools like scf_get_document and from generator-related siblings like scf_list_document_generators. The colon-delimited content list further clarifies what kind of listing this is.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly signals this is a read-only listing operation with viewer-role access, giving an agent confidence about when it is appropriate to call. However, it does not explicitly name alternatives such as scf_get_document for retrieving a single document or scf_list_document_domains for related listings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_domainsA
Read-only

List every compliance domain in the SCF taxonomy. Domains group related controls (e.g., GOV = Governance, AST = Asset Management, IAC = Identity & Access Control).

ParametersJSON Schema
NameRequiredDescriptionDefault
include_deprecatedNoInclude catalog rows deprecated by a later SCF version. Default false β€” the catalog answers with active rows only, and deprecated rows carry a lifecycle badge when included.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read operation. The description adds useful context about the taxonomy and domain examples, but it does not describe pagination, ordering, response shape, or clarify that 'every' means active domains by default. It does not contradict the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no filler. The action is front-loaded, and the second sentence earns its place by clarifying what domains are and providing distinguishing examples.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool, the description plus parameter schema is nearly complete. It clearly conveys what will be returned conceptually, though there is no output schema and the description does not mention response format or pagination. This is a minor gap for such a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the include_deprecated parameter fully documented in the schema, including its default behavior and lifecycle badge. The description itself adds no additional parameter-level meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List every compliance domain in the SCF taxonomy.' The added explanation that domains group related controls, with concrete examples (GOV, AST, IAC), clearly distinguishes this tool from siblings like scf_list_frameworks and scf_list_controls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool is for browsing the SCF taxonomy by domain, but it does not explicitly state when to use this tool versus alternatives such as scf_list_controls or scf_list_frameworks. There is enough context to infer the purpose, but no direct routing or exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_engagement_auditorsA
Read-only

List the auditors granted read access to one engagement (read β€” viewer role). Each grant carries its status: invited, active or revoked.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
engagement_idYesAudit engagement UUID β€” obtain from scf_list_engagements

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read operation. The description adds useful context by naming the viewer role and possible grant statuses (invited, active, revoked), but it does not disclose other behavioral details such as response shape, ordering, or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no filler. The core action and scope are front-loaded, and the status clarification is placed second where it adds value without bloating the description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list operation with fully documented parameters, the description covers the essential invocation context. It even notes the status values included in the result. It does not describe every possible return field, but no output schema exists and the omission is minor for this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters clearly explained including how to obtain them. The description adds minimal parameter meaning beyond reiterating that the operation targets 'one engagement', so the baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('List'), a clear resource ('auditors granted read access'), and a clear scope ('one engagement'). It also clarifies the viewer role and the per-grant statuses, making it easy to distinguish from related tools like scf_list_engagements or scf_get_engagement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: call this to list auditor grants for a specific engagement. However, it does not explicitly state when to prefer this over alternatives, nor does it mention excluded cases or related tools such as scf_add_engagement_auditor or scf_remove_engagement_auditor.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_engagement_queriesA
Read-only

List an engagement's structured auditor queries (read β€” viewer role, or an assigned auditor). A query is an auditor's question against one control, with its responses and status.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idNoFilter to a single SCF control in DOMAIN-NN format β€” obtain from scf_get_engagement_scope
statusNoFilter by query status: open, answered or closed
engagement_idYesAudit engagement UUID β€” obtain from scf_list_engagements

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true; the description adds the permission requirement ('viewer role, or an assigned auditor'), which is useful behavioral context beyond the annotation. It does not describe pagination, ordering, or error conditions, but for a read-only list operation this is acceptable. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that leads with the core purpose, includes a clarifying definition of a query, and notes the read-only nature. There is no redundant or filler content; every phrase adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with four parameters (two required), a read-only annotation, and no output schema, the description provides sufficient context: it explains what a query is, the scope, and the access requirement. It does not mention response format or filtering options, but these are covered by the schema and the read-only nature, so the description is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters with details (e.g., org_id, engagement_id, optional filters). The description adds no parameter-specific semantics; it only describes the general purpose. Baseline 3 is appropriate when the schema fully covers parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and the resource ('an engagement's structured auditor queries'), and further defines what a query is, distinguishing it from single-query retrieval tools like scf_get_engagement_query. It also conveys the scope (per engagement) and the read-only nature, making the tool's function unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for reading all queries of an engagement but does not explicitly contrast with alternative tools such as scf_get_engagement_query (single query) or scf_create_engagement_query (creation). It does not state when to choose this over others or provide exclusion conditions, so guidance is only implicit from the name and phrasing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_engagementsA
Read-only

List the organization's audit engagements (read β€” viewer role). Each entry carries its frameworks, status, dates and the catalog version its scope was frozen against.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoFilter by engagement status: draft, active, under_review or closed

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already provide readOnlyHint=true, and the description reinforces this with 'read β€” viewer role.' It also adds useful behavioral detail about the returned entries (frameworks, status, dates, catalog version), going beyond the annotation. No contradictions. Minor omissions like pagination or ordering are not critical for a read-only list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with no wasted words. The main action is front-loaded, and the read-only role and output content are stated efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with an optional filter, the description is complete enough: it states purpose, scope, and output content. It does not explicitly mention pagination or ordering, but these are not essential given the simple schema and read-only annotation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: org_id and status both have descriptive schema text. The description adds no parameter-level semantics 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific verb and resource: 'List the organization's audit engagements.' The phrase 'organization's' distinguishes it from sibling scf_list_my_engagements and the 'read β€” viewer role' hint clarifies its read-only nature. No ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context that this is an org-scoped read operation for viewer role, which implicitly differentiates it from scf_list_my_engagements and mutation tools like scf_create_engagement. However, it does not explicitly name alternatives or state when not to use this tool, leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_evidenceA
Read-only

List evidence items tracked against an organization's controls. Returns each item's tracking status, maturity level, and linked controls. Optionally filter by system.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
team_idNoFilter to evidence this team is assigned to, accountable or consulted β€” obtain from scf_list_teams
my_teamsNoFilter to evidence assigned to any team the caller belongs to; intersects with team_id rather than overriding it. 'The caller' is the API key's identity; on a self-hosted instance that is a service account on no team, so this returns nothing β€” use team_id instead.
system_idNoSystem UUID to filter by β€” obtain from scf_list_systems
function_idNoFilter to evidence assigned to any team aligned to this function β€” obtain from scf_list_functions
accountable_owner_typeNoFilter by the accountable team's primary owner: 'internal' or 'external_contractor'

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, so the safety profile is covered. The description adds useful behavioral detail beyond that: results include tracking status, maturity, and linked controls, and system filtering is optional. It does not mention pagination or response ordering, but for a read-only list this is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and scope, followed by return fields and the single optional filter. No filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list with one required and five optional, all richly documented parameters, the description plus annotations are largely sufficient. It tells the agent what fields come back and that system is a filter, though it omits pagination/limits and does not route between sibling evidence-list tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter has a rich description, including provenance hints like 'obtain from scf_list_organizations' and the my_teams caveat. The description's 'optionally filter by system' merely restates system_id, adding no new meaning, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource β€” 'List evidence items tracked against an organization's controls' β€” and enumerates returned fields (tracking status, maturity level, linked controls), which separates this from file/task/catalog evidence siblings. It does not explicitly name a comparator sibling, so while clearly scoped, it stops shy of the strongest differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance about when to choose this over scf_list_evidence_files, scf_list_evidence_catalog, or scf_get_evidence; it only notes an optional system filter. The intended use is implied as an org-level evidence overview, but exclusions or alternatives are absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_evidence_catalogA
Read-only

List evidence items from the SCF reference catalog β€” the 272 standard evidence types that can be collected to demonstrate control implementation. Supports free-text search and pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (1–100, default 25)
offsetNoPagination offset β€” number of results to skip (default 0)
searchNoFree-text filter applied to evidence title and description
include_deprecatedNoInclude catalog rows deprecated by a later SCF version. Default false β€” the catalog answers with active rows only, and deprecated rows carry a lifecycle badge when included.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers the safety profile, so the description does not need to restate that this is non-destructive. It adds useful context about the catalog contents and the 272 standard evidence types, but it does not disclose behavioral details such as default deprecation filtering or response characteristics beyond what the schema already documents.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, information-dense sentence with no filler. It front-loads the core purpose, then quickly notes the key capabilities, making it easy for an agent to parse and act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list operation with zero required parameters and a fully self-documenting schema, the description is complete. It identifies the resource, its scope, and the supported operations, and the output is intuitively the list of catalog items, so no additional return-value explanation is necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already fully documented in the input schema. The description's mention of 'free-text search and pagination' adds no meaning beyond the schema fields, landing at the baseline score for well-covered schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List evidence items from the SCF reference catalog' and clarifies the scope with 'the 272 standard evidence types that can be collected to demonstrate control implementation.' This clearly distinguishes it from sibling tools like scf_list_evidence, which manage actual evidence rather than the reference catalog.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the intended use case clear: retrieving standard evidence catalog entries, with free-text search and pagination. It does not explicitly name alternatives or say when not to use it, but the 'reference catalog' framing and sibling tool names provide strong contextual guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_evidence_filesA
Read-only

List all files uploaded or ingested for an evidence item. Returns filename, content type, upload timestamp, validation status, and a pre-signed download URL (15-min expiry).

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
evidence_idYesEvidence ID (e.g., 'ERL-IAM-001') β€” obtain from scf_list_evidence

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, establishing the safe read-only nature. The description adds valuable behavioral detail by enumerating the returned fields and especially by noting the pre-signed download URL has a 15-minute expiry, which is critical operational context an agent would not otherwise know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The first sentence states the action and scope, and the second lists return fields and the URL expiry. Every sentence serves a purpose and the most critical information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list operation with fully documented parameters, the description is largely complete: it covers what the tool returns and highlights the URL expiry. It could be slightly stronger by mentioning pagination or absence of filtering options, but nothing essential is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both org_id and evidence_id already clearly documented in the schema, including how to obtain them. The description does not add parameter-specific semantics, but the schema fully carries that burden, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb 'List' and the resource 'all files uploaded or ingested for an evidence item', making the tool's core function immediately understandable. It does not explicitly differentiate from siblings like scf_get_evidence_file, but the 'all files' phrasing implies a collection-level operation versus a single-file retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the toolβ€”when you need the files associated with an evidence itemβ€”but it does not state explicit conditions, exclusions, or alternatives. An agent must infer that this is for listing rather than downloading or validating a specific file, so guidance is present but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_evidence_gapsA
Read-only

List the organization's evidence coverage gaps: evidence required by in-scope controls that is not yet tracked, with overall coverage percentage.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation already provides readOnlyHint=true, and the description adds meaningful behavioral context: it returns untracked evidence for in-scope controls plus an overall coverage percentage. This goes beyond the annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that defines the resource precisely and adds the key output detail (coverage percentage) without filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only listing tool with no output schema, the description covers the core purpose and expected result. It does not detail exact response fields or percentage calculation, but the tool is simple enough that the description is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the org_id parameter is already documented as a UUID with guidance to obtain it from scf_list_organizations. The description adds no additional parameter-level semantics, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') with a distinct resource ('evidence coverage gaps') and defines exactly what that means: evidence required by in-scope controls that is not yet tracked. This clearly differentiates it from nearby siblings like scf_list_evidence or scf_list_evidence_catalog.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly establishes the tool's context: it is for viewing coverage gaps and the overall coverage percentage. It does not explicitly name alternatives or state when not to use this tool, but the context is strong enough for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_evidence_tasksA
Read-only

List evidence collection tasks β€” the work queue showing what needs to be collected, by whom, and by when. Optionally filter by assignee or status.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idNoOrganization UUID β€” obtain from scf_list_organizations
statusNoFilter by task status: not_started, in_progress or completed
assigneeNoFilter by assigned user UUID
overdue_onlyNoOnly tasks past their due date
assigned_to_meNoOnly tasks assigned to the caller
evidence_tracking_idNoOnly tasks for one evidence tracking record

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations declare readOnlyHint=true, so safety is already covered. The description adds useful behavioral context by framing the result as a work queue and mentioning optional filters, but it does not disclose pagination, ordering, or whether some parameters are mutually exclusive. This is acceptable for a read-only list tool but does not go beyond the baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the verb and resource, and contains no filler or redundant restatement of the tool name. The second sentence efficiently summarizes the optional filtering capability. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with a fully documented schema and readOnlyHint annotation, the description provides sufficient conceptual framing: it identifies the resource, the queue semantics, and the key filters. It does not describe the exact return fields or pagination, but the description's 'what needs to be collected, by whom, and by when' partially conveys return content, and no output schema was provided. The missing pieces are relatively minor for this tool type.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters clearly, including enums and filter semantics. The description re-states only 'filter by assignee or status' and does not add meaning beyond the schema. The baseline of 3 is appropriate because the schema carries the parameter-documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'List evidence collection tasks. It further clarifies what this means by describing the tool as 'the work queue showing what needs to be collected, by whom, and by when', which distinguishes it from other list tools like scf_list_assignments or scf_get_work_queue. The verb-resource pair directly matches the tool name and clearly signals a read-only listing operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool does and that filtering is optional, but it gives no guidance on when to choose this tool over closely related siblings such as scf_get_org_work_queue, scf_get_work_queue, or scf_list_assignments. There are no explicit exclusions, preconditions, or alternative-routing clues, so an agent must infer usage from the resource name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_frameworksA
Read-only

List every compliance framework mapped in the SCF catalog (NIST 800-53, ISO 27001, SOC 2, FedRAMP, GDPR, and 350+ more). Returns framework identifiers and display names.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is known. The description adds return format ('returns framework identifiers and display names') and scope (catalog-wide, 350+ frameworks), which is useful behavioral context. It doesn't mention pagination or limits, but for a simple list this is sufficient. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence. It leads with the primary action and resource, provides concrete examples to clarify scope, and ends with the return value. No wasted words; every phrase adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list with annotations covering safety and no output schema, the description fully informs an agent of what the tool does and what to expect. There is no missing information needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema is empty (100% coverage). The description doesn't need to explain parameters. Per guidelines, baseline for 0 params is 4, and there is nothing missing here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists every compliance framework in the SCF catalog, names specific examples (NIST 800-53, ISO 27001, SOC 2, etc.), and distinguishes it from other list tools (controls, domains, risks) by focusing on frameworks. It is unambiguous and specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose implies usage: to retrieve a list of frameworks. There are no explicit alternatives to exclude, but the description clearly indicates when to use it (when you need framework identifiers/names). It doesn't explicitly state 'use instead of X', but given no competing sibling for listing frameworks, this is adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_functionsA
Read-only

List the platform's business functions (read β€” any member): the fixed set every team aligns to, identical for every tenant. Needed for the function_id on scf_create_team.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_inactiveNoInclude retired functions (default false)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, and the description adds that it's a read operation any member can perform, plus the notable behavioral fact that the function set is identical for every tenant. It also discloses a dependency (needed for scf_create_team). This adds value beyond the annotation without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with zero waste. The read hint and purpose are front-loaded, and the dependency on scf_create_team is a valuable addition. Perfectly structured for quick agent comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one optional parameter and no output schema, the description is complete. It explains the resource, the read-only nature, the cross-tenant consistency, and its role in team creation, covering all an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single include_inactive parameter, so the schema already documents it fully. The description does not mention the parameter, but since the schema covers it, baseline 3 is appropriate; no additional meaning is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it lists the platform's business functions, a specific resource, and distinguishes from siblings by noting it's the fixed set every team aligns to, identical for every tenant. Also connects to its use in scf_create_team, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states it's a read operation available to any member and that it's needed for the function_id on scf_create_team, giving clear context for when to use it. It doesn't explicitly list alternatives or when-not conditions, but the purpose is so specific that it stands out among sibling list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_journey_templatesA
Read-only

List the journey templates this deployment ships (read β€” viewer role). If importing a returned template_key 404s, the file's declared key differs from its filename stem β€” import by the stem.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description reinforces this while adding genuinely new behavioral context: the templates are deployment-scoped, and a returned template_key may mismatch the filename stem, causing 404s on import. This is a non-obvious edge case that helps the agent avoid a failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences with the core purpose front-loaded and a valuable failure-mode caveat second. No filler, no redundancy, and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only, list-style tool, the description is sufficient: it states what is listed, under what role, and how to handle a known import failure mode. No output schema exists, but the list semantics and template_key reference provide enough operational guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; org_id is fully documented with UUID format and a pointer to scf_list_organizations. The description adds no parameter-specific detail, but none is needed because the schema carries the full burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List'), a specific resource ('journey templates this deployment ships'), and the access level ('read β€” viewer role'). The scope is clear and the tool is easily distinguished from single-item siblings like scf_get_journey and scf_import_journey.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context is provided: this is a viewer-level read operation for listing deployment-shipped templates. It does not explicitly name alternatives or exclusions, but the read-only list purpose is unambiguous and the import-related tip gives practical downstream context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_membersA
Read-only

List members of one organization with their role (admin, editor, or viewer).

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, and the description does not contradict it. It adds useful behavior context by stating that members are returned with their roles, including the exact allowed role values. It does not discuss pagination or permission prerequisities, but those are minor for a simple read-only list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence containing only essential information, with the verb and primary scope front-loaded. There is no filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only list operation, the description plus schema gives enough to invoke the tool correctly and anticipate the core output (members with roles). The absence of an output schema and explicit return-shape details is a minor gap, as 'List members' already implies a collection of member entries.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the only parameter, org_id, is fully described as an Organization UUID with source guidance. The tool description itself adds no parameter-level meaning beyond what the schema already provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description starts with a specific verb 'List', names the exact resource 'members', and scopes it to 'one organization'. It also enumerates the expected role values (admin, editor, or viewer), making the tool's purpose immediately clear and distinguishable from sibling org/resource tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The schema parameter note 'obtain from scf_list_organizations' provides a clear workflow cue: an agent should first list organizations, then pick an org_id. However, the description does not explicitly state when not to use this tool or name alternatives such as scf_get_organization, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_my_engagementsA
Read-only

List engagements the caller holds an active auditor grant on, across organizations (read). The auditor's own view β€” use scf_list_engagements for the organization-side list.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description reinforces this with '(read)'. It adds useful behavioral context about auditor-grant filtering and cross-organization scope, but does not disclose return formatting, pagination, or behavior when no active grants exist. This is acceptable but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences deliver the essential information with no filler. The core scoping ('active auditor grant', 'across organizations') is front-loaded, and the sibling distinction is stated efficiently in the second sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read-only list tool, the description is complete: it names the resource, the authorization filter, the cross-organization scope, the read-only nature, and the relevant sibling alternative. No output schema exists, but a list operation's return type is implied by the verb and resource.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema coverage is 100%, so the description is not required to explain parameter details. The description's focus on scope and audience fully compensates for the absence of parameters, meeting the baseline for parameterless tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a precise resource ('engagements'), and a scoping condition ('caller holds an active auditor grant, across organizations'). It also explicitly distinguishes this tool from the closely named sibling scf_list_engagements, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly identifies this as the auditor's own view and explicitly directs agents to use scf_list_engagements for the organization-side list. This provides both a use case and a named alternative, so an agent can choose correctly without ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_organizationsA
Read-only

List every organization the caller has access to. Returns org UUID, name, subscription tier, and member count. Use this first to obtain the org_id other tools need.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description does not contradict this. It adds useful behavioral detail by naming the exact return fields (org UUID, name, subscription tier, member count), which is especially valuable because there is no output schema. It is a simple read-only list operation, so no further behavioral caveats are needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tidy sentences with no waste. The first states the action, the second covers return fields and usage guidance. Every clause earns its place and the 'Use this first' guidance is effectively front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list tool with no output schema, this description is complete. It tells the agent what data comes back, why the tool matters, and the expected usage sequence. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description carries no parameter-documentation burden. The baseline of 4 applies here because schema coverage is effectively complete since there is nothing to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action ('List every organization the caller has access to'), the resource (organizations), and explicitly distinguishes it from sibling tools by noting it returns the org_id used by other tools. The return fields are listed, leaving no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Use this first to obtain the org_id other tools need' provides clear usage context and a strong signal for when an agent should invoke this tool. It does not explicitly name alternatives or exclusions, but for a zero-parameter list operation this is minor.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_org_compensating_controlsA
Read-only

List compensating controls recorded against the organisation's own controls (not vendor ones), with material, risk_acceptance_state and justified flags.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoCompensating controls for controls in this SCF domain code
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idNoCompensating controls for this control
risk_codeNoCompensating controls justified by this risk code

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already tells the agent this is a safe read. The description adds that it lists org-owned rather than vendor controls and names three returned flags, which is useful context, but says nothing about pagination, volume, or filtering behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight sentence with the org-vs-vendor scope front-loaded and no filler. It could have used a second sentence for filter/usage context, but nothing present is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with full schema coverage and no output schema, the description covers scope and hints at returned flags, but leaves an agent without guidance on the available filters or on how this relates to the single-item sibling. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all four parameters (org_id, domain, scf_id, risk_code) are documented in the schema itself. The description adds no filter syntax or semantics 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (compensating controls) scoped to the organisation's own controls, and explicitly excludes the vendor variant. That parenthetical distinguishes it from the sibling scf_list_compensating_controls without needing the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The '(not vendor ones)' clause gives an implicit exclusion, but the description never states when to use this versus scf_get_org_compensating_control (single item) or scf_list_compensating_controls by name. Usage is inferable from the verb but not guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_posture_snapshotsA
Read-only

List the organisation's monthly posture snapshots, most recent month first: period, when and how taken (scheduled or manual), and the counts recorded.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many months to return (1–120, default 24)
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is covered. The description usefully adds ordering (most recent first) and the field contents of each snapshot. It does not mention pagination, whether older months are retained, or the default limit of 24, which the schema carries instead.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the resource and the ordering constraint come before the field enumeration. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly enumerates the returned fields, which is the right level of detail. It leaves retention/pagination behavior unstated, a minor gap for a simple read-only list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% β€” org_id documents its source (scf_list_organizations) and limit documents the 1–120 range and default of 24. The description adds nothing about the parameters, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (monthly posture snapshots) and immediately describes the returned fields: period, when/how taken, and counts. This distinguishes it from the sibling scf_get_posture_snapshot (singular fetch) without needing to open either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the list semantics and 'most recent month first' ordering, but the description never states when to prefer this over scf_get_posture_snapshot or what conditions warrant it. No alternatives or exclusions are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_reconciliation_runsA
Read-only

List this organization's catalog reconciliation runs, newest first (read β€” viewer role), with each run's status and target version.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, 1–100 (default 20)
offsetNoRows to skip for pagination (default 0)
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description reinforces this with 'read β€” viewer role,' adding permission-level context beyond the annotation. It also discloses ordering and the key attributes returned (status, target version), which is helpful for a read-only list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence packs the action, resource, scope, sort order, permission requirement, and expected output fields with no filler. It is front-loaded and every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list operation with fully documented pagination parameters, the description is largely complete: it gives scope, ordering, auth, and output hints. It could be slightly more complete by mentioning pagination response behavior or pointing to scf_get_reconciliation_run for single-run details, but nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides full descriptions for all three parameters, including UUID format and pagination bounds. The description adds no param-specific guidance, but this is unnecessary because the schema already carries the semantic weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'List this organization's catalog reconciliation runs.' It adds ordering ('newest first'), permission context ('viewer role'), and expected output fields ('status and target version'), making it easy to distinguish from scf_get_reconciliation_run and other list siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly establishes this as the list operation for an organization's reconciliation runs, scoped by org and sorted newest first. It does not explicitly name alternatives such as scf_get_reconciliation_run or scf_get_catalog_reconciliation_status, so exclusions are left to inference rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_risksA
Read-only

List the whole risk register (ordered by risk code): scores, treatment status and any acceptance (accepted_by, accepted_at, rationale, expiry, acceptance_state). Filter by status, level, category.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoFilter by treatment status: identified, analysed, treating, treated, accepted or monitoring (sent as the platform's treatment_status)
categoryNoFilter by catalog risk category code, e.g. 'AC' matches R-AC-N
risk_levelNoFilter by inherent risk level, banded by the org's risk profile
acceptance_stateNoAccepted risks only, by their approval: 'approved' (in force), 'expired' (past acceptance_expires_on) or 'unapproved' (accepted with no approval recorded)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered; the description goes further by disclosing result ordering ('ordered by risk code') and enumerating the acceptance fields returned. It omits pagination/result-size behavior, so it adds real but incomplete 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource and scope, then the returned fields, then the filters β€” no filler sentences. The parenthetical acceptance-field list is slightly dense and partly redundant with the acceptance_state parameter, which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates what comes back (scores, treatment status, acceptance details), and ordering is stated. What remains unstated is pagination or whether the full register is returned unbounded, which matters for a 'whole register' read but is a minor gap for a read-only list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already explains the enum values, the category code format ('AC' matches R-AC-N) and acceptance_state semantics. The description only echoes status/level/category as filter categories and says nothing about the required org_id or acceptance_state, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the whole risk register') plus scope details β€” ordering by risk code and returned fields. The word 'whole' plus the filter set signals it is not the per-control listing (scf_get_risks_for_control) or the custom-risk listing, though it never names those siblings explicitly, keeping it 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by enumerating the available filters ('Filter by status, level, category'), which tells an agent what this call is for. It offers no when-not guidance and names no alternative tool for scoped or custom risk reads, so the agent must infer routing from sibling names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_scoped_controlsB
Read-only

List controls scoped to the organization with status, basis, target maturity, materiality, procedure and last validation. Filter by scope, domain, framework, team, basis, material. Paginated.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoOrder: 'scf_id' (default), or 'weighting' β€” material controls first, then catalogue weighting highest first, then scf_id. Rows also carry target_maturity, target_source (control | domain), target_maturity_reason, procedure_document_id, procedure_document_status, last_validated_at, last_validated_by and last_validation_notescf_id
basisNoFilter by obligation basis: 'mcr', 'dsr', or 'unclassified' (no classified framework and no override). Each row carries obligation_basis, basis_source (override | framework) and basis_override_reason
limitNoPage size (1–200, default 50)
domainNoSCF domain code (e.g., 'GOV', 'AST', 'IAC')
offsetNoPagination offset β€” number of results to skip (default 0)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
searchNoFree-text filter applied to control ID, name, or description
team_idNoFilter to controls this team is assigned to, accountable or consulted β€” obtain from scf_list_teams
materialNoFilter by materiality: true for material controls (catalogue weighting 10, or an admin override), false for the rest. Rows carry material, material_source (control | weighting) and material_reason
my_teamsNoFilter to controls assigned to any team the caller belongs to; intersects with team_id rather than overriding it. 'The caller' is the API key's identity; on a self-hosted instance that is a service account on no team, so this returns nothing β€” use team_id instead.
frameworkNoFramework slug (e.g., 'nist-800-53') to filter mapped controls
function_idNoFilter to controls assigned to any team aligned to this function β€” obtain from scf_list_functions
csf_functionNoNIST CSF function: 'GOVERN', 'IDENTIFY', 'PROTECT', 'DETECT', 'RESPOND', or 'RECOVER'
scope_statusNoScope filter: 'in_scope' (selected), 'out_of_scope' (deselected), or 'all' (default β€” everything)
control_weightingNoWeighting threshold on a 0–10 scale
accountable_owner_typeNoFilter by the accountable team's primary owner: 'internal' or 'external_contractor'

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already establishes the safe-read profile, and the description adds that results are paginated and which fields appear on each row. It says nothing about permissions, rate limits, or default page behavior beyond what the schema's limit/offset defaults already convey, so it is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with purpose and returned fields before the filter and pagination notes. With no output schema, the row-field enumeration earns its place rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter read tool with no output schema, the description covers purpose, filter surface, pagination, and returned fields, which is enough to invoke it correctly. It lacks any statement of how it relates to the catalogue-level list/get siblings, which is the only meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including detailed enum and row-field notes, so the baseline is 3. The description's filter list (scope, domain, framework, team, basis, material) only restates a subset of the 16 parameters and omits search, sort, my_teams, function_id, csf_function, control_weighting, and accountable_owner_type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('List') plus a clearly delimited resource ('controls scoped to the organization'), and it enumerates the notable fields each row carries. The 'scoped to the organization' qualifier implicitly separates it from scf_list_controls and scf_get_scoped_control, but no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sentence 'Filter by scope, domain, framework, team, basis, material' describes parameter capabilities, not when to choose this tool over scf_list_controls, scf_get_scoped_control, or scf_get_org_work_queue. No prerequisites, exclusions, or alternative-routing guidance are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_system_capabilitiesA
Read-only

List the evidence types a system can provide and how (read β€” viewer role): capability status potential/configured/active, collection method, confidence and data format.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
system_idYesSystem UUID β€” obtain from scf_list_systems
capability_statusNoFilter by capability status

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, and the description reinforces that with '(read β€” viewer role)'. It adds useful behavioral context beyond the annotations by specifying the output dimensions (capability status, collection method, confidence, data format). No hidden side effects, destructive behavior, or contradictions are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler. It front-loads the verb and resource, then compactly lists the specific output fields in a colon-delimited list, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list operation with fully documented parameters, the description adequately covers what the tool does and what information it returns. It even names the key output categories, which matters because no output schema is provided. The missing pagination or ordering details are minor for this straightforward read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters. The description repeats the capability_status enum values, which is consistent but does not add meaningful semantics beyond the schema. org_id and system_id provenance is already covered by the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('the evidence types a system can provide'), and goes on to enumerate the fields returned: capability status, collection method, confidence, and data format. It is clear and informative, but it does not explicitly differentiate itself from siblings such as scf_list_capabilities or scf_list_system_catalog, so it misses the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose implies when to use the tool: when you need to enumerate the evidence types a particular system can provide. The '(read β€” viewer role)' hint adds context about access level, but the description gives no explicit guidance about when to prefer this over related tools like scf_list_capabilities or scf_list_system_catalog, and it 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.

scf_list_system_catalogA
Read-only

List system-catalog templates β€” the platform's knowledge base of known vendors/tools (slug, vendor, type, recipe maturity levels). Optionally search by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoFree-text search across template names, vendors, and aliases

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already communicates that this is a safe read operation. The description adds useful context about the content of the catalog (slug, vendor, type, recipe maturity levels) but does not disclose behavioral details such as pagination, ordering, or whether the result is a flat list. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with the primary action front-loaded and no filler. The optional search behavior and content context are included efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, read-only list tool with one optional parameter and no output schema, the description provides enough context: what the catalog is, what fields are involved, and that search is available. It could mention the response shape more explicitly, but the list semantics and field details largely compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents the single search parameter with 100% coverage, so the description does not need to add parameter details. The phrase 'search by name' is slightly narrower than the schema's 'across template names, vendors, and aliases,' so the description adds no real value and is mildly less precise.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource β€” 'List system-catalog templates' β€” and adds domain context by defining them as the platform's knowledge base of known vendors/tools. It is not a tautology and is clear enough to distinguish from unrelated sibling list tools, though it does not explicitly name a sibling alternative like scf_get_system_catalog_template.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys the general purpose of listing catalog templates and mentions optional search by name, which implies a search use case. However, it gives no explicit guidance about when to use this tool versus the many similar list tools or the related singular get tool, nor does it state any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_systemsA
Read-only

List the organization's systems with boundary and recovery record (in_scope, criticality, RTO/RPO hours, data classification, hosting). Filter by linked vendor or boundary decision.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
in_scopeNoFilter by assessment boundary: 'true' (inside), 'false' (outside) or 'undecided' (not recorded)
vendor_idNoFilter to systems structurally linked to this vendor UUID β€” obtain from scf_list_vendors

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation already declares readOnlyHint=true, so the safety profile is covered. The description adds genuine behavioral value by disclosing which data the records expose (boundary, criticality, recovery, classification, hosting). It is silent on permissions, pagination, and ordering, so it is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, the resource and its payload front-loaded, filtering detail second. No filler or redundant restatement of the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description reasonably compensates by naming the fields each returned system carries. Combined with the fully covered input schema, an agent has enough to call it correctly; only return shape, ordering and pagination remain unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so org_id, in_scope and vendor_id are already fully documented with formats and obtain-from pointers. The description's filter mentions merely echo the schema's in_scope/vendor_id semantics without adding syntax or edge-case guidance, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List the organization's systems') and enumerates the record fields carried back (in_scope, criticality, RTO/RPO, classification, hosting), which is far beyond a tautology. It stops short of naming the adjacent siblings it must be told apart from (scf_get_system, scf_list_system_catalog), so it lands at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The closing sentence gives filtering context ('Filter by linked vendor or boundary decision'), which implies how it is used but never says when to reach for this list versus scf_list_system_catalog or scf_get_systems_for_evidence. Usage is implied, not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_team_assignmentsA
Read-only

Map of which team owns which scoped control or evidence item (read β€” viewer role). Unfiltered returns the whole map; narrow with item_ids, team_id or accountable_only.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesItem kind
org_idYesOrganization UUID β€” obtain from scf_list_organizations
team_idNoRestrict to one team
item_idsNoRestrict to these item UUIDs
accountable_onlyNoOnly the accountable team per item

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, and the description reinforces this with 'read β€” viewer role.' It goes beyond the annotation by disclosing that an unfiltered call returns the entire map, which implies potential large payloads and motivates the filtering guidance. No contradictions exist between description and annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly worded sentences: the first establishes purpose and access level, the second gives filtering behavior. Every word earns its place, and the key scoping information is front-loaded before the filtering options.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool, the description covers purpose, access level, and filtering behavior. The schema fully documents required and optional parameters accordlingly)Skip. The return concept ('map of ownership') is clear, though the exact object shape or pagination behavior is not described in the absence of an output schema. This is a minor gap given the simplicity of the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 100% description coverage for all five parameters, including types, formats, and purposes. The description repeats the three optional filters (item_ids, team_id, accountable_only) but adds no new semantic detail beyond what the schema already states, so it does not meaningfully compensate or extend the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource β€” a map of team ownership for scoped control or evidence items β€” and clarifies it is a read operation requiring viewer role. This distinctly differentiates it from related write tools like scf_create_team_assignment or scf_delete_team_assignment, and from the more generic scf_list_assignments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains how to narrow the result set using item_ids, team_id, or accountable_only, and notes that an unfiltered call returns the whole map. It does not, however, name any alternative tools or state when to prefer this over scf_list_assignments or similar list operations, leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_teamsA
Read-only

List the organization's teams (read β€” viewer role). Archived teams are hidden unless include_inactive is set; they are kept, never deleted, so history still resolves.

ParametersJSON Schema
NameRequiredDescriptionDefault
mineNoOnly teams the caller is a member of (default false); each team then also carries membership_role. 'The caller' is the API key's identity; on a self-hosted instance that is a service account on no team, so this returns nothing β€” use team_id instead.
org_idYesOrganization UUID β€” obtain from scf_list_organizations
function_idNoFilter by business function β€” obtain from scf_list_functions
include_inactiveNoInclude archived teams (default false)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, lowering the burden on the description. The description adds valuable behavioral context: archived teams are hidden by default, are 'kept, never deleted,' and history still resolves. This goes beyond the annotation and helps an agent understand the archival semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted words. It states the core action, the permission level, and the key archive behavior efficiently. Every clause adds information relevant to calling the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list operation with a readOnlyHint and fully documented parameters, the description covers the main behavioral nuance (archived teams) and permission context. No output schema exists, but the tool's purpose and filtering behavior are sufficiently clear for an agent to invoke it correctly. Minor details like pagination or return shape are not disclosed, but these are not critical for this simple list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents all four parameters. The description adds a small amount of semantics by explaining the include_inactive behavior, but mostly relies on the schema. Baseline 3 is appropriate because the schema carries the parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List the organization's teams,' which clearly identifies the operation. It also adds distinguishing context ('Archived teams are hidden unless include_inactive is set') that sets it apart from other list tools. The parenthetical 'read β€” viewer role' reinforces its read-only nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: this is a read operation for viewer role, and archived teams are only included when include_inactive is set. It does not explicitly name sibling alternatives like scf_get_team for single-team retrieval, but the scope and conditions are clear enough to guide selection. No misleading or exclusions are present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_vendor_action_itemsA
Read-only

List remediation action items for one vendor, or across every vendor when vendor_id is omitted (read β€” viewer role). Filter by status or priority.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoFilter by status
priorityNoFilter by priority
vendor_idNoVendor UUID β€” omit to list action items across all vendors

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true; the description adds value by stating the viewer-role requirement and the scope behavior when vendor_id is omitted. It doesn't cover return shape or pagination, but those are minor for a safe read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The main action and scope are front-loaded, followed immediately by filter options.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool with fully described parameters and enum filters, the definition is functionally sufficient to invoke correctly. The only minor gap is lack of return-format or pagination details, but no output schema exists and these are not required for a correct call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters including vendor_id omission behavior and org_id provenance. The description only restates the status/priority filters without adding new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('remediation action items'), and clearly distinguishes single-vendor vs all-vendor scope via vendor_id omission. This differentiates it from sibling tools like create/update/delete_vendor_action_item.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for when to use the tool: reading action items as a viewer, with optional status/priority filters. It does not explicitly name alternatives like scf_create_vendor_action_item, but the 'read' qualifier and list verb make the use case obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_vendor_assessmentsA
Read-only

List a vendor's AI security assessments, newest first. Includes status, RAG rating, recommendation, and report fields per record.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
vendor_idYesVendor UUID β€” obtain from scf_list_vendors

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the read-only safety profile is covered. The description adds useful behavioral context beyond that: results are ordered newest first, and each record contains status, RAG rating, recommendation, and report fields. No contradictions with the readOnlyHint annotation are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the first identifies the primary action and ordering, the second lists included record fields. No filler or redundant restatement of the tool name or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list operation with two well-documented parameters and no output schema, the description covers the main needs: what is returned, the ordering, and the notable fields. It does not mention pagination or whether the list is unbounded, but given the low complexity and read-only annotation, this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% parameter documentation, including descriptions for org_id and vendor_id with instructions on where to obtain them. The description does not need to add much parameter semantics, and it incidentally ties vendor_id to the vendor being listed. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a clear resource ('a vendor's AI security assessments'), and adds distinctive ordering ('newest first') and per-record fields. This clearly separates it from sibling tools like scf_get_latest_vendor_assessment or scf_get_vendor_assessment, which target a single assessment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: call this when you want a list of a vendor's assessments rather than a single specific or latest assessment. However, it does not explicitly mention alternatives like scf_get_latest_vendor_assessment or scf_get_vendor_assessment, nor does it state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_vendor_certificationsA
Read-only

List a vendor's certifications (read β€” viewer role): name, issuing body, certificate number, status, issue and expiry dates, scope and verification URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
vendor_idYesVendor UUID β€” obtain from scf_list_vendors

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint: true, and the description reinforces this with 'read β€” viewer role'. The description adds the specific return fields, which is useful context beyond the annotation. It doesn't mention pagination or error behavior, but for a simple list operation with read-only semantics, this is adequate. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-structured sentence that leads with the action and resource, then lists the returned fields in a compact enumeration. No filler or redundancy. The read-only qualifier is included early, and the entire description is immediately useful to an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core action, the required inputs (implied by the schema), and the expected output fields, which is especially valuable given there is no output schema. It doesn't mention pagination or ordering, but for a list tool with two required UUID parameters and a defined field list, this is near-complete. The viewer role note adds context about permissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: both org_id and vendor_id have detailed descriptions explaining how to obtain them (from scf_list_organizations and scf_list_vendors). The description itself doesn't add parameter-specific details, but it doesn't need to because the schema is comprehensive. Baseline of 3 is appropriate when the schema carries the semantic weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a clear resource ('a vendor's certifications'), and enumerates the exact fields returned (name, issuing body, certificate number, etc.). It also indicates the action is read-only with 'read β€” viewer role', which distinguishes it from the create/update/delete sibling tools for vendor certifications. No ambiguity about what this tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for read-only retrieval of certifications and notes the viewer role requirement, which guides authorization expectations. It doesn't explicitly mention when not to use it or contrast with alternatives, but given the sibling tools (create/update/delete), the purpose is clear. The 'read' label and field list make it evident that this is for viewing, not modifying.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_vendorsA
Read-only

List third-party vendors in the organization's TPRM (Third-Party Risk Management) registry. Optionally filter by status or criticality. Paginated.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-indexed page number (default 1)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoLifecycle status filter β€” one of: prospect, active, under_review, approved, suspended, offboarded
per_pageNoPage size (1–100, default 25)
criticalityNoCriticality tier filter

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description's 'List' action is consistent with that. The description adds modest value by noting pagination and optional filters, but it does not disclose response shape, ordering, or operational constraints such as 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short, front-loaded segments with no filler: the core action, the optional filters, and pagination. This is an efficient structure that gives an agent the essential information quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list operation with fully described parameters and a readOnlyHint annotation, the definition is largely sufficient. The only notable gap is not explaining the response structure or explicitly contrasting with scf_get_vendor, but those are minor given the schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; every parameter, including org_id, page, per_page, status, and criticality, already has a meaningful schema description. The tool description only summarizes the filters at a high level and adds no meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: it lists third-party vendors in the organization's TPRM registry, with optional filters and pagination. This clearly distinguishes it from create/update/delete vendor tools, though it does not explicitly contrast with the scf_get_vendor single-record sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the usage context: an agent should call this when it needs to enumerate or browse vendors, optionally filtered by status or criticality. However, it does not explicitly state when to prefer this tool over scf_get_vendor or mention any exclusions, so alternative-selection guidance remains implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_webhook_deliveriesA
Read-only

List delivery logs for a webhook endpoint (newest first). Each entry shows signature validation result, processing status, evidence ID, and timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (1–200, default 50)
offsetNoPagination offset β€” number of deliveries to skip (default 0)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
endpoint_idYesWebhook endpoint UUID β€” obtain from scf_list_webhooks

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read operation, and the description adds useful behavioral context: results are newest first and each entry includes signature validation result, processing status, evidence ID, and timestamps. This goes beyond the annotation and helps the agent understand what to expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the first establishes the core operation and ordering, the second describes the output fields. Front-loaded and tightly written, every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only listing tool, the annotation covers safety, the schema covers all parameters, and the description covers ordering and output content. Nothing essential is missing for an agent to invoke it correctly and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents org_id, endpoint_id, limit, and offset. The description adds no additional parameter semantics beyond pointing to 'a webhook endpoint,' which aligns with endpoint_id. This meets the baseline for well-documented schemas but does not elevate it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List delivery logs for a webhook endpoint.' It also adds relevant detail (newest first, entry contents) that differentiates it from sibling tools like scf_list_webhooks, which lists endpoints rather than delivery logs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly frames the tool's use case: retrieving delivery logs for a specific webhook endpoint. It does not explicitly mention when not to use it or name alternatives, but the context is unambiguous and the required endpoint_id parameter is well-integrated with the described purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_webhooksA
Read-only

List the organization's webhook endpoints (newest first). Returns name, status, delivery count, and secret prefix.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes that this is a safe read operation. The description adds useful behavioral context by specifying the ordering and the exact return fields, including the secret prefix, which is non-obvious and valuable for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler. The verb and resource are front-loaded, and each clause adds meaningful information: scope, ordering, and return fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool with one fully documented parameter and readOnlyHint annotation, the description covers the essential details: scope, ordering, and return fields. No output schema exists, so the explicit return-field list is especially helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully describes org_id, including its UUID format and how to obtain it from scf_list_organizations. The description only reinforces the organizational scope without adding new parameter-level semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the exact operation (List), the resource (the organization's webhook endpoints), the ordering (newest first), and the returned fields. This clearly differentiates it from related tools like scf_get_webhook, scf_create_webhook, and scf_list_webhook_deliveries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies use when an agent needs all webhook endpoints for an organization rather than a single webhook via scf_get_webhook. The context is clear, though it does not explicitly name alternatives or exclusion conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_list_window_assessmentsA
Read-only

List recent windowed AI assessments for an evidence item (newest first). Each entry includes window bounds, frequency, file IDs, coverage, status, relevance score, findings, and cost.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (1–100, default 10)
offsetNoPagination offset β€” number of results to skip (default 0)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
evidence_idYesEvidence ID (e.g., 'E-IAM-01') β€” obtain from scf_list_evidence

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark readOnlyHint=true, and the description reinforces this by focusing on listing with newest-first ordering. It usefully discloses the returned entry contents beyond the schema and annotations, including window bounds, frequency, file IDs, coverage, status, relevance score, findings, and cost.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence covers operation, ordering, and result contents with no filler. Every phrase adds relevant information and the structure is immediately scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool, the description is sufficient: it specifies the resource scope, ordering, and output fields, while the schema covers parameter constraints. Since there is no output schema, the explicit field list meaningfully compensates for the missing return-type information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit, offset, org_id, and evidence_id are already explained inline. The description adds no parameter-specific detail, but none is needed, so it stays at the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the exact operation: listing recent windowed AI assessments for an evidence item, newest first. The verb 'List' plus the resource and ordering clearly distinguishes it from get/summary siblings, even without naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it β€” when you need a history or list of window assessments for an evidence item. However, it does not explicitly contrast it with scf_get_window_assessment, scf_get_window_assessment_summary, or trigger variants, so alternative selection 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.

scf_mark_notifications_readA

Mark notifications read for the current user (write β€” self only): one by notification_id, or every notification when all=true. Acknowledge after processing scf_get_notifications.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoMark every notification read β€” explicit opt-in, ignored when notification_id is given
notification_idNoNotification UUID to mark read

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=false and destructiveHint=false. The description adds useful context beyond annotations: the operation is self-only, supports bulk marking, and is meant as an acknowledgment step. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that front-loads the action and scope, then efficiently covers both parameter modes and the intended workflow. There is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple self-scoped write operation with two optional parameters and no output schema, the description is complete enough: it names the parameters' roles and the correct sequencing relative to scf_get_notifications. It does not describe return values or error behavior, but these are low-risk omissions for an acknowledgment operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already explains both parameters, including the precedence rule ('ignored when notification_id is given'). The description restates this behavior but adds no new semantic detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Mark notifications read'), the scope ('for the current user (write β€” self only)'), and the two invocation modes (by notification_id or all=true). It also distinguishes itself from the sibling scf_get_notifications by framing this as the write/acknowledgment counterpart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly instructs when to use the tool: 'Acknowledge after processing scf_get_notifications.' This gives the agent a clear workflow context. It does not list exclusions, but there is no competing sibling for marking notifications read, so the guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_preview_catalog_reconciliationA

Create a reconciliation preview run (write β€” admin role): what moving to the target catalog version would do to scoped controls, evidence and mappings. Changes nothing until apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
target_versionNoCatalog version to reconcile towards; omit to use the platform's current version

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only state readOnlyHint=false and destructiveHint=false, but the description adds meaningful behavioral detail: it explicitly calls out admin authorization, labels the operation as a write, and clarifies it is non-destructive until an apply step. This goes beyond the structured annotations and helps an agent understand safety and permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense sentence that front-loads the action, role, and safety behavior. Every part earns its place and there is no redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no output schema, the description covers the important operational details: purpose, required role, and non-destructive behavior. It could additionally point to how to retrieve or view the preview run, but this is a minor gap given the strong sibling-tool context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already documented well in the schema. The description adds only slight reinforcement by mentioning 'target catalog version', but it does not provide new semantic 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Create a reconciliation preview run' and clearly states what it does: show the impact of moving to a target catalog version on scoped controls, evidence, and mappings. It also distinguishes itself from the apply operation by noting 'Changes nothing until apply.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: this is a write operation requiring admin role, and it is meant as a safe preview before applying changes. It does not explicitly name alternatives like scf_apply_catalog_reconciliation, but the 'until apply' phrasing makes the intended usage fairly clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_preview_documentA
Read-only

Preview a document's assembled content as structured JSON (read β€” viewer role) β€” the merged result of generated and edited sections without rendering to a file.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
document_idYesGenerated document UUID β€” obtain from scf_list_documents

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description clarifies the viewer-role permission level and the important behavior that no file rendering occurs. It also discloses that the result is structured JSON, which is useful since no output schema is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense sentence with no filler. The core action, target, output type, permission note, and key behavioral contrast are all front-loaded and each clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two fully documented parameters and no nested structures, the description is sufficiently complete for an agent to decide when to call it. It could additionally define the exact JSON response shape, but the absence of an output schema is partly mitigated by saying the output is structured JSON.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both org_id and document_id have descriptive text explaining their UUID format and how to obtain them. The tool description adds no parameter-specific meaning, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Preview'), a concrete resource ('a document's assembled content'), and the output form ('structured JSON'). It also distinguishes itself from file-export and raw-section tools by noting it returns the merged generated/edited result 'without rendering to a file.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: this is a read-only, viewer-role operation for inspecting the assembled document as JSON. It implicitly tells the agent not to use this when a rendered file is needed, though it does not explicitly name alternative sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_preview_framework_scope_changeA
Read-only

Preview adding or removing frameworks WITHOUT applying it (read β€” viewer): controls entering or leaving scope, orphaned evidence, and on remove basis_downgrades (controls whose basis weakens).

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
operationYes'add' to preview scoping these frameworks in, 'remove' to preview taking them out
frameworksYesFramework slugs to model β€” obtain from scf_list_frameworks

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description reinforces this with explicit 'WITHOUT applying it (read β€” viewer)'. It goes further by naming what the preview surfaces β€” controls entering/leaving scope, orphaned evidence, and basis downgrades on remove β€” which is real behavioral value beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that leads with the preview/no-apply constraint. The nested parentheticals about orphaned evidence and basis downgrades are dense but each carries information, so little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must convey what the preview returns, and it does list the key surfaced outcomes. Remaining gaps are minor: no mention of whether the preview is required prior to applying, and no pagination or sizing expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents org_id, operation, and frameworks, making baseline 3 appropriate. The description adds only marginal parameter meaning by noting that the 'remove' branch specifically exposes basis_downgrades, which enriches the enum semantics slightly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (preview framework scope change) and immediately distinguishes itself from the applying siblings by emphasizing 'WITHOUT applying it (read β€” viewer)', so an agent can tell it apart from scf_scope_framework and scf_bulk_unscope_framework 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied β€” this is the dry-run before applying scope changes β€” but no alternative is named and no explicit when/when-not rule is given. The 'viewer' permission hint is a useful contextual cue but not a routing guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_record_control_validationA

Record that an in-scope control was validated (write β€” editor): the note is the record. The control's cadence then sets when the next validation is due.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYesWhat was checked and what was found (required, non-blank)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idYesIn-scope control (422 otherwise) β€” obtain from scf_list_scoped_controls

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag a non-destructive write, and the description adds real value on top: '(write β€” editor)' discloses the required permission tier, and 'the control's cadence then sets when the next validation is due' documents a downstream side effect an agent could not infer from the schema. It does not state what is returned or how duplicates are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight clauses with the action and its permission tier front-loaded, then the side effect. No filler, every phrase carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter recording tool with full schema coverage and annotations covering the safety profile, the description supplies the permission role and the cadence side effect. The only gap is the return value, which no output schema documents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters and their sourcing tools, making 3 the baseline. The description contributes one extra semantic β€” 'the note is the record' β€” clarifying that note is the entire payload, but adds nothing about org_id or scf_id beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (record) and resource (control validation) plus the key qualifier that the control must be in-scope. An agent can immediately separate this write tool from the sibling scf_list_control_validations reader.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'was validated' implies this is called after a validation occurs, and the in-scope requirement is nudged by scf_id. But there is no explicit when-to-use/when-not guidance or named alternative for reading validations back.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_refresh_stale_window_assessmentsA

Queue a fresh windowed AI assessment for every evidence item whose newest file postdates its last assessment (write β€” editor role). Capped per run; returns how many were queued.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the agent knows this is a write operation but not destructive. The description adds valuable behavioral context: it queues assessments (not runs them synchronously), is capped per run, returns a count of queued items, and requires an editor role. This goes beyond the annotations and helps set expectations about side effects and limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The core action and condition are front-loaded, followed by the role requirement, cap, and return value. Every clause earns its place and no information is repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description is quite complete: it explains what gets queued, the staleness condition, the cap, the return value, and the role requirement. It doesn't specify the cap size or how to check results afterward, but those are minor gaps given the tool's simplicity and the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the single org_id parameter well, including how to obtain it (scf_list_organizations). The description doesn't add parameter-specific semantics beyond the schema, but with full coverage the baseline of 3 is appropriate. The description's mention of 'per run' and 'capped' indirectly relates to behavior rather than the parameter itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Queue'), a precise resource ('fresh windowed AI assessment for every evidence item whose newest file postdates its last assessment'), and a clear scope. It distinguishes itself from sibling tools like scf_trigger_window_assessment and scf_bulk_assess_windows by focusing on stale items detected via file postdates, so an agent can tell it 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use it: when evidence items have newer files than their last assessment and need refreshed windowed assessments. It doesn't explicitly name alternatives or exclusions, but the 'stale' condition and 'write β€” editor role' hint provide clear context. It could be improved by explicitly saying 'use scf_trigger_window_assessment for a single window' or similar, but the context is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_remove_custom_risk_controlA
Destructive

Unlink a control from a custom risk (write β€” editor+ role). The control and risk both remain; only the mapping is removed. Unlinking clears an accepted exception's approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idYesSCF control ID to unlink (e.g., 'AST-01') β€” obtain from scf_list_custom_risk_controls
risk_codeYesCustom risk code in R-ORG-N format (e.g., 'R-ORG-1') β€” obtain from scf_list_custom_risks

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnlyHint=false and destructiveHint=true; the description goes well beyond them by clarifying that both the control and the risk survive and only the mapping is deleted, and it discloses a non-obvious collateral effect β€” unlinking clears an accepted exception's approval. The required role (editor+) is also stated, which no annotation conveys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, no filler, front-loaded with the action and its scope before the caveats. Each sentence carries distinct information (what it does, what survives, what side effect occurs).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter mutation with no output schema, the description covers the essentials: role requirement, scope of the change, and the side effect on exception approvals. It stops short of stating the success/response shape or failure modes, but nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% β€” org_id, scf_id and risk_code each carry their own description and a source tool for obtaining the value. The description adds no format, constraint, or example 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource pair ('Unlink a control from a custom risk') and immediately distinguishes the operation from the surrounding scf_add_custom_risk_control / scf_update_custom_risk_control / scf_delete_custom_risk siblings by naming exactly what is and is not removed. An agent can route to this tool without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It supplies a concrete precondition ('write β€” editor+ role'), which is real usage guidance, but never names the inverse tool (scf_add_custom_risk_control) or states when to prefer unlinking versus updating the mapping. Usage is implied rather than contrasted with alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_remove_engagement_auditorA
Destructive

Revoke an auditor's access to one engagement (destructive write β€” admin role). Returns no content on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
auditor_idYesEngagement auditor record UUID β€” obtain from scf_list_engagement_auditors
engagement_idYesAudit engagement UUID β€” obtain from scf_list_engagements

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reinforces the destructiveHint=true annotation by explicitly labeling the operation a 'destructive write' and adds genuinely new context beyond the annotations: the admin-role prerequisite and the 'Returns no content on success' outcome, which is especially valuable given there is no output schema. No contradiction exists with readOnlyHint=false or destructiveHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler. The primary action and scope are front-loaded, and the parenthetical efficiently packs destructive-write and admin-role context. The return-behavior sentence earns its place because no output schema exists to convey that information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter tool with no nested objects, complete schema documentation, and safety annotations present, the description is nearly sufficient: it covers scope, auth requirement, and return behavior. The notable omissions are idempotency behavior (does a non-assigned auditor error or no-op?) and a pointer to scf_add_engagement_auditor as the reversal path, both minor for a tool this simple.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% β€” all three parameters (org_id, auditor_id, engagement_id) have descriptions in the schema, each cross-referencing the list tool that supplies the UUID. The description adds no parameter-level detail, which is acceptable since the schema already carries the full burden and the baseline is 3 at this coverage level.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a precise verb ('Revoke') with a specific resource ('an auditor's access to one engagement') and a clear scope qualifier ('one engagement') that prevents confusion with org-wide operations. It is immediately distinguishable from the sibling pair scf_list_engagement_auditors and scf_add_engagement_auditor, even though those siblings are not named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical ('destructive write β€” admin role') implies usage context by signaling this tool requires elevated privileges and should be used only when a permanent access removal is intended. However, it never names the natural inverse alternative (scf_add_engagement_auditor) or states when not to use the tool, leaving the agent to infer the decision rule 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.

scf_remove_team_memberA
Destructive

Remove a user from a team (destructive write β€” admin role). The membership row is deleted; the audit trail keeps the history.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
team_idYesTeam UUID β€” obtain from scf_list_teams
user_idYesUser UUID β€” obtain from scf_get_team

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and readOnlyHint=false, but the description adds meaningful behavior beyond that: it specifies admin-role authorization, explains that the membership row is deleted rather than the user record, and clarifies that the audit trail preserves history. This gives the agent a clear picture of the action's blast radius and accountability.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the first names the action and key constraints, the second explains the precise effect and audit behavior. Everything included earns its place, and the most important operational warnings ('destructive write β€” admin role') are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-UUID destructive mutation, the description covers purpose, permissions, effect, and audit trail. No output schema is present, but return-value semantics are not needed to call the tool correctly. Given the large sibling list, the unambiguous naming and clear effect make this sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each UUID parameter already described via 'obtain from' pointers to list/get tools. The description does not add parameter-specific semantics, but it doesn't need to because the schema fully documents how to source values. This is the appropriate baseline for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Remove a user from a team.' It further clarifies that this removes the membership row, distinguishing it from sibling tools like scf_update_team or scf_add_team_member. The tool name and description align exactly, leaving no ambiguity about what this operation does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly signals that this is a destructive admin-only action, telling the agent when it is appropriate to invoke it. It doesn't explicitly name alternatives or exclusions, but among the sibling tools, the inverse operation is obvious from the name and the description's 'remove' language. The 'admin role' note provides useful context about who can perform this action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_resolve_document_sectionA
Destructive

Resolve one section's merge state (write β€” editor role). keep_mine/take_generated settle a conflict; retire/keep dispose of a pending retirement. The wrong pair for the state returns 409.

ParametersJSON Schema
NameRequiredDescriptionDefault
choiceYeskeep_mine / take_generated answer a conflict; retire / keep answer a pending retirement
org_idYesOrganization UUID β€” obtain from scf_list_organizations
section_idYesSection identifier from the document detail (scf_get_document). May contain slashes β€” pass it exactly as returned, unescaped.
document_idYesGenerated document UUID β€” obtain from scf_list_documents

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as destructive and non-read-only; the description complements that by adding the editor role requirement, the two state-dependent decision branches, and the 409 error behavior. It does not contradict the annotations and adds meaningful behavioral context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise, front-loaded sentences convey the action, role, the four choices grouped by state, and the error condition. Every sentence earns its place with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter mutation tool with full schema coverage and annotations, the description covers the core behavior, role, state logic, and error handling. It does not describe the response payload, but with no output schema expected, the missing return information is a minor gap rather than a critical one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with the choice parameter already explaining the conflict versus retirement pairing. The description reinforces that pairing and adds the 409 error outcome, but it does not substantially expand on what the schema already documents for parameters like org_id or document_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource pair: 'Resolve one section's merge state.' It also identifies the required role (editor) and distinguishes this from generic document edits by naming the specific choice semantics, which differentiates it clearly from siblings like scf_update_document_section.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states when to use which choice: conflict choices versus retirement choices, and warns that the wrong pair yields a 409. It does not explicitly name alternatives or state when not to use this tool, but the choice-pair guidance gives strong contextual direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_respond_to_engagement_queryA

Add a response to an auditor query (write β€” org member or assigned auditor). Posting a response moves an open query to answered. Returns the updated query with its full thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
contentYesResponse text
query_idYesQuery UUID β€” obtain from scf_list_engagement_queries
engagement_idYesAudit engagement UUID β€” obtain from scf_list_engagements

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the description doesn't need to restate that this is a write operation. The description adds valuable behavioral context: posting a response transitions the query state to answered, and the return value is the updated query with its full thread. This goes beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The core action is front-loaded, the write nature is stated, the state transition is disclosed, and the return value is specified. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write operation with four required UUID parameters and no output schema, the description covers the action, the state change, and the return value. It doesn't mention error cases or prerequisites (e.g., query must be open), but the state transition implies that. The description is complete enough for an agent to invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description adds the semantic context that content is the response text and that the query_id refers to an open query, but it doesn't add significant meaning beyond the schema's own descriptions. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Add a response'), a specific resource ('auditor query'), and the write nature of the operation. It also distinguishes itself from related query tools by noting it moves an open query to answered, which differentiates it from scf_create_engagement_query and scf_update_engagement_query_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates this is for responding to an auditor query and notes the actor scope ('org member or assigned auditor'). It doesn't explicitly state when not to use it or name alternatives, but the context of the query lifecycle is clear enough for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_revalidate_evidence_fileA

Re-run the validation engine against an evidence file (write β€” editor+ role). Checks catalog existence, content type, field coverage, freshness, storage. Returns the updated result.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
file_idYesEvidence file UUID β€” obtain from scf_list_evidence_files
evidence_idYesEvidence ID (e.g., 'ERL-IAM-001') β€” obtain from scf_list_evidence

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate readOnly=false and destructive=false. The description adds the editor+ role requirement, the list of validation checks, and that an updated result is returned. It does not fully specify whether prior results are overwritten, but the added context goes beyond what annotations already provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each carrying distinct information: the action, the role requirement, the validation scope, and the return value. The write behavior is front-loaded and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with three required parameters and no output schema, the description provides the key operational facts: authorization, validation dimensions, and the updated result. It is not fully exhaustive about error conditions or return shape, but it is adequate for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions already cover all three parameters at 100%, including how to obtain org_id, evidence_id, and file_id from sibling tools. The description adds conceptual context but does not need to repeat parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact operation ('Re-run the validation engine'), the target ('an evidence file'), and the write nature with a role requirement. It is clearly distinguishable from read-only siblings like scf_get_evidence_validation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The role restriction ('write β€” editor+ role') and the 're-run' verb imply this is the mutating counterpart to validation getters, but no explicit alternative or 'when not to use' condition is stated. An agent can infer the use case, but routing 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.

scf_review_evidence_assessmentA

Record a human decision on a file's current AI assessment (write β€” editor role). confirmed keeps the verdict; overridden needs a reason and at least one objective re-designation.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
reasonNoWhy the verdict is overridden β€” required when decision is overridden
file_idYesEvidence file UUID β€” obtain from scf_list_evidence_files
decisionYesconfirmed = AI verdict stands; overridden = you are changing it
evidence_idYesCatalog evidence ID the file belongs to, e.g. E-IAM-01
ao_overridesNoObjectives to re-designate β€” required (β‰₯1) when overriding, forbidden when confirming; unlisted objectives keep the AI's designation. 422 if the version has no per-objective answers: confirm instead

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only mark it as not read-only and not destructive; the description adds meaningful behavior: 'confirmed keeps the verdict' while 'overridden needs a reason and at least one objective re-designation,' and it states the editor role. It does not detail side effects like overwriting prior human decisions, but the core write behavior is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences front-load the primary action and then give the key conditional rule. There is no redundant restatement of parameter names or schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema already documents all parameters, required fields, and the 422 condition for missing per-objective answers. The description adds the role and decision semantics, leaving no critical gap for invoking the tool, though it does not describe the response payload.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description's mention of 'reason and at least one objective re-designation' echoes the schema's own conditional requirements without adding new syntax or format details, so no uplift is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action ('Record a human decision on a file's current AI assessment') with an explicit write/editor role. The confirmed/overridden distinction clarifies what the tool does, but it does not explicitly name or contrast sibling tools like scf_review_evidence_file, so differentiation is implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context: this is for a human editor recording a decision about an AI assessment, and it specifies which decision requires extra inputs. It does not explicitly state when not to use it or point to an alternative tool, but the context is sufficient to infer the intended use-case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_review_evidence_fileA

Approve, reject or request revision on one uploaded file (write β€” editor). Rejecting raises a deficiency on each in-scope control it supports. 410 where per-window review is on.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
file_idYesEvidence file UUID β€” obtain from scf_list_evidence_files
evidence_idYesCatalog evidence ID the file belongs to, e.g. E-IAM-01
review_notesNoReviewer notes
review_statusYesReview decision

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real behavior beyond the thin annotations (readOnlyHint=false, destructiveHint=false): rejection cascades into a deficiency on each in-scope control, and the call fails with 410 when per-window review is enabled. It omits whether a decision can be reversed or re-reviewed later, but the disclosed side effects and error condition are substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences with the action, the write/role marker, the consequence of rejection and the blocking condition front-loaded; no filler or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-destructive mutation with no output schema and full schema coverage, the description covers consequence (deficiency creation), authorization level and the failure condition, which is most of what an agent needs. Missing only reversibility/return-value expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so org_id, file_id, evidence_id, review_notes and the review_status enum are all documented in the schema. The description adds no format or constraint detail beyond what is already there, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific verbs (approve, reject, request revision) and a bounded resource ("one uploaded file"), which separates it from bulk/assessment-level siblings like scf_review_evidence_assessment and scf_bulk_assess_evidence. It never names those siblings explicitly, so an agent still has to infer the boundary from scope wording alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the "(write β€” editor)" tag signals required role, and "410 where per-window review is on" flags a precondition/failure mode. There is no explicit when-to-use-this-vs-alternative guidance (e.g. when to use this rather than scf_review_evidence_assessment or scf_revalidate_evidence_file).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_review_window_assessmentA

Set a windowed assessment's acceptance review (write β€” editor): approved, rejected (raises a deficiency per in-scope control), needs_revision, or not_reviewed to revoke.

ParametersJSON Schema
NameRequiredDescriptionDefault
ewa_idYesWindow assessment UUID β€” obtain from scf_list_window_assessments
org_idYesOrganization UUID β€” obtain from scf_list_organizations
review_notesNoReviewer notes
review_statusYesReview state to set; not_reviewed revokes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations only stating readOnlyHint=false and destructiveHint=false, the description adds real behavioral detail: it discloses the editor permission requirement and two non-obvious side effects β€” that 'rejected' raises a deficiency per in-scope control and that 'not_reviewed' revokes the review. What is missing is any note on reversibility or downstream effect of 'approved'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the action, the permission level, and the accepted values. The parenthetical clauses are compact and load-bearing rather than filler, though the enumeration of all four statuses makes it slightly crowded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter mutation tool with no output schema and full schema coverage, this is largely complete: permissions, side effects, and the revoke path are covered. The one shortfall is that it does not help the agent choose between this tool and its verdict-named sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description earns above baseline by explaining the operational consequence of two enum values ('rejected' raises a deficiency per in-scope control; 'not_reviewed' revokes) that the schema's terse enum description does not fully convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Set a windowed assessment's acceptance review') and enumerates the exact values it can set. It is clear what the tool does, but it does not differentiate itself from the closely-named sibling scf_review_window_assessment_verdict, leaving the agent to infer which review entry point to use.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It signals the required privilege level ('write β€” editor'), which is useful context for whether the caller can use it, but there is no explicit when-to-use guidance and no reference to alternatives such as scf_review_window_assessment_verdict or scf_bulk_assess_windows. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_review_window_assessment_verdictA

Confirm or override a window's current AI verdict (write β€” editor role). overridden needs a reason and β‰₯1 objective re-designation. One decision per version; 422 without objectives: confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
reasonNoWhy the verdict is overridden β€” required when decision is overridden
decisionYesconfirmed = AI verdict stands; overridden = you are changing it
ao_overridesNoObjectives to re-designate β€” required (β‰₯1) when overriding, forbidden when confirming; unlisted objectives keep the AI's designation. 422 if the version has no per-objective answers: confirm instead
assessment_idYesWindow assessment UUID β€” obtain from scf_get_assessment_review_queue (window_assessment_id) or scf_list_window_assessments

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read/write and destructive nature (readOnlyHint false, destructiveHint false). The description adds behavioral context: 'One decision per version' and the 422 error when overriding without objectives. It also implies a write operation with 'write β€” editor role', which is consistent. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action, and includes essential conditional constraints without fluff. Every phrase adds value: the role, the required conditions, and the error case.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the decision logic, the error condition, and the role requirement. The schema provides details on obtaining org_id and assessment_id, and the conditional parameter requirements. No output schema exists, so return format isn't specified, but the tool is complete enough for an agent to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description reinforces the conditional requirement for reason and ao_overrides when decision is 'overridden', and notes the 422 condition. It does not add new parameter details beyond the schema, but it does help clarify the interplay between decision and ao_overrides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Confirm or override' and the resource 'a window's current AI verdict'. It also specifies the role ('write β€” editor role'), making the intent unambiguous. While it doesn't name sibling tools, the purpose is specific enough that an agent can distinguish it from review tools that only read or review evidence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit guidance on when to use 'overridden' vs 'confirmed' β€” 'overridden needs a reason and β‰₯1 objective re-designation' β€” and the 422 error condition 'without objectives: confirm'. This effectively tells the agent how to decide. It does not name alternative tools, but the context of write vs read is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_rollback_catalog_reconciliationA
Destructive

Roll an applied reconciliation run back (destructive write β€” admin role). Asynchronous, and requires the typed confirmation string the run detail states.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
run_idYesReconciliation run UUID β€” obtain from scf_list_reconciliation_runs or scf_preview_catalog_reconciliation
confirm_textYesThe exact confirmation phrase the platform requires for this rollback

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructiveHint true, readOnlyHint false), the description explicitly states 'destructive write β€” admin role' and 'Asynchronous.' It also discloses the confirmation-string requirement, adding meaningful operational context an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences deliver the core action, safety profile, role requirement, async behavior, and the critical confirmation-string prerequisite. No filler, and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, async, admin-gated tool with three required parameters, the description covers the operation, role, async nature, and confirmation mechanism. The schema supplies the parameter sourcing details, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all three parameters and their sources, so the baseline is 3. The description adds value by explaining that confirm_text must be the typed confirmation string 'the run detail states' and that run_id refers to an applied run, giving extra semantic meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Roll an applied reconciliation run back.' It clearly distinguishes this from sibling tools like apply or cancel, and the parenthetical '(destructive write β€” admin role)' adds scope without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clarifies this is for an 'applied' reconciliation run, which signals when to use it rather than cancel or preview. It also mentions the typed confirmation requirement. It doesn't explicitly name alternatives or exclusions, but the context is clear enough for an agent to route appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_rotate_webhook_secretA

Rotate the HMAC signing secret for a webhook endpoint (write β€” admin role). The old secret is invalidated immediately. Returns the new plaintext secret exactly once.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
endpoint_idYesWebhook endpoint UUID β€” obtain from scf_list_webhooks

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses two critical behaviors beyond what annotations convey: the old secret is invalidated immediately, and the new plaintext secret is returned exactly once. These are material consequences an agent must know before invoking the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences front-load the verb and resource, then state the side effect and return behavior. There is no filler or redundant restatement of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation with no output schema, the description captures purpose, admin requirement, immediate invalidation side effect, and the once-only plaintext return contract. Nothing operationally essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters already have descriptions showing where to obtain values. The description adds no parameter-level 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Rotate'), resource ('HMAC signing secret for a webhook endpoint'), and access level ('admin role'). It is clearly distinguishable from sibling webhook tools because rotation is uniquely named and described.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The designation '(write β€” admin role)' gives clear context about authorization and operation type. It does not explicitly name alternatives or when-not conditions, but among siblings no other tool performs rotation, so the intended use is evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_scope_frameworkA

Bulk-scope every control mapped to a framework into the organization (write β€” editor+ role). Creates a scoped-control entry for each control in the framework.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
framework_idYesFramework slug to scope (e.g., 'nist-800-53-r5') β€” obtain from scf_list_frameworks

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a mutating (readOnlyHint=false), non-destructive operation. The description adds the editor+ role requirement and clarifies the effect is creating scoped-control entries, but it does not disclose idempotency, duplicate handling, or whether existing scoped controls are affected. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tight sentences: one states the bulk-scope action plus role, the other states the outcome. Every word earns its place, and the key behavioral detail is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter write tool with full schema and annotations, the description provides the essential context: what gets scoped, what entries are created, and who is allowed to run it. It doesn't explain re-run behavior or output, but that is a minor gap since there is no output schema to reconcile.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters already have descriptive text ('Organization UUID' and 'Framework slug to scope'). The tool description adds no parameter-level detail beyond general context, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Bulk-scope'), names the resource ('every control mapped to a framework'), and states the concrete outcome ('Creates a scoped-control entry for each control'). This clearly differentiates it from sibling tools like scf_update_scoped_control or scf_list_scoped_controls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: use this when you want to scope all controls in a framework into the organization at once, and it notes the editor+ permission requirement. It doesn't explicitly name alternatives or say when not to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_set_control_basis_overrideA

Override one control's derived obligation basis (write β€” ADMIN role): mcr or dsr with a reason, or null to clear and derive it from its frameworks again. 404 if the control has no scope record.

ParametersJSON Schema
NameRequiredDescriptionDefault
basisYes'mcr' or 'dsr' to override; null clears the override (and its reason) so the basis is derived from the org's classified frameworks again
org_idYesOrganization UUID β€” obtain from scf_list_organizations
reasonNoWhy the derived basis is wrong for this control (max 2000 characters) β€” required when basis is set
scf_idYesSCF control identifier in DOMAIN-NN format β€” obtain from scf_list_scoped_controls

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply readOnlyHint=false and destructiveHint=false, so the description must carry behavior, and it does: ADMIN authorization is required, null also wipes the stored reason, and a 404 is returned when the control lacks a scope record. No statement of reversibility or rate limits, but the added context is substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence carries the verb, the write/admin qualifier, the value domain, the clear behavior, and the 404 condition. Dense and efficient, with only mild parenthetical compression.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-param mutation tool with no output schema, the description covers authorization, the override/clear semantics, and the key error case, which is enough for correct invocation. It does not describe the response body, though one is not required by the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents each parameter, including basis enum values and the reason requirement. The description echoes the mcr/dsr/null choice but 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (override) and a precisely scoped resource: one control's derived obligation basis. It notes the effect of an override (mcr or dsr) and the clearing behavior, letting an agent distinguish it from sibling writers like scf_set_framework_basis and scf_set_scope_override.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gates the tool with 'write β€” ADMIN role' and explains the two operating modes (set an override vs. pass null to clear and re-derive). It does not name the closest alternatives, so it stops just short of the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_set_control_materialityA

Set whether one control is material (write β€” ADMIN's own key; a platform key gets 403): true/false with a reason, or null for the catalogue default (material at weighting 10).

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
reasonNoWhy (max 2000 characters). Required when material is true or false, and when a null clear makes a control weighted below 10 not material (400 otherwise)
scf_idYesSCF control identifier in DOMAIN-NN format β€” obtain from scf_list_scoped_controls
materialYestrue or false overrides the catalogue default; null clears the override. The admin is recorded as the approver: deciding a control is not material lets it be excluded or marked not_applicable without one

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations only providing readOnlyHint=false and destructiveHint=false, the description adds rich behavioral detail: it's a write, requires ADMIN's own key (else 403), records the admin as approver, and clarifies that deciding a control is not material lets it be excluded or marked not_applicable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense but well-structured sentence that front-loads the write action and key requirement, then explains the parameter values, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and full schema coverage, the description covers the materiality decision, the reason requirement for certain cases, and the admin-key restriction. It could mention the reason length limit or the 400 error conditions, but is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all four parameters in detail. The description repeats the material true/false/null semantics but adds no new syntax or format information beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (set) and a specific resource (control materiality), and explains exactly what material means (true/false with reason, null for catalogue default). An agent can distinguish this from siblings like scf_set_control_basis_override or scf_set_target_maturity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear condition for the null case ('null for the catalogue default (material at weighting 10)') and notes the write requires an admin key vs a platform key. It doesn't explicitly route to an alternative tool, but the context is very clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_set_control_procedureA

Link one control to its signed-off procedure document, or null to unlink (write β€” editor+). The document must be this org's procedure, approved or published when linked (400 otherwise).

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idYesSCF control identifier in DOMAIN-NN format β€” obtain from scf_list_scoped_controls
document_idYesProcedure document UUID β€” obtain from scf_list_documents; null unlinks. A later edit sends the document back to review; the link stays and scf_list_scoped_controls shows procedure_document_status

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare non-read-only/non-destructive; the description adds material context beyond them: required permission level (editor+), a concrete failure condition (400 on invalid document state), the null-unlink semantics, and the downstream side effect that a later edit returns the document to review while the link and procedure_document_status persist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and its unlink variant, then the constraint. No filler and nothing repeated from structured fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter mutation with full schema coverage and no output schema, the description covers the essentials an agent needs: permission requirement, validation failure mode, null behavior, and post-condition side effect. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds value: it clarifies document_id's dual role (a UUID links, null unlinks) and the approval/published constraint on that ID, plus reinforcing the relationship between scf_id and document_id that the schema only hints at.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (link/set) and resource (a control's procedure document), and explicitly covers both directions: link with an ID, unlink with null. An agent can distinguish this setter from sibling setters like scf_set_control_materiality or scf_set_control_basis_override without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains clearly when the operation applies and the precondition that gates success (document must be the org's procedure, approved or published, else 400). It does not name a competing tool or state when not to use this one, so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_set_framework_basisA

Record why a scoped framework is in scope (write β€” ADMIN role): basis mcr|dsr, obligation_type and obligation_source. Replaces all three; null clears. Only an active (scoped) framework, else 404.

ParametersJSON Schema
NameRequiredDescriptionDefault
basisYes'mcr' (mandatory compliance requirement) or 'dsr' (discretionary security requirement); null leaves it unclassified. Reclassifying MCR to DSR changes which exclusions need an approver, hence admin-only
org_idYesOrganization UUID β€” obtain from scf_list_organizations
framework_idYesFramework slug of a framework the org has scoped β€” obtain from scf_get_framework_scope_summary
obligation_typeNoWhere the obligation comes from: statutory, regulatory, contractual or discretionary; omitted or null clears it
obligation_sourceNoThe law, regulation or contract behind it (max 2000 characters); omitted, null or blank clears it

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses the ADMIN role requirement, the replace-all semantics ('Replaces all three'), the null-clearing behavior, and the 404 precondition for inactive frameworks. These are the exact behavioral traits an agent needs before calling a setter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with the action and role, then the field payload, then the replacement and error semantics. Every clause carries information and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with no output schema and rich per-parameter schema documentation, the description covers purpose, authorization, preconditions, replacement/clearing semantics, and the failure mode. 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage the baseline is 3, but the description adds set-level semantics not captured per-parameter: all three values are replaced together and null clears them. The rest (mcr/dsr meanings, obligation_type/source) largely restates the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Record why a scoped framework is in scope') and names the fields involved (basis, obligation_type, obligation_source). It implicitly distinguishes itself from scoping tools by requiring an already-active framework, but it never names a sibling to route against explicitly, so it stops short of the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context for use: this is a write operation requiring ADMIN role, and it only works on an active (scoped) framework (else 404). That is enough to know when it is applicable, but there is no explicit comparison or exclusion against adjacent tools like scf_set_scope_override or scf_set_control_basis_override.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_set_reconciliation_actionsA

Record decisions for a reconciliation run (write β€” admin role). REPLACES the run's planned actions, so send the complete list. Each deprecated entity gets migrate, retain or retire_only.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
run_idYesReconciliation run UUID β€” obtain from scf_list_reconciliation_runs or scf_preview_catalog_reconciliation
actionsYesThe complete set of planned actions for this run β€” partial lists overwrite the rest
confirmed_framework_idsNoOn a first reconciliation, the confirmed framework list this organization is scoping to

TDQS

A3.6/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description transparently warns that the tool REPLACES the run's planned actions and that partial lists overwrite the rest. However, this contradicts the annotation destructiveHint=false, because overwriting an existing list is a destructive operation. The mixed signal can make an agent underestimate the side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, no filler. The first sentence states the operation and authorization, and the second front-loads the critical replacement behavior and the action options.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core write behavior, authorization, side effects, and decision values, which is sufficient for a tool with a fully documented input schema. It does not mention how this step relates to preview/apply or what the response returns, but those are minor given the sibling names and no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters and their meanings. The description adds useful emphasis about sending the complete list and the available action values, but it does not meaningfully expand beyond the structured parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific action ('Record decisions'), the resource ('reconciliation run'), and marks it as a write with an admin role. It also states the supported decision values, clearly distinguishing this tool from the many read-only reconciliation siblings like preview, get, and apply.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: this is the write step for recording reconciliation decisions, requires admin role, and must receive the complete list because prior actions are replaced. It does not explicitly name alternatives or exclude later phases like apply, but the usage context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_set_scope_overrideA

Force one control in or out of scope (write β€” editor+). 'include'/'exclude' pin it; 'inherit' clears it. Excluding an MCR or material control needs an admin key and a reason (editors 403).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes'include' pins the control in scope, 'exclude' pins it out, 'inherit' clears the override AND discards the recorded rationale (it stays in the audit trail)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
reasonNoWhy this control is being overridden β€” recorded in the audit trail (max 2000 characters). Required for 'exclude'. The admin making an MCR or material exclusion is recorded as its approver; there is no approver parameter
scf_idYesSCF control identifier in DOMAIN-NN format β€” obtain from scf_list_scoped_controls

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and destructiveHint=false. The description adds the write-permission requirement ('editor+'), the admin-key requirement for MCR/material exclusions, and the audit-trail behavior of 'inherit'. It doesn't mention reversibility beyond the inherit behavior, but it meaningfully adds context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, each earning its place by covering purpose, action semantics, and permission constraints with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the mutation, permission gates, and audit behavior despite no output schema. Doesn't explain what happens on 403 or confirm whether the override persists across framework changes, but it's complete enough for a scoped-write tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents action, org_id, scf_id, and reason. The description adds that 'inherit' clears the override but retains audit rationale, but this is largely repeated in the action enum description. Baseline 3 given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('force one control in or out of scope') and names the three action values that drive it. It's clearly distinguishable from siblings like scf_update_scoped_control or scf_bulk_unscope_framework because it operates on a single control's scope override.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the semantics of each action and the prerequisites: 'Excluding an MCR or material control needs an admin key and a reason (editors 403)'. It doesn't explicitly contrast against scf_bulk_unscope_framework or scf_set_control_basis_override, but the narrow single-control scope is implied by 'one control'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_set_target_maturityA

Override one control's target maturity (write β€” ADMIN role): a level L0–L5 with a reason, or null to inherit its domain's target again (domain targets: scf_update_org_settings).

ParametersJSON Schema
NameRequiredDescriptionDefault
levelYesTarget CMM level L0–L5 for this control; null clears the override (and its reason) and the control inherits its domain target
org_idYesOrganization UUID β€” obtain from scf_list_organizations
reasonNoWhy this control departs from its domain target (max 2000 characters) β€” required when level is set
scf_idYesSCF control identifier in DOMAIN-NN format β€” obtain from scf_list_scoped_controls

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnlyHint=false and destructiveHint=false; the description adds real context the annotations lack β€” that this is a write requiring ADMIN role, and that null clears the override and its reason, reverting to inherited behavior. It does not cover response shape or audit implications, but the key behavioral facts are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the write/admin qualifier front-loaded and the null-revert behavior in a trailing parenthetical. No filler, though the parenthetical alternative-tool pointer slightly crowds the core statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-param write with full schema coverage and no output schema, the description supplies the missing pieces: auth requirement, inherit-vs-override semantics, and where domain targets live. Nothing critical is absent, though the interaction between reason and null (reason is cleared) is only implied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents level, reason, org_id, and scf_id in full detail. The description restates the level range and null semantics, adding emphasis but no information beyond the schema β€” the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Override one control's target maturity'), scopes it to a single control, and names the sibling that handles domain-level targets (scf_update_org_settings). An agent can distinguish it from scf_set_control_materiality or scf_set_control_basis_override without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it (override a single control) and describes the revert path (null to inherit the domain target again), plus the ADMIN role prerequisite. It points at scf_update_org_settings for domain-level targets but stops short of an explicit 'use X instead when...' routing statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_take_posture_snapshotA

Take this month's posture snapshot now (write β€” editor). The schedule takes one on the 1st; a month has one snapshot, so a second is refused (409).

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only give readOnlyHint=false and destructiveHint=false. The description adds real behavioral context beyond that: it is a write requiring editor permission, a month contains exactly one snapshot, and a redundant call is refused with HTTP 409. Those are the facts an agent needs to avoid a failed or duplicated call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the action and its permission level are front-loaded, followed by the scheduling rule and the 409 consequence. No filler, and every clause carries operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter action tool with no output schema, the description covers the essential call-time facts: write semantics, required role, the one-per-month uniqueness rule, and the failure code. 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One parameter (org_id) with 100% schema description coverage including its UUID format and a pointer to scf_list_organizations. The description contributes no additional parameter meaning, so the baseline of 3 applies since the schema already does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: 'Take this month's posture snapshot now.' It is clearly distinguished from the sibling read tools scf_list_posture_snapshots and scf_get_posture_snapshot, which fetch rather than create. An agent can tell immediately this is the on-demand creation action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It conveys when to use it (take it now rather than waiting) and names the alternative path β€” 'The schedule takes one on the 1st' β€” plus the blocking condition that a month already has a snapshot. There is no explicit 'do not use this when' clause, but the practical trigger is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_transition_documentA

Move a document through its lifecycle β€” draft to review, review to approved, approved to published (write β€” approving and publishing need admin). Valid targets are enforced by the platform.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
reasonNoFree-text justification recorded on the transition
to_statusYesTarget lifecycle status (e.g. 'in_review', 'approved', 'published')
document_idYesGenerated document UUID β€” obtain from scf_list_documents

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate readOnlyHint=false and destructiveHint=false, but the description goes beyond them by disclosing the admin permission needed for approving/publishing and by stating that valid targets are platform-enforced. It also signals that this is a write operation, consistent with the annotations. No contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the verb and resource appear first, followed by concrete transition examples and the critical admin caveat. The second sentence about platform enforcement is short and useful. No filler is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a state-transition operation with 4 simple parameters, the description supplies enough context: transition path, admin permission, and platform validation. It does not specify the response format, but no output schema is present and the behavior itself is straightforward. The coverage is solid without being exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents org_id, document_id, reason, and to_status. The description's lifecycle examples add a little meaning to to_status by showing valid transitions, but most parameter semantics are already covered by the schema. This matches the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Move a document through its lifecycle.' It then gives concrete transition examples (draft to review, review to approved, approved to published) that make clear this is about status transitions, not content editing. This clearly distinguishes it from sibling document tools like scf_update_document_section and scf_update_document_settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when this tool is appropriate: whenever a document needs to advance through lifecycle states. The admin requirement for approving and publishing adds an important condition for use. It does not explicitly name alternative tools or state when not to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_trigger_evidence_assessmentA

Queue an AI assessment of a single evidence file (write β€” editor+ role, async). Returns a pending record; poll scf_get_evidence_assessment until status is sufficient/partial/insufficient.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
file_idYesEvidence file UUID β€” obtain from scf_list_evidence_files
evidence_idYesEvidence ID (e.g., 'ERL-IAM-001') β€” obtain from scf_list_evidence
assessment_sourceNoOrigin tag for the request (default on_demand)on_demand

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate readOnlyHint=false and destructiveHint=false; the description carries the real behavioral burden and does it well by disclosing that this is a write operation, requires editor+ role, is asynchronous, returns a pending record, and needs polling until a final status. It adds substantial value beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences with no filler. The primary action, access role, async nature, and follow-up polling instruction are all front-loaded and expressed in the most compact useful form. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and minimal annotations, the description supplies the missing context: return type ('pending record'), terminal statuses to wait for, and the explicit polling path. It is sufficient for an agent to invoke the tool and handle the async lifecycle correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and every parameter already has a meaningful description, including where to obtain IDs and the default for assessment_source. The description does not need to add parameter-level detail, so baseline 3 is appropriate; it neither detracts nor compensates further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb and resource: 'Queue an AI assessment of a single evidence file.' It clearly distinguishes from bulk operations by emphasizing 'single', and names the companion polling tool scf_get_evidence_assessment. The write/async nature is explicit, leaving no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear operational guidance: it is a write, requires editor+ role, is async, and tells the agent to poll scf_get_evidence_assessment until a terminal status appears. It stops short of explicitly contrasting with bulk alternatives like scf_bulk_assess_evidence, but the 'single evidence file' constraint and polling follow-up are enough for correct usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_trigger_vendor_assessmentA

Queue an AI vendor security assessment (write β€” editor+ role, async, HTTP 202). Replaces the deprecated DPSIA trigger. Returns assessment_id + job_id; poll scf_get_vendor_assessment_status.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
data_roleNoGDPR data role (default 'Processor')Processor
vendor_idYesVendor UUID β€” obtain from scf_list_vendors
services_usedNoDescription of services the vendor provides, 1–2000 chars (auto-derived from the vendor record if omitted)
assessment_typeNoAssessment type: 'initial', 'annual', or 'adhoc' (default 'initial')initial
additional_contextNoFree-text context, scope notes, or specific concerns to feed the assessor (max 5000 chars)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses the editor+ role requirement, asynchronous behavior, HTTP 202 semantics, and the response shape (assessment_id + job_id). This is exactly the behavioral context an agent needs that structured fields do not convey. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: core purpose with key traits, legacy replacement note, and return value with the follow-up call. The most decision-relevant facts (verb, resource, async, role) are front-loaded with zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description covers the return contract (assessment_id + job_id) and the required next step (poll status). Role, async behavior, and response semantics are all stated, and all 6 parameters are fully documented in the schema. Nothing an agent needs to call this safely is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-level detail, but none is needed: each parameter has an explanatory description with provenance ('obtain from scf_list_organizations'), defaults, and max lengths already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Queue') plus a distinct resource ('AI vendor security assessment') and adds behavioral qualifiers (write, async, HTTP 202). It distinguishes itself from siblings such as scf_trigger_vendor_research, scf_trigger_evidence_assessment, and scf_trigger_window_assessment by explicitly scoping to vendor assessments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: it replaces the deprecated DPSIA trigger and directs the agent to poll scf_get_vendor_assessment_status afterward. It lacks explicit exclusions or named alternatives for when NOT to use it versus bulk/research sibling tools, but the context provided is sufficient for correct invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_trigger_vendor_researchA

Queue AI security research for a vendor (write β€” editor+ role, async). Checks HIBP breach data, NVD vulnerabilities, and public posture. Returns a task ID; poll scf_get_vendor_research.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
vendor_idYesVendor UUID β€” obtain from scf_list_vendors
domain_overrideNoOverride the vendor's website domain used for research lookup (e.g., 'example.com')

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate readOnlyHint=false and destructiveHint=false; the description adds meaningful behavior: it is write-scoped to editor+ role, runs async, checks HIBP/NVD/public posture, and returns a task ID rather than results. This exceeds annotation coverage and sets correct expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, with the action, role, and async nature front-loaded; the rest is a compact list of data sources and return behavior. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-output-schema trigger tool, the description tells the agent exactly what will happen, what will be returned, and where to poll for results. It might be improved by noting duration or error handling, but the essential invocation and follow-up flow are complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema already describes all three parameters at 100% coverage, including how to obtain org_id and vendor_id and the meaning of domain_override. The description adds no extra parameter-level detail, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states a specific verb ('Queue'), a resource ('AI security research for a vendor'), and key execution traits ('write β€” editor+ role, async'). It also names the data sources and distinguishes itself from the retrieval sibling by saying to poll scf_get_vendor_research.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: use this to kick off asynchronous vendor research, and it points to scf_get_vendor_research for the follow-up read. It does not enumerate when-not-to-use scenarios or alternatives like scf_trigger_vendor_assessment, so it stops short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_trigger_window_assessmentA

Queue a windowed AI assessment that scores every file in the evidence item's frequency window as one portfolio (write β€” editor+ role, async). Returns 422 if tracking or frequency is missing.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
evidence_idYesEvidence ID (e.g., 'E-IAM-01'). Tracking row with a frequency must exist β€” set via scf_update_evidence first
assessment_sourceNoOrigin tag for the request (default on_demand)on_demand

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses it is a write operation requiring editor+ role, is asynchronous, and returns 422 when prerequisites are missing. Annotations only provide readOnlyHint=false and destructiveHint=false, so the description adds meaningful behavioral context without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence packs operation, scope, role, async behavior, and error condition with no filler. Key differentiator ('windowed', 'one portfolio') is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers role, async behavior, prerequisite error, and scope; the input schema fills parameter details. It does not state the successful return payload (likely a queued assessment ID), but sibling get/list tools partially cover the follow-up, so this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and parameter descriptions already supply source (org_id from scf_list_organizations), prerequisites (evidence_id frequency tracking), and default for assessment_source. The tool description adds portfolio context but does not change parameter interpretation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description names a specific operation ('Queue'), a distinct resource type ('windowed AI assessment'), and defines its scope ('scores every file in the evidence item's frequency window as one portfolio'). This differentiates it from sibling single-file triggers such as scf_trigger_evidence_assessment and from retrieval tools like scf_get_window_assessment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the conditions that must hold ('tracking or frequency must exist', evidence_id parameter references scf_update_evidence prerequisite) and notes async execution. It does not explicitly name alternative tools or say when not to use it, but 'windowed' and 'as one portfolio' imply the selection criterion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_capability_testA

Correct a capability test (write β€” editor). Only passed fields change; none can be cleared. findings sent here are added. The result must still agree with the findings.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew title
org_idYesOrganization UUID β€” obtain from scf_list_organizations
resultNoResult: passed, passed_with_findings, failed. Checked against recorded findings (cancelled excluded) plus any sent here; to correct passed to failed, send the result and a finding together
outcomeNoWhat happened, and what was learned
test_idYesCapability test UUID β€” obtain from scf_list_capability_tests
findingsNoFindings to add with this correction. Existing findings are managed as deficiencies
scenarioNoWhat was tested, and how
test_typeNoKind of test: incident_response, continuity, other
tested_onNoDay the test was run (YYYY-MM-DD); not in the future

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so safety is covered by structure. The description adds genuinely non-obvious behavior beyond that: partial-update semantics ('only passed fields change'), no clearing, and append semantics for findings, plus the cross-field rule that result must agree with findings. A 4 rather than 5 because it omits the '422/404' validation feedback that the schema itself carries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three terse sentences, each carrying a distinct rule (write mode, partial update, findings append, result/findings consistency) with zero padding and the operation type front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the mutation semantics that an agent cannot infer from the schema alone. Given no output schema and 100% schema coverage, no return-value explanation is needed, and the only minor gap is the unstated permission/auth requirement behind 'editor'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema itself documents every field in depth (including the result/findings coupling and scf_id scope rules). The description adds only the partial-update and append semantics, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb 'Correct' and resource 'capability test', with an explicit write/editor hint. It distinguishes itself from the sibling scf_create_capability_test in verb, though it doesn't spell out the alternative the way a 5 would.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this instead of scf_create_capability_test, scf_get_capability_test, or scf_add_capability_test_finding. The parenthetical '(write β€” editor)' hints at permission but is not a usage condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_commentA

Edit a comment you authored (write β€” author only). Replaces the body and, if given, the mentions; the platform keeps the edit history.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesNew comment body
mentionsNoUser UUIDs to notify
comment_idYesComment UUID β€” obtain from scf_list_comments

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=false and destructiveHint=false, the description adds meaningful behavior beyond annotations: it's a write operation, restricted to the author, it replaces the body and optional mentions, and the platform retains edit history. These details help the agent understand side effects and authorization requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the primary purpose, followed by concise behavioral details. No redundant words or repetition of schema information. Every clause contributes essential guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple update operation with 3 parameters and no output schema, the description covers the core action, authorization constraint, and behavioral side effects. It doesn't mention return values, but that is typically not essential for invoking an update tool. The preconditions (existing comment, author ownership) are stated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, but the description adds value by clarifying that content replaces the body and that mentions are optional and, when provided, replace the existing mentions. The schema merely lists 'New comment body' and 'User UUIDs to notify'; the description clarifies the replacement semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description starts with 'Edit a comment you authored' β€” a specific verb, resource, and scope. It clearly differentiates from siblings scf_create_comment and scf_delete_comment by indicating it modifies an existing comment authored by the caller. The mention of 'replaces the body and, if given, the mentions' further specifies the action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context that this tool is for editing an existing comment the user authored, which implies when to use it. It does not explicitly contrast with scf_create_comment or scf_delete_comment, but the 'author only' constraint is an important usage prerequisite. No explicit alternatives are named, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_compensating_controlA

Update a vendor compensating control (write β€” editor role). Only passed fields change: gap description, control text, effectiveness rating, risk-reduction notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
cc_idYesCompensating control UUID β€” obtain from scf_list_compensating_controls
org_idYesOrganization UUID β€” obtain from scf_list_organizations
vendor_idYesVendor UUID β€” obtain from scf_list_vendors
gap_descriptionNoThe gap the control offsets
compensating_controlNoThe control that offsets the gap
effectiveness_ratingNoEffectiveness (default partial)
risk_reduction_notesNoHow much residual risk this removes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=false and destructiveHint=falseics. The description adds valuable behavioral context by stating the editor-role requirement, the partial-update behavior ('Only passed fields change'), and explicitly listing the updatable fields (gap description, control text, effectiveness rating, risk-reduction notes). This goes beyond the annotations and schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is a single sentence with no fluff. The core action and the most important behavioral nuance (partial update) are front-loaded, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an update tool with 7 parameters and no output schema, the description plus the fully documented schema cover all essentials: required IDs are specified and sourced in the schema, the update behavior is clear, and the role requirement is stated. Nothing needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter already documented in the schema, including how to obtain the required IDs from list tools. The description's mention of 'gap description, control text, effectiveness rating, risk-reduction notes' loosely maps to schema properties but does not add significant semantic detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with 'Update a vendor compensating control', a specific verb and resource that clearly distinguishes it from the sibling create/delete/list tools. The parenthetical '(write β€” editor role)' reinforces that this is a mutating operation, leaving no ambiguity about its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states 'Only passed fields change', which clarifies partial-update semantics and tells the agent which fields are updatable. It does not explicitly name alternatives like scf_create_compensating_control or scf_delete_compensating_control, but the tool name and the sibling set make the usage context obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_custom_riskA

Update a custom risk definition's metadata β€” title, description, category (write β€” editor+ role). Only provided fields are applied.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew risk title (max 100 chars)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
risk_codeYesCustom risk code in R-ORG-N format (e.g., 'R-ORG-1') β€” obtain from scf_list_custom_risks
descriptionNoNew risk description
category_nameNoNew category label
category_colorNoNew hex color for the category badge

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only set readOnlyHint=false and destructiveHint=false; the description adds meaningful behavioral context by stating this is a metadata-only update, requires an editor+ role, and applies only provided fields. This goes beyond the structured annotations and gives the agent clear expectations of side effects and permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence with no filler. The key action, target, permission, and partial-update behavior are all included and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, permissions, and partial-update behavior, which is sufficient for a simple metadata update with 6 parameters documented in the schema. It does not describe the return value, but no output schema exists and the effect is clearly stated, so the gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter semantics are already fully documented in the schema. The description adds no per-parameter details beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Update'), a specific resource ('custom risk definition's metadata'), and lists the exact metadata fields (title, description, category). It clearly distinguishes from sibling tools like scf_create_custom_risk and scf_delete_custom_risk.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its usage by being an update operation and notes the partial-update behavior ('Only provided fields are applied'), which is useful. However, it does not explicitly state when to use this versus scf_create_custom_risk or scf_delete_custom_risk, nor any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_custom_risk_controlA

Set or clear the standard's document on a custom risk's control link (write β€” editor). A changed document clears an accepted exception's approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idYesSCF control ID of an existing link β€” obtain from scf_list_custom_risk_controls
risk_codeYesCustom risk code in R-ORG-N format β€” obtain from scf_list_custom_risks
document_idYesOrganisation document whose standard this risk is an exception against (404 if not this org's), or null to clear. Required: the platform refuses a call without it (422)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide readOnlyHint=false and destructiveHint=false; the description adds real behavioral value by disclosing the editor-level auth requirement and the non-obvious side effect that changing the document clears an accepted exception's approval. It stops short of describing the return or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler; the core action is front-loaded and the consequential side effect follows immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-param write tool with no output schema and fully documented parameters, the description covers purpose, privilege, and the key side effect. Only the response/confirmation behavior is unaddressed, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter (including the nullable document_id, its 404/422 behavior, and the source tools for org_id/scf_id/risk_code) is already documented in the schema. The description adds nothing 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair (set/clear) and precise resource (the standard's document on a custom risk's control link), which cleanly distinguishes it from siblings scf_add_custom_risk_control and scf_remove_custom_risk_control. An agent can tell what this does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The '(write β€” editor)' tag signals the required privilege level and the write nature, but there is no explicit when-to-use vs when-not, nor any named alternative. Usage is implied rather than guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_deficiencyA

Update a deficiency (write β€” editor). Only passed fields change. Completing needs a retest_note. There is no delete: set status cancelled instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew title (cannot be cleared)
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoStatus: open, in_progress, completed, cancelled (cannot be cleared). Moving to completed needs retest_note (422 otherwise). Restoring a cancelled capability-test finding is refused while that test is recorded as passed
due_dateNoDue date (YYYY-MM-DD), or null to clear
priorityNoPriority: critical, high, medium, low (cannot be cleared)
owner_nameNoFree-text owner, or null to clear
root_causeNoWhy it arose; null or blank clears it
descriptionNoNew description, or null to clear
retest_noteNoWhat was retested and the result. Required to complete. Ignored when reopening: a reopened deficiency starts without one
deficiency_idYesDeficiency UUID β€” obtain from scf_list_deficiencies
owner_user_idNoOwner user (must be an org member, 404 otherwise), or null to clear

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the bar is lowered, but the description still adds real behavioral context: partial-update semantics, the retest_note requirement for completion, and the no-delete rule. It does not mention the status-restore refusal covered in the schema, but the schema carries that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: what it is, how partial updates behave, and the no-delete alternative. Front-loaded with the core action and the write/editor warning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation tool with a rich schema, the description covers the most consequential behaviors an agent needs before calling: partial writes, the completion precondition, and the absence of delete. Return values are not described, but there is no output schema, so a brief note would have helped; still, safety and side effects are covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents every parameter including conditional requirements and clearing rules. The description only reinforces a couple of these points ('only passed fields change', retest_note for completion) and adds no syntax or format details beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (update) and resource (deficiency), and immediately flags it as a write for editors. This distinguishes it clearly from read siblings like scf_get_deficiency, scf_list_deficiencies, and scf_get_deficiency_summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tells the agent up front that only passed fields change, and gives the key alternative: 'There is no delete: set status cancelled instead.' That routing guidance is concrete. It does not, however, cover when to use it versus other mutation siblings (e.g., scf_create_deficiency).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_document_sectionA

Replace one section's content with a human edit (write β€” editor role). Tracked as a human layer, so a later regeneration reports a conflict instead of overwriting it silently.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
contentYesFull replacement markdown body for this section
section_idYesSection identifier from the document detail (scf_get_document). May contain slashes β€” pass it exactly as returned, unescaped.
document_idYesGenerated document UUID β€” obtain from scf_list_documents

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description explains an important behavioral trait: the edit is tracked as a human layer and later regeneration will report a conflict rather than silently overwrite. This is non-obvious, valuable context that helps the agent predict side effects and choose the tool safely.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two focused sentences, no filler. The core action is front-loaded, and the second sentence adds the critical conflict-behavior detail that fully justifies the tool's existence. Every word contributes to selection or invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward single-section update with four well-documented parameters and no output schema, the description covers purpose, role, and non-obvious behavior (conflict on regeneration). Nothing essential for correct invocation appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents all four required parameters with 100% coverage, including the exact UUID patterns and where to obtain identifiers. The description adds little parameter-specific detail beyond the concept of replacing content, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Replace'), names the exact resource ('one section's content'), and clarifies the write nature with 'human edit (write β€” editor role)'. It also conveys the key semantic distinction from generated/silent updates by mentioning the human-layer tracking, which sets it apart from document generation/resolution siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly communicates when to use this tool: when a human editor wants to replace a section's content. It doesn't explicitly name alternatives or list when not to use it, but the 'editor role' and 'human layer' framing gives adequate context for an agent to distinguish it from generation-oriented or read-only document tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_document_settingsA

Enable or configure document generation (write β€” admin role). Generation stays blocked until the SCF licence is acknowledged, so the first call usually sets both enabled and acknowledge_licence.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
enabledNoTurn document generation on or off for this organization
acknowledge_licenceNoRecord acknowledgement of the SCF content licence β€” required once before generation is permitted
derivative_generators_enabledNoAllow generators that derive content from other generated documents

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description adds an admin-role requirement and the critical licence-gating behavior. It tells the agent that generation stays blocked until the licence is acknowledged, which is material for calling the tool correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the action and role are front-loaded, and the licence prerequisite follows immediately. Every sentence contributes either to selection or correct invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple update tool with no output schema and fully self-describing parameters, the description covers the key non-obvious context: admin role, write semantics, and the licence-acknowledgement ordering. Nothing needed to select or invoke the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter meaning by explaining that the first call usually sets both enabled and acknowledge_licence. This goes beyond individual field descriptions and helps the agent choose which booleans to send together.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses an explicit verb and resource ('Enable or configure document generation') and flags it as a write operation for admin role. This distinguishes it from read-only siblings like scf_get_document_settings and from scf_generate_documents, which actually initiates generation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete invocation guidance: the licence acknowledgement must be set before generation is allowed, and the first call usually sets both enabled and acknowledge_licence together. It does not explicitly name an alternative tool for when not to use it, but the admin/write framing makes the intended context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_engagementA

Update an engagement's name, frameworks, status or dates (write β€” editor role). Only passed fields change; status moves are caller-controlled: draft β†’ active β†’ under_review β†’ closed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew engagement name
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoNew engagement status: draft, active, under_review or closed
end_dateNoFieldwork end date, ISO 8601 (YYYY-MM-DD)
frameworksNoReplacement framework identifier list
start_dateNoFieldwork start date, ISO 8601 (YYYY-MM-DD)
engagement_idYesAudit engagement UUID β€” obtain from scf_list_engagements

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the description correctly adds that this is a write operation requiring an editor role. It also discloses partial-update behavior and the enforced status flow, which is valuable 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the action and resource, then states key behaviors (partial update, status flow). No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with 7 parameters and no output schema, the description covers the essential behavioral aspects: role requirement, partial update, and status constraints. It does not explain return values, but that is not necessary given the absence of an output schema. The description is complete enough for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents each parameter. The description adds the status transition rule that is not in the schema, which aids correct use of the status parameter. However, it does not add per-parameter meaning beyond that, so a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (update) and the resource (engagement) and lists the specific fields that can be changed (name, frameworks, status, dates). It distinguishes from the many other update tools by naming the resource explicitly, so an agent can immediately identify it as the engagement updater.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains that only passed fields change (partial update) and that status transitions are caller-controlled with an explicit sequence (draft β†’ active β†’ under_review β†’ closed). This provides clear guidance on how to use the tool correctly. It does not explicitly name alternative tools, but the sibling context makes the intended use obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_engagement_query_statusA

Move an auditor query through its lifecycle (write β€” org member or assigned auditor). Allowed: open β†’ answered|closed, answered β†’ open|closed, closed β†’ open. Others are refused.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusYesTarget query status
query_idYesQuery UUID β€” obtain from scf_list_engagement_queries
engagement_idYesAudit engagement UUID β€” obtain from scf_list_engagements

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly=false and destructive=false; the description adds useful context by identifying it as a write operation, restricting it to org members or assigned auditors, and declaring that invalid transitions are refused. This is consistent with the annotations and gives an agent clear behavioral expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single tight sentence with a compact transition table; every part earns its place and the core action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All parameters are documented in the schema and the state machine is fully specified, so an agent has the preconditions and constraints needed to call the tool correctly. It omits return-value details, but no output schema exists and the operation's side effects are sufficiently characterized for a status update.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all four parameters, so the schema carries the parameter burden. The description adds no per-parameter detail, which is acceptable at the baseline given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Move') and resource ('auditor query') and spells out the lifecycle transitions, making the tool's purpose clear. It doesn't explicitly distinguish it from the related scf_respond_to_engagement_query, but the transition model is enough to understand what the operation does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The allowed transition matrix and the 'write' permission indicate when the tool applies, and 'Others are refused' sets a boundary. However, it doesn't name alternatives like scf_respond_to_engagement_query or state when not to use this tool, so usage guidance 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.

scf_update_evidenceA

Upsert an evidence item's tracking fields (write β€” editor+ role). Creates the tracking row if missing. All body fields are optional; only provided fields are applied.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerNoPerson accountable for this evidence item
org_idYesOrganization UUID β€” obtain from scf_list_organizations
commentsNoFree-text notes or context
frequencyNoCollection cadence: 'daily', 'weekly', 'monthly', 'quarterly', or 'annually'
system_idNoSystem UUID to link this evidence to β€” obtain from scf_list_systems
is_trackedNoToggle active tracking for this item
evidence_idYesCatalog evidence ID (e.g., 'E-IAM-01') β€” obtain from scf_list_evidence or scf_list_evidence_catalog
maturity_levelNoEvidence maturity level L0–L5 (e.g., 'L3'); omitting never clears the stored value
collecting_systemNoName of the tool or system that collects the evidence
method_of_collectionNoCollection approach: 'automated', 'manual', or 'hybrid'

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate non-read-only and non-destructive, but the description adds meaningful behavioral details: it is a write operation requiring editor+ role, it creates the tracking row if missing, and it applies only provided fields. This is valuable context beyond the structured annotations and there is no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The core operation and scope are front-loaded, and the partial-update behavior is stated concisely.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 10 parameters and lack of an output schema, the description covers the essential operational semantics: upsert behavior, permissions, and partial updates. The schema handles parameter-level details. A minor gap is the lack of any statement about the response shape, but this is not critical for invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 10 parameters already have schema descriptions, so the schema carries most of the burden. The description adds important semantic context by clarifying that all body fields are optional and only provided fields are applied, which materially changes how an agent should construct a request.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action as an 'upsert' of 'tracking fields' on an evidence item, distinguishing it from simply creating or reading evidence. It also names the required role ('editor+'), which helps an agent understand the operation's nature. It is specific enough to separate this from siblings like scf_create_evidence and scf_list_evidence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states clear context: use this to upsert tracking fields and create a missing tracking row. It does not explicitly name or contrast alternatives such as scf_create_evidence, so the when-not-to-use guidance is only 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.

scf_update_evidence_taskA

Update an evidence collection task (write β€” editor role). Only passed fields change: due date, status, type, priority, title, description, notes, assignee, owning team.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoTask title
statusNoStatus
task_idYesEvidence task UUID β€” obtain from scf_list_evidence_tasks
due_dateNoDue date, YYYY-MM-DD
priorityNoPriority
task_typeNoTask type
descriptionNoWhat has to be collected and how
owning_team_idNoTeam that owns the task β€” obtain from scf_list_teams
assigned_user_idNoAssignee user UUID β€” obtain from scf_list_members
completion_notesNoNotes recorded on completion

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a write operation (readOnlyHint=false), and the description adds useful context: the editor role requirement and the fact that unspecified fields are preserved. This partial-update behavior is beyond what annotations provide, though it does not describe response or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It conveys purpose, role, mutation semantics, and the affected fields without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter update tool with no output schema, the description covers the critical behavioral facts: what operation occurs, who is allowed, and that only passed fields change. It does not mention return value or post-update effects, but the schema's per-parameter descriptions carry most of the remaining detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 10 parameters. The description lists the fields in prose but adds little semantic detail beyond the schema; it also loosely aliases 'type' for task_type and 'notes' for completion_notes, which could cause minor ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Update an evidence collection task.' It adds a role qualifier and the partial-update semantics ('Only passed fields change'), which clearly distinguishes it from scf_create_evidence_task and scf_complete_evidence_task.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through 'update' and 'only passed fields change', but it never explicitly says when to use this tool versus scf_complete_evidence_task or scf_create_evidence_task, nor does it state exclusions. The intended use is inferable but not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_org_compensating_controlA

Update an organisation compensating control (write β€” editor). Only passed fields change; the control it is for does not. A changed risk_code is re-checked (409).

ParametersJSON Schema
NameRequiredDescriptionDefault
cc_idYesCompensating control UUID β€” obtain from scf_list_org_compensating_controls
org_idYesOrganization UUID β€” obtain from scf_list_organizations
risk_codeNoJustifying accepted risk, re-checked as on create; null clears it, which a material control refuses
gap_descriptionNoWhat the control does not meet (cannot be cleared)
compensating_controlNoWhat compensates (cannot be cleared)
effectiveness_ratingNoEffectiveness: full, partial, minimal (cannot be cleared)
risk_reduction_notesNoRisk reduction notes, or null to clear

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-destructive write (readOnlyHint=false, destructiveHint=false), but the description adds meaningful behavioral detail: partial update semantics ('Only passed fields change'), immutability of the linked control, the need for editor permissions, and a specific validation recheck on risk_code that can return 409. It does not cover return values or other error cases, but the added context is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short, front-loaded sentences with no wasted words. The most important information (what it does, write/editor context) appears first, followed by update semantics and a key validation rule.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter mutation tool with no output schema and annotations covering safety, the description provides enough context: it states the operation, permission level, partial-update behavior, and a notable validation constraint. It does not mention all parameter-level restrictions (e.g., fields that cannot be cleared), but those are fully documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds semantics beyond the schema by clarifying that only passed fields change and that a changed risk_code is re-checked (409), which helps an agent understand the update behavior and a key error condition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Update an organisation compensating control') and clarifies the operation's nature with '(write β€” editor)'. The scoping term 'organisation' distinguishes it from the non-org sibling 'scf_update_compensating_control', and the verb separates it from 'scf_create_org_compensating_control'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through the verb 'Update' and the parenthetical 'write β€” editor', which signals the required permission level. However, it offers no explicit guidance on when to choose this tool over alternatives like creating a new control or updating the global compensating control, nor any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_org_settingsA

Update the organization profile and maturity targets (write β€” admin): business_size, mission_statement, maturity_targets. Partial: only passed fields change.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesOrganization UUID β€” obtain from scf_list_organizations
business_sizeNoBusiness size, which picks the matching row of each control's right-sizing guidance: micro_small, small, medium, large, enterprise; null clears
maturity_targetsNoTarget maturity per SCF domain code (domain code β†’ L0–L5), e.g. {"GOV": "L3"}. Replaces the whole map; {} clears every target. Unknown domain codes, or one code given twice in different case, are refused (422). A control's own target (scf_set_target_maturity) overrides its domain's
mission_statementNoMission statement (up to 4000 chars); blank or null clears

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnlyHint=false and destructiveHint=false. The description adds two things annotations cannot: it is an admin-gated write, and it is a partial update where only passed fields change β€” important behavior for a PATCH-style call. It stops short of describing the clear/replace semantics of null and {} values, which the schema carries instead.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, zero filler. The operation, the scope of writable fields, the admin gate, and the partial-update contract are all front-loaded before any detail is deferred to the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description should ideally say something about what a successful update returns or whether it echoes the new settings. It covers fields, partial semantics, and the admin gate, and safety is handled by annotations, so the gap is small but present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter in depth (enum values, 4000-char limit, whole-map replacement rules, 422 on unknown domain codes). The description only echoes the three field names, adding little beyond that. With coverage this high, it does what is expected and no more.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (update) and resource (organization profile and maturity targets) and enumerates the exact writable fields: business_size, mission_statement, maturity_targets. An agent can immediately distinguish this from the read-side sibling scf_get_org_settings and from scf_set_target_maturity (per-control targets).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The '(write β€” admin)' tag signals a permission precondition, which is useful for deciding whether the agent can call it at all. However, it gives no when-to-use vs when-not guidance and never names the obvious alternative, scf_set_target_maturity, for per-control targets β€” that precedence rule lives only in the parameter schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_risk_assessmentA

Update a scored risk by code (write β€” editor). Only passed fields change. Setting accepted records no approval (use scf_accept_risk); re-scoring an accepted risk clears its approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoFree-text notes on this risk assessment
impactNoInherent impact on a 1–5 scale
org_idYesOrganization UUID β€” obtain from scf_list_organizations
risk_codeYesRisk code β€” catalog R-XX-N or custom R-ORG-N
likelihoodNoInherent likelihood on a 1–5 scale
owner_user_idNoRisk owner β€” obtain from scf_list_members
treatment_planNoHow the risk is being treated
residual_impactNoResidual impact after treatment, 1–5 scale
next_review_dateNoYYYY-MM-DD
treatment_statusNoTreatment lifecycle state. 'accepted' set here records no approval β€” scf_accept_risk does. Below admin, moving an accepted risk with an approval in force off accepted is ignored (it stays accepted); an admin's move clears the acceptance
treatment_due_dateNoYYYY-MM-DD
residual_likelihoodNoResidual likelihood after treatment, 1–5 scale

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and destructiveHint=false, so the description carries real weight: it discloses the required permission level (editor), partial-update semantics ("Only passed fields change"), and a state side effect (re-scoring an accepted risk clears its approval). It stops short of describing failure modes for an unknown code or what the response returns, which keeps it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short clauses, no filler, and the verb plus access level are front-loaded ahead of the caveats. Every sentence carries information the agent needs, and nothing is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter mutation with only readOnly/destructive annotations and no output schema, the description covers the risky parts: permission level, patch semantics, and the approval-clearing side effect. The remaining gap is the return value and error behavior, which the absence of an output schema leaves undocumented anywhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3 and the schema already documents all 12 fields, the enums, and the UUID sources. The description still adds genuine parameter-level meaning the schema does not: the risk is addressed "by code" and omitted fields are left untouched, which tells the agent what it may safely leave out of a 12-field payload.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Update a scored risk by code") plus the access class ("write β€” editor"). It also names the sibling it must not be used for, scf_accept_risk, so an agent can separate this tool from the accept path without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit alternative and the condition that selects it: "Setting accepted records no approval (use scf_accept_risk)". It also sets the boundary condition for re-scoring an accepted risk, which tells the agent exactly which situation this tool is dangerous for and what it does there.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_scoped_controlA

Update a scoped control's implementation fields (write β€” editor+). Identify by scf_id. Only provided fields apply. Material controls: admin for not_applicable. at_risk raises a deficiency.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerNoAccountable owner of the control
org_idYesOrganization UUID β€” obtain from scf_list_organizations
scf_idYesSCF control identifier in DOMAIN-NN format (e.g., 'AST-01', 'GOV-02') β€” NOT the UUID
priorityNoImplementation priority: 'high', 'medium', or 'low'
assigned_toNoAssignee responsible for implementation
target_dateNoTarget completion date in ISO-8601 (YYYY-MM-DD)
maturity_levelNoMaturity level with L prefix: L0 Not Performed, L1 Performed, L2 Planned, L3 Well Defined, L4 Quantitatively Controlled, L5 Continuously Improving
completion_dateNoActual completion date in ISO-8601 (YYYY-MM-DD)
selection_reasonNoJustification for scoping decision β€” required for not_applicable or deferred
implementation_notesNoFree-text implementation notes and context
implementation_statusNoNew implementation status (lowercase): not_started, in_progress, implemented, ready_for_review, monitored, not_applicable, at_risk, or deferred. Moving to at_risk raises a deficiency (see scf_list_deficiencies). A material control (catalogue weighting 10, or set material by an admin) can only leave scope through scf_set_scope_override by an admin (other paths 409), and only an admin may mark it not_applicable (403 otherwise).

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Rich disclosure beyond annotations: requires editor+ permission, notes only provided fields apply (partial update semantics), warns that at_risk raises a deficiency, and that material controls need admin to mark not_applicable. Annotations only say readOnlyHint=false and destructiveHint=false; the description adds substantive 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Terse, front-loaded with the core action and required identifier, then conditional behaviors. Every clause earns its place, though the phrasing is slightly telegraphic and could flow better without losing content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation tool with no output schema, the description covers the key behavioral edge cases (deficiency creation, admin requirements) and permission level. It omits return value expectations, but those are not critical for a write tool and the description covers the operational essentials.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter meanings are already documented. The description adds scoping constraints for scf_id and implementation_status behavior but doesn't add parameter syntax beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Update a scoped control's implementation fields') and distinguishes itself from siblings like scf_batch_update_controls and scf_update_compensating_control. An agent can immediately tell this is the single-control update path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies when to use it ('Identify by scf_id', 'Only provided fields apply') but doesn't explicitly route to alternatives like scf_batch_update_controls for bulk operations or scf_set_scope_override for scope changes. The in-schema guidance about material controls partially compensates, but the description itself lacks when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_systemA

Update a system record (write β€” editor+ role), including its boundary and recovery record. All fields are optional; only provided fields are applied.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew system name
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoNew lifecycle status
vendorNoNew legacy free-text vendor name (prefer vendor_id)
categoryNoNew free-text category
in_scopeNoAssessment boundary: true (inside), false (outside), or null to mark it undecided
rpo_hoursNoRecovery point objective in hours (β‰₯ 0); null clears
rto_hoursNoRecovery time objective in hours (β‰₯ 0); null clears
system_idYesSystem UUID to update β€” obtain from scf_list_systems
vendor_idNoNew structural vendor link (UUID, same org) β€” obtain from scf_list_vendors
criticalityNoBusiness criticality β€” one of: low, medium, high, critical; null clears
descriptionNoNew system description
system_typeNoNew system classification β€” one of: cloud_provider, identity_provider, ticketing, logging, security_tool, code_repository, document_management, endpoint_management, vulnerability_management, email_security, security_awareness, password_manager, communication, hr_system, custom
hosting_locationNoWhere the system runs; null clears
catalog_template_idNoNew system-catalog template ID link β€” obtain from scf_list_system_catalog
data_classificationNoHighest classification of data held β€” one of: public, internal, confidential, restricted; null clears

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and destructiveHint=false, so the description's addition of the editor+ authorization requirement and the PATCH-style semantics ('Only provided fields are applied') is real value beyond structured data. It still omits what happens on conflict/invalid IDs and whether omitted fields are ever cleared versus left untouched (the schema's 'null clears' hints at this but the description doesn't reconcile it with 'only provided fields are applied').

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, front-loaded with the verb and resource, and the authorization and partial-update notes are appended without waste. Only mild redundancy in the parenthetical phrasing, nothing that needs cutting.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter PATCH tool with no output schema, the description covers the two things an agent most needs: it is a write requiring editor+ rights, and it is a partial update. Return behavior is not described, but with no output schema declared that omission is acceptable; identity/ID sourcing is covered by the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each of the 16 parameters is already documented in the schema (including vendor vs vendor_id preference and null-clears semantics). The description only loosely groups fields as 'boundary' and 'recovery record' and adds no syntax or format detail 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Update a system record') and adds scope hints about what parts of the record are touched (boundary, recovery record). It does not explicitly name or differentiate from the sibling scf_create_system or scf_update_system_capability, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides one concrete prerequisite β€” write requires editor+ role β€” which helps an agent know when it is permitted to call. However, there is no guidance on when to choose this over scf_create_system, scf_update_system_capability, or scf_batch_update_* tools; usage context 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.

scf_update_system_capabilityA

Update a system's evidence capability (write β€” editor role). Only passed fields change; move status potential β†’ configured β†’ active as the collector is wired up.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoFree-text notes about the capability
org_idYesOrganization UUID β€” obtain from scf_list_organizations
system_idYesSystem UUID β€” obtain from scf_list_systems
data_formatNoFormat of the collected data, e.g. 'csv', 'json', 'pdf'
capability_idYesCapability UUID β€” obtain from scf_list_system_capabilities
confidence_levelNoConfidence in evidence quality
capability_statusNoCapability status
collection_methodNoHow the evidence is collected

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses the editor-role requirement, partial-update behavior, and the expected status progression. These are meaningful behavioral details not expressed in the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with no filler. The role requirement, partial-update rule, and status workflow are all communicated efficiently and are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an update tool with eight parameters and no output schema, the description plus fully described schema covers identifiers, optional fields, enums, role, and transition semantics. Return/error behavior is not covered, but that is not essential for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter already documented, including enum values and UUID provenance. The description adds context around capability_status transitions but does not need to redefine parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the operation ('Update'), the resource ('a system's evidence capability'), and the nature of the operation ('write β€” editor role'). This distinguishes it from sibling tools like scf_create_system_capability and scf_list_system_capabilities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear usage context: modify an existing capability, only passed fields change, and status progresses through potential β†’ configured β†’ active. It does not explicitly state when to prefer create or list siblings, so it lacks formal exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_teamA

Update a team's name, description, function alignment or active flag (write β€” admin role). Set is_active=false to archive; the row is never deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew team name
org_idYesOrganization UUID β€” obtain from scf_list_organizations
team_idYesTeam UUID β€” obtain from scf_list_teams
is_activeNofalse archives the team
descriptionNoNew description
function_idNoNew primary business function β€” obtain from scf_list_functions
function_idsNoReplacement set of additional functions the team serves

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the description correctly aligns with those. The description adds valuable behavioral context beyond the annotations: it explicitly states the admin role requirement, and clarifies that setting is_active=false archives the team and that the row is never deleted. This is exactly the kind of behavioral disclosure that helps an agent understand side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that front-loads the core purpose, then adds the critical behavioral note about archiving. Every word earns its place; there is no fluff or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers the essential context: what can be updated, the admin requirement, and the archive behavior. It does not describe the return value or error conditions, but given the annotations already signal the write nature and the schema covers all parameters, the description is largely complete. A brief note on what the response contains would push this to 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 7 parameters. The description adds a small amount of semantic value by grouping the parameters into categories (name, description, function alignment, active flag) and by explaining the archive semantics of is_active. However, it does not add meaning beyond what the schema provides for most parameters, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Update'), a specific resource ('a team'), and enumerates the exact fields that can be changed (name, description, function alignment, active flag). It also distinguishes itself from related team tools by noting the write/admin nature, which separates it from read-only tools like scf_get_team and scf_list_teams.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates this is a write operation requiring an admin role, which tells the agent when it is appropriate to use. It does not explicitly name alternatives or state when NOT to use it, but the context of sibling tools (scf_create_team, scf_add_team_member, scf_remove_team_member) makes the usage context reasonably clear. The archive behavior via is_active=false is also a useful usage signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_vendorA

Update an existing vendor record (write β€” editor+ role). Only provided fields are applied.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew vendor name
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoNew lifecycle status β€” one of: prospect, active, under_review, approved, suspended, offboarded
websiteNoNew website URL
categoryNoNew category label
vendor_idYesVendor UUID β€” obtain from scf_list_vendors
criticalityNoNew criticality tier
descriptionNoNew free-text description
contact_emailNoNew primary contact email
data_locationNoWhere the vendor stores or processes our data; null clears
flow_down_requirementsNoRequirements passed down to the vendor by contract; null clears
shared_responsibility_noteNoWho is responsible for what between us and the vendor; null clears

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnlyHint=false and destructiveHint=false. The description adds the concrete authorization requirement (editor+ role) and the patch semantics ("Only provided fields are applied"), which tells the agent omitted fields are not nulled β€” meaningful behavioral 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence plus parenthetical, front-loaded with the action and immediately followed by the two facts an agent most needs: permission level and update semantics. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter mutation with a fully documented schema, no output schema, and safety covered by annotations, the description supplies the remaining essentials: it is a write, requires editor+, and is a partial update. It could note whether the update touches only this vendor's record (no cascade), but nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 12 parameters, enum values, UUID formats, and the "null clears" semantics are already documented in the schema. The description's "only provided fields are applied" implies partial-update behavior but doesn't extend any individual parameter's meaning. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Update an existing vendor record" states a specific verb and resource, and the contrast with scf_create_vendor is implicit in "existing". It stops short of explicitly differentiating itself from sibling write tools like scf_update_vendor_certification or scf_update_vendor_action_item, which target sub-resources of the same vendor.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description names the required permission level (editor+) and the write nature, which tells an agent the preconditions for calling. It does not, however, contrast with sibling update tools or state when this is the wrong choice versus, say, updating a certification or action item.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_vendor_action_itemA

Update a vendor action item (write β€” editor role). Only passed fields change; set status=completed with completed_date to close it.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoAction item title
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoStatus
item_idYesAction item UUID β€” obtain from scf_list_vendor_action_items
categoryNoFree-text category, e.g. 'contractual', 'technical'
due_dateNoYYYY-MM-DD
priorityNoPriority
vendor_idYesVendor UUID β€” obtain from scf_list_vendors
owner_nameNoOwner name
descriptionNoAction item detail
owner_user_idNoOwner β€” obtain from scf_list_members
completed_dateNoYYYY-MM-DD

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavior beyond the annotations: it discloses the editor-role requirement, the partial-update/PATCH semantics ('Only passed fields change'), and the completion recipe. It aligns with readOnlyHint=false (write operation) and does not contradict destructiveHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with no filler. The core action and write nature are front-loaded, followed immediately by the most important behavioral rules. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward update tool with 12 well-documented parameters, 3 required IDs, and no nested objects, the description provides the role, update semantics, and the specific completion workflow. An agent has enough information to call the tool correctly without needing return-value details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema carries the parameter-level detail. The description still adds value by clarifying that fields are optional updates and by linking status=completed to completed_date, which is a semantic relationship not obvious from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Update') and resource ('vendor action item'), and explicitly identifies the operation as a write. This clearly differentiates it from sibling tools like scf_create_vendor_action_item and scf_delete_vendor_action_item without requiring the agent to infer intent 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete operational guidance: only passed fields change, and closing an item requires setting status=completed together with completed_date. It does not explicitly name alternatives like create or delete tools, but the update semantics are self-evident enough for an agent to choose this over its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scf_update_vendor_certificationA

Update a vendor certification (write β€” editor role). Only passed fields change; use it to mark a certificate expired or revoked, or to record the renewed expiry date.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoCertification scope statement
org_idYesOrganization UUID β€” obtain from scf_list_organizations
statusNoStatus
cert_idYesCertification UUID β€” obtain from scf_list_vendor_certifications
vendor_idYesVendor UUID β€” obtain from scf_list_vendors
issue_dateNoYYYY-MM-DD
expiry_dateNoYYYY-MM-DD
verification_urlNoPublic verification URL
certificate_numberNoCertificate number
certification_bodyNoIssuing body
certification_nameNoCertification name, e.g. 'ISO 27001:2022'

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate it's a write operation (readOnlyHint false) and not destructive (destructiveHint false). The description adds important behavioral context: partial update semantics ('Only passed fields change') and the editor role requirement. It also hints at side-effect-free updates by focusing on field changes. This goes beyond the annotations and is valuable for the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the primary action and role, then provides behavioral details and concrete examples. Every clause earns its place, and it's immediately scannable. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 11 parameters and 3 required, the description is fairly complete given the schema's high coverage. It explains partial update, gives use cases, and the schema handles parameter sources and constraints. It doesn't mention return values (no output schema) or prerequisites beyond the editor role, but these are not critical gaps. It could mention that the certification must already exist, but that's implied by 'update'. Overall, it's adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters with at least basic descriptions (e.g., org_id says 'obtain from scf_list_organizations'). The description doesn't add detailed parameter meanings beyond the partial update behavior, which is a general semantic rather than per-parameter. Baseline for high coverage is 3, and the description only marginally adds value here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (update), the resource (vendor certification), and the role (editor). It distinguishes from create/delete by emphasizing partial updates and providing concrete use cases like marking expired/revoked or renewing expiry date. This makes the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly guides usage by stating 'Only passed fields change' and giving examples of when to use it (mark expired/revoked, record renewed expiry). It doesn't explicitly name alternatives like scf_create_vendor_certification, but the 'update' verb and context make the distinction clear. It could be more explicit about when not to use it (e.g., for creation), but overall it provides adequate guidance.

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.

  1. 43 tool updatesv3.7.2
    • Addedscf_accept_risk
    • Addedscf_add_capability_test_finding
    • Changedscf_add_custom_risk_control1 field changed
      • addedInput schema / properties / document_id
        Added value: +{
        +  "description": "Organisation document that sets the standard this risk is an exception against β€” obtain from scf_list_documents (404 if not this org's). A link with a document makes the custom risk a standards exception",
        +  "format": "uuid",
        +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +  "type": "string"
        +}
    • Changedscf_batch_update_controls2 fields changed
      • changedInput schema / properties / operations / items / properties / implementation_status / description
        Previous value: -"Implementation status (lowercase): not_started, in_progress, implemented, ready_for_review, monitored, not_applicable, at_risk, deferred"New value: +"Implementation status (lowercase): not_started, in_progress, implemented, ready_for_review, monitored, not_applicable, at_risk, deferred. at_risk raises a deficiency; not_applicable on a material control needs an admin (403)"
      • changedInput schema / properties / operations / items / properties / selected / description
        Previous value: -"Toggle in-scope membership"New value: +"Toggle in-scope membership. Deselecting an MCR-basis or material control is refused (409) β€” use scf_set_scope_override"
    • Changedscf_bulk_unscope_framework1 field changed
      • changedInput schema / properties / removal_reason / description
        Previous value: -"Why these controls leave scope β€” recorded in the audit trail"New value: +"Why these controls leave scope β€” recorded in the audit trail. Required (400 without it), with an admin key (403 otherwise), when a framework carries an MCR obligation or its removal would take a material control out of scope"
    • Addedscf_create_capability_test
    • Addedscf_create_deficiency
    • Addedscf_create_org_compensating_control
    • Changedscf_create_system6 fields changed
      • addedInput schema / properties / criticality
        Added value: +{
        +  "description": "Business criticality β€” one of: low, medium, high, critical",
        +  "enum": [
        +    "low",
        +    "medium",
        +    "high",
        +    "critical"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / data_classification
        Added value: +{
        +  "description": "Highest classification of data held β€” one of: public, internal, confidential, restricted",
        +  "enum": [
        +    "public",
        +    "internal",
        +    "confidential",
        +    "restricted"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / hosting_location
        Added value: +{
        +  "description": "Where the system runs, e.g. a cloud region or data centre",
        +  "maxLength": 255,
        +  "type": "string"
        +}
      • addedInput schema / properties / in_scope
        Added value: +{
        +  "description": "Inside the assessment boundary (true) or outside (false); omit when not decided",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / rpo_hours
        Added value: +{
        +  "description": "Recovery point objective, in hours (β‰₯ 0)",
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / rto_hours
        Added value: +{
        +  "description": "Recovery time objective, in hours (β‰₯ 0)",
        +  "minimum": 0,
        +  "type": "number"
        +}
    • Changedscf_create_vendor3 fields changed
      • addedInput schema / properties / data_location
        Added value: +{
        +  "description": "Where the vendor stores or processes our data",
        +  "maxLength": 255,
        +  "type": "string"
        +}
      • addedInput schema / properties / flow_down_requirements
        Added value: +{
        +  "description": "Requirements passed down to the vendor by contract",
        +  "type": "string"
        +}
      • addedInput schema / properties / shared_responsibility_note
        Added value: +{
        +  "description": "Who is responsible for what between us and the vendor",
        +  "type": "string"
        +}
    • Changedscf_generate_documents1 field changed
      • changedInput schema / properties / requests / items / properties / generator / description
        Previous value: -"Generator name from scf_list_document_generators"New value: +"Generator name from scf_list_document_generators, e.g. 'soa' or 'governance-report' (the Governance Oversight Report for board due-care review; not domain-scoped)"
    • Addedscf_get_capability_test
    • Addedscf_get_deficiency
    • Addedscf_get_deficiency_summary
    • Addedscf_get_org_compensating_control
    • Addedscf_get_org_settings
    • Addedscf_get_posture_snapshot
    • Changedscf_import_journey1 field changed
      • changedInput schema / properties / template / properties / stages / items / properties / precondition_spec / description
        Previous value: -"Machine-checked preconditions evaluated for display only β€” they never advance a stage on their own"New value: +"Machine-checked preconditions evaluated for display only β€” they never advance a stage on their own. Each entry is {type, label?, ...params}; an unknown type or a parameter the type does not take reads as 'cannot evaluate', never as met. Types: frameworks_scoped(min_count); controls_with_decision, controls_with_owner(min_fraction, domains, scf_ids); controls_at_status(statuses, min_fraction, domains, scf_ids); controls_at_risk_max(max_count, domains, scf_ids); documents_approved(min_count, generator e.g. 'soa' or '<generator>:<domain>' such as 'policy:GOV', within_days 1–3660 = approved in the last N days); evidence_items_tracked(min_count); evidence_files_uploaded(min_count); evidence_upload_spread_days(min_days, default 30); engagement_exists; frameworks_with_basis(basis mcr|dsr required, min_count); controls_with_basis(basis?, min_fraction, domains, scf_ids); systems_with_criticality(min_fraction); controls_with_target, controls_at_target(min_fraction, domains, scf_ids); material_controls_at_status(statuses required, min_fraction, domains, scf_ids); risks_accepted_without_approver_max(max_count, default 0); open_deficiencies_max, material_deficiencies_max(max_count default 0, domains); controls_validated_within_cadence(min_fraction, domains, scf_ids); capability_tests_within_days(days 1–3660 required, min_count default 1, test_types: incident_response|continuity|other). scf_ids and domains apply only where listed; an unknown control ID or domain code is refused at upload (422). Example: {\"type\": \"documents_approved\", \"generator\": \"soa\"}. Full table: docs/tools/journey.md"
    • Addedscf_list_capability_tests
    • Addedscf_list_control_validations
    • Addedscf_list_deficiencies
    • Addedscf_list_org_compensating_controls
    • Addedscf_list_posture_snapshots
    • Changedscf_list_risks7 fields changed
      • addedInput schema / properties / acceptance_state
        Added value: +{
        +  "description": "Accepted risks only, by their approval: 'approved' (in force), 'expired' (past acceptance_expires_on) or 'unapproved' (accepted with no approval recorded)",
        +  "enum": [
        +    "approved",
        +    "expired",
        +    "unapproved"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / category
        Added value: +{
        +  "description": "Filter by catalog risk category code, e.g. 'AC' matches R-AC-N",
        +  "type": "string"
        +}
      • removedInput schema / properties / page
        Removed value: -{
        -  "default": 1,
        -  "description": "1-indexed page number (default 1)",
        -  "maximum": 9007199254740991,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / per_page
        Removed value: -{
        -  "default": 25,
        -  "description": "Page size (1–100, default 25)",
        -  "maximum": 100,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • addedInput schema / properties / risk_level
        Added value: +{
        +  "description": "Filter by inherent risk level, banded by the org's risk profile",
        +  "enum": [
        +    "low",
        +    "medium",
        +    "high",
        +    "critical"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / status / description
        Previous value: -"Filter by treatment status (e.g., 'mitigate', 'accept', 'transfer', 'avoid')"New value: +"Filter by treatment status: identified, analysed, treating, treated, accepted or monitoring (sent as the platform's treatment_status)"
      • addedInput schema / properties / status / enum
        Added value: +[
        +  "identified",
        +  "analysed",
        +  "treating",
        +  "treated",
        +  "accepted",
        +  "monitoring"
        +]
    • Changedscf_list_scoped_controls3 fields changed
      • addedInput schema / properties / basis
        Added value: +{
        +  "description": "Filter by obligation basis: 'mcr', 'dsr', or 'unclassified' (no classified framework and no override). Each row carries obligation_basis, basis_source (override | framework) and basis_override_reason",
        +  "enum": [
        +    "mcr",
        +    "dsr",
        +    "unclassified"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / material
        Added value: +{
        +  "description": "Filter by materiality: true for material controls (catalogue weighting 10, or an admin override), false for the rest. Rows carry material, material_source (control | weighting) and material_reason",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / sort
        Added value: +{
        +  "default": "scf_id",
        +  "description": "Order: 'scf_id' (default), or 'weighting' β€” material controls first, then catalogue weighting highest first, then scf_id. Rows also carry target_maturity, target_source (control | domain), target_maturity_reason, procedure_document_id, procedure_document_status, last_validated_at, last_validated_by and last_validation_note",
        +  "enum": [
        +    "scf_id",
        +    "weighting"
        +  ],
        +  "type": "string"
        +}
    • Changedscf_list_systems1 field changed
      • addedInput schema / properties / in_scope
        Added value: +{
        +  "description": "Filter by assessment boundary: 'true' (inside), 'false' (outside) or 'undecided' (not recorded)",
        +  "enum": [
        +    "true",
        +    "false",
        +    "undecided"
        +  ],
        +  "type": "string"
        +}
    • Addedscf_record_control_validation
    • Addedscf_set_control_basis_override
    • Addedscf_set_control_materiality
    • Addedscf_set_control_procedure
    • Addedscf_set_framework_basis
    • Changedscf_set_scope_override1 field changed
      • changedInput schema / properties / reason / description
        Previous value: -"Why this control is being overridden β€” recorded in the audit trail (max 2000 characters)"New value: +"Why this control is being overridden β€” recorded in the audit trail (max 2000 characters). Required for 'exclude'. The admin making an MCR or material exclusion is recorded as its approver; there is no approver parameter"
    • Addedscf_set_target_maturity
    • Addedscf_take_posture_snapshot
    • Addedscf_update_capability_test
    • Addedscf_update_custom_risk_control
    • Addedscf_update_deficiency
    • Addedscf_update_org_compensating_control
    • Addedscf_update_org_settings
    • Changedscf_update_risk_assessment1 field changed
      • changedInput schema / properties / treatment_status / description
        Previous value: -"Treatment lifecycle state"New value: +"Treatment lifecycle state. 'accepted' set here records no approval β€” scf_accept_risk does. Below admin, moving an accepted risk with an approval in force off accepted is ignored (it stays accepted); an admin's move clears the acceptance"
    • Changedscf_update_scoped_control1 field changed
      • changedInput schema / properties / implementation_status / description
        Previous value: -"New implementation status (lowercase): not_started, in_progress, implemented, ready_for_review, monitored, not_applicable, at_risk, or deferred"New value: +"New implementation status (lowercase): not_started, in_progress, implemented, ready_for_review, monitored, not_applicable, at_risk, or deferred. Moving to at_risk raises a deficiency (see scf_list_deficiencies). A material control (catalogue weighting 10, or set material by an admin) can only leave scope through scf_set_scope_override by an admin (other paths 409), and only an admin may mark it not_applicable (403 otherwise)."
    • Changedscf_update_system6 fields changed
      • addedInput schema / properties / criticality
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "low",
        +        "medium",
        +        "high",
        +        "critical"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Business criticality β€” one of: low, medium, high, critical; null clears"
        +}
      • addedInput schema / properties / data_classification
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "public",
        +        "internal",
        +        "confidential",
        +        "restricted"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Highest classification of data held β€” one of: public, internal, confidential, restricted; null clears"
        +}
      • addedInput schema / properties / hosting_location
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 255,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Where the system runs; null clears"
        +}
      • addedInput schema / properties / in_scope
        Added value: +{
        +  "description": "Assessment boundary: true (inside), false (outside), or null to mark it undecided",
        +  "type": [
        +    "boolean",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / rpo_hours
        Added value: +{
        +  "anyOf": [
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Recovery point objective in hours (β‰₯ 0); null clears"
        +}
      • addedInput schema / properties / rto_hours
        Added value: +{
        +  "anyOf": [
        +    {
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Recovery time objective in hours (β‰₯ 0); null clears"
        +}
    • Changedscf_update_vendor3 fields changed
      • addedInput schema / properties / data_location
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 255,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Where the vendor stores or processes our data; null clears"
        +}
      • addedInput schema / properties / flow_down_requirements
        Added value: +{
        +  "description": "Requirements passed down to the vendor by contract; null clears",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedInput schema / properties / shared_responsibility_note
        Added value: +{
        +  "description": "Who is responsible for what between us and the vendor; null clears",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
  2. 10 tool updatesv3.6.0
    • Addedscf_attest_journey_stage
    • Addedscf_get_framework_scope_summary
    • Addedscf_get_journey
    • Addedscf_import_journey
    • Changedscf_list_evidence4 fields changed
      • addedInput schema / properties / accountable_owner_type
        Added value: +{
        +  "description": "Filter by the accountable team's primary owner: 'internal' or 'external_contractor'",
        +  "enum": [
        +    "internal",
        +    "external_contractor"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / function_id
        Added value: +{
        +  "description": "Filter to evidence assigned to any team aligned to this function β€” obtain from scf_list_functions",
        +  "format": "uuid",
        +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +  "type": "string"
        +}
      • addedInput schema / properties / my_teams
        Added value: +{
        +  "default": false,
        +  "description": "Filter to evidence assigned to any team the caller belongs to; intersects with team_id rather than overriding it. 'The caller' is the API key's identity; on a self-hosted instance that is a service account on no team, so this returns nothing β€” use team_id instead.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / team_id
        Added value: +{
        +  "description": "Filter to evidence this team is assigned to, accountable or consulted β€” obtain from scf_list_teams",
        +  "format": "uuid",
        +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +  "type": "string"
        +}
    • Addedscf_list_journey_templates
    • Changedscf_list_scoped_controls4 fields changed
      • addedInput schema / properties / accountable_owner_type
        Added value: +{
        +  "description": "Filter by the accountable team's primary owner: 'internal' or 'external_contractor'",
        +  "enum": [
        +    "internal",
        +    "external_contractor"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / function_id
        Added value: +{
        +  "description": "Filter to controls assigned to any team aligned to this function β€” obtain from scf_list_functions",
        +  "format": "uuid",
        +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +  "type": "string"
        +}
      • addedInput schema / properties / my_teams
        Added value: +{
        +  "default": false,
        +  "description": "Filter to controls assigned to any team the caller belongs to; intersects with team_id rather than overriding it. 'The caller' is the API key's identity; on a self-hosted instance that is a service account on no team, so this returns nothing β€” use team_id instead.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / team_id
        Added value: +{
        +  "description": "Filter to controls this team is assigned to, accountable or consulted β€” obtain from scf_list_teams",
        +  "format": "uuid",
        +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +  "type": "string"
        +}
    • Changedscf_list_teams1 field changed
      • addedInput schema / properties / mine
        Added value: +{
        +  "default": false,
        +  "description": "Only teams the caller is a member of (default false); each team then also carries membership_role. 'The caller' is the API key's identity; on a self-hosted instance that is a service account on no team, so this returns nothing β€” use team_id instead.",
        +  "type": "boolean"
        +}
    • Addedscf_preview_framework_scope_change
    • Addedscf_set_scope_override
  3. 9 tool updatesv3.5.0
    • Changedscf_create_system2 fields changed
      • changedInput schema / properties / system_type / description
        Previous value: -"System classification: cloud_provider, identity_provider, ticketing, logging, security_tool, code_repository, document_management, or custom"New value: +"System classification β€” one of: cloud_provider, identity_provider, ticketing, logging, security_tool, code_repository, document_management, endpoint_management, vulnerability_management, email_security, security_awareness, password_manager, communication, hr_system, custom"
      • changedInput schema / properties / system_type / enum
        Previous value: -[
        -  "cloud_provider",
        -  "identity_provider",
        -  "ticketing",
        -  "logging",
        -  "security_tool",
        -  "code_repository",
        -  "document_management",
        -  "custom"
        -]New value: +[
        +  "cloud_provider",
        +  "identity_provider",
        +  "ticketing",
        +  "logging",
        +  "security_tool",
        +  "code_repository",
        +  "document_management",
        +  "endpoint_management",
        +  "vulnerability_management",
        +  "email_security",
        +  "security_awareness",
        +  "password_manager",
        +  "communication",
        +  "hr_system",
        +  "custom"
        +]
    • Changedscf_create_vendor2 fields changed
      • changedInput schema / properties / status / description
        Previous value: -"Lifecycle status (default 'prospect')"New value: +"Lifecycle status (default prospect) β€” one of: prospect, active, under_review, approved, suspended, offboarded"
      • changedInput schema / properties / status / enum
        Previous value: -[
        -  "prospect",
        -  "active",
        -  "inactive",
        -  "under_review"
        -]New value: +[
        +  "prospect",
        +  "active",
        +  "under_review",
        +  "approved",
        +  "suspended",
        +  "offboarded"
        +]
    • Changedscf_get_assessment_review_queue1 field changed
      • addedInput schema / properties / tier
        Added value: +{
        +  "default": "file",
        +  "description": "file (default): entries carry file_id, act with scf_review_evidence_assessment. window: entries carry window_assessment_id, act with scf_review_window_assessment_verdict",
        +  "enum": [
        +    "file",
        +    "window"
        +  ],
        +  "type": "string"
        +}
    • Addedscf_get_window_assessment_versions
    • Changedscf_list_vendors2 fields changed
      • changedInput schema / properties / status / description
        Previous value: -"Lifecycle status filter"New value: +"Lifecycle status filter β€” one of: prospect, active, under_review, approved, suspended, offboarded"
      • changedInput schema / properties / status / enum
        Previous value: -[
        -  "prospect",
        -  "active",
        -  "inactive",
        -  "under_review"
        -]New value: +[
        +  "prospect",
        +  "active",
        +  "under_review",
        +  "approved",
        +  "suspended",
        +  "offboarded"
        +]
    • Changedscf_review_evidence_assessment2 fields changed
      • changedInput schema / properties / ao_overrides / description
        Previous value: -"Objectives to re-designate β€” required (β‰₯1) when overriding, forbidden when confirming; unlisted objectives keep the AI's designation"New value: +"Objectives to re-designate β€” required (β‰₯1) when overriding, forbidden when confirming; unlisted objectives keep the AI's designation. 422 if the version has no per-objective answers: confirm instead"
      • addedInput schema / properties / ao_overrides / items / properties / ao_id / minLength
        Added value: +1
    • Addedscf_review_window_assessment_verdict
    • Changedscf_update_system2 fields changed
      • changedInput schema / properties / system_type / description
        Previous value: -"New system classification"New value: +"New system classification β€” one of: cloud_provider, identity_provider, ticketing, logging, security_tool, code_repository, document_management, endpoint_management, vulnerability_management, email_security, security_awareness, password_manager, communication, hr_system, custom"
      • changedInput schema / properties / system_type / enum
        Previous value: -[
        -  "cloud_provider",
        -  "identity_provider",
        -  "ticketing",
        -  "logging",
        -  "security_tool",
        -  "code_repository",
        -  "document_management",
        -  "custom"
        -]New value: +[
        +  "cloud_provider",
        +  "identity_provider",
        +  "ticketing",
        +  "logging",
        +  "security_tool",
        +  "code_repository",
        +  "document_management",
        +  "endpoint_management",
        +  "vulnerability_management",
        +  "email_security",
        +  "security_awareness",
        +  "password_manager",
        +  "communication",
        +  "hr_system",
        +  "custom"
        +]
    • Changedscf_update_vendor2 fields changed
      • changedInput schema / properties / status / description
        Previous value: -"New lifecycle status"New value: +"New lifecycle status β€” one of: prospect, active, under_review, approved, suspended, offboarded"
      • changedInput schema / properties / status / enum
        Previous value: -[
        -  "prospect",
        -  "active",
        -  "inactive",
        -  "under_review"
        -]New value: +[
        +  "prospect",
        +  "active",
        +  "under_review",
        +  "approved",
        +  "suspended",
        +  "offboarded"
        +]
  4. 65 tool updatesv3.4.2
    • Addedscf_add_team_member
    • Addedscf_batch_create_team_assignments
    • Addedscf_batch_update_evidence
    • Addedscf_bulk_unscope_framework
    • Addedscf_complete_evidence_task
    • Addedscf_create_assignment
    • Addedscf_create_comment
    • Addedscf_create_compensating_control
    • Addedscf_create_evidence_task
    • Changedscf_create_risk2 fields changed
      • changedInput schema / properties / treatment_status / description
        Previous value: -"Treatment status: 'mitigate', 'accept', 'transfer', or 'avoid'"New value: +"Treatment workflow status (default identified)"
      • addedInput schema / properties / treatment_status / enum
        Added value: +[
        +  "identified",
        +  "analysed",
        +  "treating",
        +  "treated",
        +  "accepted",
        +  "monitoring"
        +]
    • Addedscf_create_system_capability
    • Addedscf_create_team
    • Addedscf_create_team_assignment
    • Addedscf_create_vendor_action_item
    • Addedscf_create_vendor_certification
    • Addedscf_delete_assignment
    • Addedscf_delete_comment
    • Addedscf_delete_compensating_control
    • Addedscf_delete_evidence_file
    • Addedscf_delete_risk_assessment
    • Addedscf_delete_team_assignment
    • Addedscf_delete_vendor_action_item
    • Addedscf_delete_vendor_certification
    • Addedscf_get_assessment_review_queue
    • Changedscf_get_audit_log13 fields changed
      • addedInput schema / properties / action
        Added value: +{
        +  "description": "Filter by action: create, update or delete",
        +  "enum": [
        +    "create",
        +    "update",
        +    "delete"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / action_source
        Added value: +{
        +  "description": "Filter by origin of the change: ui, api_key, mcp or system",
        +  "enum": [
        +    "ui",
        +    "api_key",
        +    "mcp",
        +    "system"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / actor_id
        Added value: +{
        +  "description": "Filter by actor user UUID β€” platform alias of changed_by_user_id",
        +  "format": "uuid",
        +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +  "type": "string"
        +}
      • addedInput schema / properties / changed_by_user_id
        Added value: +{
        +  "description": "Filter by the user who made the change β€” obtain from scf_list_members",
        +  "format": "uuid",
        +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +  "type": "string"
        +}
      • addedInput schema / properties / date_from
        Added value: +{
        +  "description": "Include changes at or after this ISO-8601 timestamp (YYYY-MM-DDTHH:MM:SSZ)",
        +  "type": "string"
        +}
      • addedInput schema / properties / date_to
        Added value: +{
        +  "description": "Include changes at or before this ISO-8601 timestamp (YYYY-MM-DDTHH:MM:SSZ)",
        +  "type": "string"
        +}
      • addedInput schema / properties / entity_id
        Added value: +{
        +  "description": "Filter by the changed entity's UUID",
        +  "format": "uuid",
        +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +  "type": "string"
        +}
      • addedInput schema / properties / entity_type
        Added value: +{
        +  "description": "Filter by exact entity type as written in the log, e.g. scoped_control, evidence_file, audit_engagement, vendor β€” unsure of the spelling? use search_text",
        +  "type": "string"
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"Page size (1–100, default 50)"New value: +"Page size (1–200, default 50)"
      • changedInput schema / properties / limit / maximum
        Previous value: -100New value: +200
      • addedInput schema / properties / request_id
        Added value: +{
        +  "description": "Filter by request correlation ID β€” groups every change one API call made",
        +  "format": "uuid",
        +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +  "type": "string"
        +}
      • addedInput schema / properties / scf_id
        Added value: +{
        +  "description": "Filter by SCF control ID in DOMAIN-NN format",
        +  "type": "string"
        +}
      • addedInput schema / properties / search_text
        Added value: +{
        +  "description": "Case-insensitive search across entity_type, field_name, old_value and new_value",
        +  "type": "string"
        +}
    • Addedscf_get_catalog_evidence
    • Addedscf_get_change_cursor
    • Addedscf_get_controls_for_risk
    • Addedscf_get_domain
    • Addedscf_get_evidence
    • Addedscf_get_frequency_health
    • Addedscf_get_org_work_queue
    • Addedscf_get_risk_profile
    • Addedscf_get_risks_for_control
    • Addedscf_get_system
    • Addedscf_get_systems_for_evidence
    • Addedscf_get_team
    • Addedscf_get_upcoming_evidence
    • Addedscf_list_assignments
    • Addedscf_list_comments
    • Addedscf_list_compensating_controls
    • Changedscf_list_engagement_queries1 field changed
      • addedInput schema / properties / status / enum
        Added value: +[
        +  "open",
        +  "answered",
        +  "closed"
        +]
    • Changedscf_list_engagements2 fields changed
      • changedInput schema / properties / status / description
        Previous value: -"Filter by engagement status (e.g. 'planning', 'fieldwork', 'closed')"New value: +"Filter by engagement status: draft, active, under_review or closed"
      • addedInput schema / properties / status / enum
        Added value: +[
        +  "draft",
        +  "active",
        +  "under_review",
        +  "closed"
        +]
    • Changedscf_list_evidence_tasks8 fields changed
      • addedInput schema / properties / assigned_to_me
        Added value: +{
        +  "description": "Only tasks assigned to the caller",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / assignee / description
        Previous value: -"Filter by assigned user ID"New value: +"Filter by assigned user UUID"
      • addedInput schema / properties / assignee / format
        Added value: +"uuid"
      • addedInput schema / properties / assignee / pattern
        Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      • addedInput schema / properties / evidence_tracking_id
        Added value: +{
        +  "description": "Only tasks for one evidence tracking record",
        +  "format": "uuid",
        +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
        +  "type": "string"
        +}
      • addedInput schema / properties / overdue_only
        Added value: +{
        +  "description": "Only tasks past their due date",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / status / description
        Previous value: -"Filter by task status (e.g., 'open', 'in_progress', 'done')"New value: +"Filter by task status: not_started, in_progress or completed"
      • addedInput schema / properties / status / enum
        Added value: +[
        +  "not_started",
        +  "in_progress",
        +  "completed"
        +]
    • Addedscf_list_functions
    • Addedscf_list_system_capabilities
    • Addedscf_list_team_assignments
    • Addedscf_list_teams
    • Addedscf_list_vendor_action_items
    • Addedscf_list_vendor_certifications
    • Addedscf_mark_notifications_read
    • Addedscf_refresh_stale_window_assessments
    • Addedscf_remove_team_member
    • Addedscf_review_evidence_assessment
    • Addedscf_review_evidence_file
    • Addedscf_review_window_assessment
    • Addedscf_update_comment
    • Addedscf_update_compensating_control
    • Changedscf_update_engagement2 fields changed
      • changedInput schema / properties / status / description
        Previous value: -"New engagement status (e.g. 'fieldwork', 'closed')"New value: +"New engagement status: draft, active, under_review or closed"
      • addedInput schema / properties / status / enum
        Added value: +[
        +  "draft",
        +  "active",
        +  "under_review",
        +  "closed"
        +]
    • Addedscf_update_evidence_task
    • Addedscf_update_risk_assessment
    • Addedscf_update_system_capability
    • Addedscf_update_team
    • Addedscf_update_vendor_action_item
    • Addedscf_update_vendor_certification
  5. 7 tool updatesv3.0.0
    • Removedscf_accept_cdm_proposal
    • Removedscf_dismiss_cdm_proposal
    • Removedscf_get_cdm_document_map
    • Removedscf_list_cdm_documents
    • Removedscf_list_cdm_mappings
    • Removedscf_list_cdm_proposals
    • Removedscf_query_cdm_corpus
  6. 51 tool updatesv2.1.0
    • Addedscf_accept_cdm_proposal
    • Addedscf_add_engagement_auditor
    • Addedscf_apply_catalog_reconciliation
    • Addedscf_cancel_catalog_reconciliation
    • Addedscf_create_engagement
    • Addedscf_create_engagement_query
    • Addedscf_delete_engagement
    • Addedscf_dismiss_cdm_proposal
    • Addedscf_export_document
    • Addedscf_generate_documents
    • Addedscf_get_catalog_changelog
    • Addedscf_get_catalog_reconciliation_status
    • Addedscf_get_cdm_document_map
    • Addedscf_get_document
    • Addedscf_get_document_generation_status
    • Addedscf_get_document_history
    • Addedscf_get_document_section_generated
    • Addedscf_get_document_settings
    • Addedscf_get_engagement
    • Addedscf_get_engagement_presentation
    • Addedscf_get_engagement_query
    • Addedscf_get_engagement_scope
    • Addedscf_get_reconciliation_run
    • Changedscf_list_assessment_objectives1 field changed
      • addedInput schema / properties / include_deprecated
        Added value: +{
        +  "description": "Include catalog rows deprecated by a later SCF version. Default false β€” the catalog answers with active rows only, and deprecated rows carry a lifecycle badge when included.",
        +  "type": "boolean"
        +}
    • Addedscf_list_cdm_documents
    • Addedscf_list_cdm_mappings
    • Addedscf_list_cdm_proposals
    • Changedscf_list_controls1 field changed
      • addedInput schema / properties / include_deprecated
        Added value: +{
        +  "description": "Include catalog rows deprecated by a later SCF version. Default false β€” the catalog answers with active rows only, and deprecated rows carry a lifecycle badge when included.",
        +  "type": "boolean"
        +}
    • Addedscf_list_document_domains
    • Addedscf_list_document_generators
    • Addedscf_list_documents
    • Changedscf_list_domains1 field changed
      • addedInput schema / properties / include_deprecated
        Added value: +{
        +  "description": "Include catalog rows deprecated by a later SCF version. Default false β€” the catalog answers with active rows only, and deprecated rows carry a lifecycle badge when included.",
        +  "type": "boolean"
        +}
    • Addedscf_list_engagement_auditors
    • Addedscf_list_engagement_queries
    • Addedscf_list_engagements
    • Changedscf_list_evidence_catalog1 field changed
      • addedInput schema / properties / include_deprecated
        Added value: +{
        +  "description": "Include catalog rows deprecated by a later SCF version. Default false β€” the catalog answers with active rows only, and deprecated rows carry a lifecycle badge when included.",
        +  "type": "boolean"
        +}
    • Addedscf_list_my_engagements
    • Addedscf_list_reconciliation_runs
    • Addedscf_preview_catalog_reconciliation
    • Addedscf_preview_document
    • Addedscf_query_cdm_corpus
    • Addedscf_remove_engagement_auditor
    • Addedscf_resolve_document_section
    • Addedscf_respond_to_engagement_query
    • Addedscf_rollback_catalog_reconciliation
    • Addedscf_set_reconciliation_actions
    • Addedscf_transition_document
    • Addedscf_update_document_section
    • Addedscf_update_document_settings
    • Addedscf_update_engagement
    • Addedscf_update_engagement_query_status
  7. 88 tool updatesv1.7.0
    • First observedscf_add_custom_risk_control
    • First observedscf_batch_update_controls
    • First observedscf_bulk_assess_evidence
    • First observedscf_bulk_assess_windows
    • First observedscf_create_custom_risk
    • First observedscf_create_evidence
    • First observedscf_create_risk
    • First observedscf_create_system
    • First observedscf_create_vendor
    • First observedscf_create_webhook
    • First observedscf_delete_custom_risk
    • First observedscf_delete_webhook
    • First observedscf_generate_system_recipes
    • First observedscf_get_audit_log
    • First observedscf_get_capability_theme
    • First observedscf_get_capability_theme_evidence_posture
    • First observedscf_get_capability_theme_scorecard
    • First observedscf_get_control
    • First observedscf_get_control_assessment_composite
    • First observedscf_get_current_user
    • First observedscf_get_evidence_assessment
    • First observedscf_get_evidence_assessment_summary
    • First observedscf_get_evidence_file
    • First observedscf_get_evidence_health
    • First observedscf_get_evidence_item_maturity
    • First observedscf_get_evidence_maturity
    • First observedscf_get_evidence_suggestions
    • First observedscf_get_evidence_upgrade_recommendations
    • First observedscf_get_evidence_validation
    • First observedscf_get_evidence_validation_summary
    • First observedscf_get_latest_vendor_assessment
    • First observedscf_get_notifications
    • First observedscf_get_organization
    • First observedscf_get_recipe_generation_status
    • First observedscf_get_risk
    • First observedscf_get_risk_matrix
    • First observedscf_get_risk_summary
    • First observedscf_get_scoped_control
    • First observedscf_get_scoping_stats
    • First observedscf_get_system_catalog_template
    • First observedscf_get_system_recipes
    • First observedscf_get_vendor
    • First observedscf_get_vendor_assessment
    • First observedscf_get_vendor_assessment_status
    • First observedscf_get_vendor_research
    • First observedscf_get_webhook
    • First observedscf_get_window_assessment
    • First observedscf_get_window_assessment_summary
    • First observedscf_get_work_queue
    • First observedscf_list_assessment_objectives
    • First observedscf_list_capabilities
    • First observedscf_list_capability_theme_controls
    • First observedscf_list_capability_themes
    • First observedscf_list_control_assessment_composites
    • First observedscf_list_controls
    • First observedscf_list_custom_risk_controls
    • First observedscf_list_custom_risks
    • First observedscf_list_domains
    • First observedscf_list_evidence
    • First observedscf_list_evidence_catalog
    • First observedscf_list_evidence_files
    • First observedscf_list_evidence_gaps
    • First observedscf_list_evidence_tasks
    • First observedscf_list_frameworks
    • First observedscf_list_members
    • First observedscf_list_organizations
    • First observedscf_list_risks
    • First observedscf_list_scoped_controls
    • First observedscf_list_system_catalog
    • First observedscf_list_systems
    • First observedscf_list_vendor_assessments
    • First observedscf_list_vendors
    • First observedscf_list_webhook_deliveries
    • First observedscf_list_webhooks
    • First observedscf_list_window_assessments
    • First observedscf_remove_custom_risk_control
    • First observedscf_revalidate_evidence_file
    • First observedscf_rotate_webhook_secret
    • First observedscf_scope_framework
    • First observedscf_trigger_evidence_assessment
    • First observedscf_trigger_vendor_assessment
    • First observedscf_trigger_vendor_research
    • First observedscf_trigger_window_assessment
    • First observedscf_update_custom_risk
    • First observedscf_update_evidence
    • First observedscf_update_scoped_control
    • First observedscf_update_system
    • First observedscf_update_vendor

TDQS

A3.5/5.0

Scored across 224 tools

Disambiguation2/5

With 224 tools, many surfaces overlap: reference vs org instances (get_evidence vs get_catalog_evidence), multiple work queues, several assessment/review/verdict tools, and many vendor/document/reconciliation variants. Descriptions often clarify role and required fields, but the sheer number of adjacent tools makes misselection likely.

Naming Consistency5/5

All tools use the scf_ prefix with snake_case verb_noun naming (list_, get_, create_, update_, delete_, etc.). Variants like bulk_, batch_, trigger_, preview_, and review_ remain predictable and semantically consistent.

Tool Count1/5

224 exposed tools is an extreme mismatch for a single MCP server; it far exceeds the typical 3–15 scoped tools and forces agents to navigate an enormous surface. Many tools could be consolidated or grouped into resources.

Completeness4/5

The surface broadly covers a massive GRC domain: controls, frameworks, risks, evidence, vendors, documents, engagements, teams, assignments, comments, reconciliation, and webhooks, with lifecycle operations for most entities. Some minor lifecycle gaps exist, such as no delete for vendors/systems, but agents can usually work around them.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    C
    quality
    B
    maintenance
    Enables AI agents to interact with the ComplianceCow platform to retrieve compliance insights, dashboard data, and auditable evidence through a Compliance Graph. It also supports automated remediation actions such as fixing policies and creating tickets in external tools.
    100
    13
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to query software supply chain compliance data, including asset status, security vulnerabilities, and evidence lineage. It allows for natural language analysis of compliance posture, policy violations, and deployment blockers across an organization.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides comprehensive access to NIST cybersecurity frameworks and controls, enabling AI assistants and applications to query, analyze, and manage NIST security controls through a standardized interface.
    10
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables searching and bidirectional mapping of 1,451 security controls across 262 SCF-mapped frameworks, including ISO 27001, NIST CSF, DORA, and many others, through natural language queries.
    14
    640 PyPI
    9
    Apache 2.0