Skip to main content
Glama
didit-protocol

Didit MCP Server

Official

Didit MCP Server

The official Model Context Protocol server for Didit — bring KYC, KYB, AML screening, transaction monitoring, biometrics, and full workspace operations to Claude, Cursor, VS Code, Windsurf, Zed, and any MCP client.

  • 130+ tools across sessions, workflows, vendor users/businesses, transactions, the standalone verification APIs, lists, cases, reports, webhooks, and billing.

  • Auth is "Log in with Didit" (OAuth 2.1 + PKCE) — the MCP acts as the signed-in user with their role's permissions. There is no API-key mode: every tool calls the user-scoped console endpoints, which only accept a Bearer token.

  • Every tool calls a single Didit REST endpoint and returns the JSON verbatim.

Full documentation: https://docs.didit.me/integration/mcp/overview

Quick start

No install, no API key — point your client at the hosted URL and sign in via the browser:

https://mcp.didit.me/mcp

Claude Code

claude mcp add --transport http didit https://mcp.didit.me/mcp

Cursor (~/.cursor/mcp.json)

{ "mcpServers": { "didit": { "url": "https://mcp.didit.me/mcp" } } }

Windsurf / Zed (via the mcp-remote bridge)

{ "mcpServers": { "didit": { "command": "npx", "args": ["-y", "mcp-remote@latest", "https://mcp.didit.me/mcp"] } } }

See per-client setup for Claude Desktop and VS Code.

Cursor plugin

This repository includes a Cursor plugin manifest at .cursor-plugin/plugin.json. The plugin uses the hosted OAuth server configured in .mcp.json, the existing Didit rule in rules/, and the icon in assets/. No local server, API key, or environment variables are required. Sign in with your Didit account when Cursor requests authorization. The connection uses your existing organization roles and permissions.

Example requests:

  • "Show my Didit organizations and applications."

  • "List my verification workflows."

  • "Create a sandbox verification link using my selected workflow."

  • "Show verification analytics for the last seven days."

  • "List the webhooks configured for my application."

Tool results may contain customer and verification data from the workspace you authorize. Only request information you are authorized to access and share with your AI client. Review proposed changes before approving write or destructive actions. Disconnect Didit in your client's MCP settings when you no longer need the connection.

See the Privacy Policy and legal terms. For support, contact hello@didit.me or open a GitHub issue.

The presence of this package does not imply marketplace approval. Publishers can submit the public repository through Cursor's publishing form.

Related MCP server: APIVerve MCP Server

Authentication

The MCP is an OAuth 2.1 resource server; the Didit console (business.didit.me) is the authorization server. On first connect your client opens a browser, you Log in with Didit and approve the scopes, and the MCP then acts as you — across every organization you belong to, with your role's permissions. Tokens are short-lived and refreshed automatically.

Scopes: didit:management (workspace operations) and didit:verification (running checks). Your console role is enforced server-side on every call.

There is no API-key mode. Every tool targets the user-scoped console endpoints (/organization/{org}/application/{app}/…), which authorize a Bearer token with per-role privileges and reject x-api-key. (For raw REST access with an application API key — e.g. creating sessions from your backend — use the REST API directly, not this server.)

See Authentication.

Tools

130+ tools, grouped by area. The full catalogue with read/write/destructive markers is in docs/TOOLS.md and at docs.didit.me. Highlights:

  • Discovery & cross-app: didit_context_get, didit_session_search, didit_transaction_search, didit_vendor_user_search, didit_analytics — aggregate across every org/app in one call.

  • Sessions: create, list, get decision, update status, reviews, bulk import.

  • Verification APIs: didit_verify_id, didit_verify_aml, didit_verify_face_match, didit_verify_kyb_search, …

  • Workflows (incl. branching graphs): didit_workflow_search, didit_workflow_get_graph, didit_workflow_edit_graph — build conditional/branching workflows (fuzzy-match conditions, Document-AI steps) by sending small ops; large feature configs are kept server-side, never resent. didit_workflow_get_id_verification_methods_catalog and didit_workflow_get_kyb_registry_catalog answer the server-driven questions a config write depends on (which countries offer non-doc lookup / wallets, which KYB data tiers and monitoring a country's registries sell).

  • Compliance: transaction monitoring, custom and preset rule management with backtesting, lists/blocklist/allowlist, cases, reports, audit logs, alerts.

  • Workspace: questionnaires, webhooks, members, billing, branding.

File inputs

Tools that consume files (face upload, ID/PoA/liveness/face/age verification, branding) accept the file in one of two forms:

  • *_path — an absolute path on the machine running the MCP server. Only works for local/stdio runs (e.g. Claude Code with a local server), where your files and the server share a filesystem.

  • *_base64 — the file content inline, as raw base64 or a data: URL. Use this against the hosted endpoint; it is how the Didit Console Copilot passes chat attachments (its agent resolves attachment references like att_1 into base64 before the call reaches the MCP).

Both forms enforce the same 15MB cap and magic-bytes allow-list (png/jpg/jpeg/webp/gif/bmp/ico/pdf). The hosted transport's JSON body limit is 25MB (MCP_JSON_BODY_LIMIT).

Run it yourself

The hosted server above is the easy path — no install. To self-host, clone this repo and run it with Docker or Node. It authenticates the user the same way (OAuth, or a user Bearer token for headless runs); there is no API-key mode.

git clone https://github.com/didit-protocol/mcp.git && cd mcp

# Docker (recommended) — serves /mcp and /healthz on port 3000
docker build -t didit-mcp . && docker run -p 3000:3000 --env-file .env didit-mcp

# …or with Node
npm install && npm run build
node dist/http.js                                          # hosted HTTP/OAuth
DIDIT_ACCESS_TOKEN=<user-access-token> node dist/index.js  # stdio (headless)

All Didit base URLs and OAuth endpoints are environment variables with public defaults (verification.didit.me, apx.didit.me, business.didit.me) — override them for a private deployment. See ARCHITECTURE.md and .env.example for the full reference.

Workflow feature configuration

Every workflow feature node takes a config object. The tables below are the complete contract - what didit_workflow_create, didit_workflow_update, didit_workflow_validate_graph, didit_workflow_set_graph and didit_workflow_edit_graph accept, and what the API stores. A key that is not listed here is not part of the contract and is dropped silently on save.

didit_workflow_get_feature_config_schema returns the same data as JSON at runtime.

Generated from schema/feature-config-schema.json (contract sha256:200a66d7054aaf6cdddd94d7bd9c62050912862bf6e291908b667b20436ef4cd, schema version 1), which is a copy of the artifact service-didit-verification generates from its feature-config serializers. Do not edit by hand — run npm run schema:readme.

AGE_ESTIMATION

Configuration for Age Estimation feature.

Key

Type

Accepts

Meaning

borderline_maximum_age_threshold

integer | null

integer >=1 <=100

borderline_minimum_age_threshold

integer | null

integer >=1 <=100

enable_id_verification_fallback

boolean | null

boolean

external_capture_device_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when an external capture device is detected.

face_audio_recording_enabled

boolean | null

boolean

Record the microphone during the selfie capture, so a reviewer can hear the session. Off by default.

face_liveness_duplicated_face_name_mismatch_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when a duplicate face is found under a different name.

face_liveness_flash_mode

string | null

string

face_liveness_max_attempts

integer | null

integer >=1 <=3

face_liveness_method

string | null

'ACTIVE_3D'|'FLASHING'|'PASSIVE'

face_liveness_multiple_faces_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when more than one face is present in the capture.

face_liveness_possible_duplicated_face_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when this face matches a previously seen user.

face_liveness_score_decline_threshold

number | null

number

face_liveness_score_review_threshold

number | null

number

face_luminance_max_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the selfie is brighter than face_luminance_max_threshold.

face_luminance_max_threshold

integer | null

integer >=0 <=100

face_luminance_min_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the selfie is darker than face_luminance_min_threshold.

face_luminance_min_threshold

integer | null

integer >=0 <=100

face_privacy_mode_enabled

boolean | null

boolean

face_quality_decline_threshold

integer | null

integer >=0 <=100

face_quality_review_threshold

integer | null

integer >=0 <=100

frame_injection_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when injected video frames are detected.

minimum_age_threshold

integer | null

integer >=1 <=100

screen_capture_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the selfie is a photo of a screen.

status_rules

array

array

virtual_camera_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when a virtual camera feed is detected.

AML

Configuration for AML feature (used for both KYC AML and KYB Company AML).

Key

Type

Accepts

Meaning

aml_country_weight

integer | null

integer >=0 <=100

aml_dob_weight

integer | null

integer >=0 <=100

aml_match_score_threshold

integer | null

integer >=0 <=100

aml_name_weight

integer | null

integer >=0 <=100

aml_score_approve_threshold

integer | null

integer >=0 <=100

aml_score_review_threshold

integer | null

integer >=0 <=100

case_blueprint

uuid | null

uuid

Which case blueprint the automatically-created case is built from. Only meaningful with create_cases_on_hit; the account default is used when unset.

create_cases_on_hit

boolean | null

boolean

Open a case automatically when the screening returns a hit, instead of leaving the hit to be triaged from the session. Off by default.

fallback_to_native

boolean | null

boolean

is_aml_ongoing_monitoring_enabled

boolean | null

boolean

Keep screening the PERSON after the session is approved, raising a new hit when they later appear on a watchlist. Off by default.

kyb_company_aml_country_weight

integer | null

integer >=0 <=100

kyb_company_aml_dob_weight

integer | null

integer >=0 <=100

kyb_company_aml_match_score_threshold

integer | null

integer >=0 <=100

kyb_company_aml_name_weight

integer | null

integer >=0 <=100

kyb_enable_ongoing_monitoring

boolean | null

boolean

The same, for the COMPANY on a KYB workflow. The two switches are independent.

kyb_score_approve_threshold

integer | null

integer >=0 <=100

kyb_score_review_threshold

integer | null

integer >=0 <=100

provider_key

string | null

string

status_rules

array

array

DATABASE_VALIDATION

Configuration for Database Validation feature.

The node is opt-in and does nothing while database_validation_countries is empty - the editor blocks publishing in that state and the compliance check reports it as a gap. Place it after the step that produces its inputs (usually OCR), and use database_validation_field_sources only for inputs no upstream step can fill.

Key

Type

Accepts

Meaning

database_validation_countries

json | null

{"": {"services": ["", ...]}}

The databases to check, per country - this node runs NOTHING until at least one country carries at least one service id. Service ids come from the country's live catalog (e.g. bra_cpf for BRA); ids that do not belong to the named country, and countries with no live service, are dropped on save. The legacy {"<ISO3>": "one_by_one"|"two_by_two"|"not_enabled"} shape is still accepted and auto-expanded to that country's live services.

database_validation_field_sources

json | null

{"": {"source": "document_ai"|"questionnaire"|"expected_data", "key": "||expected_details.|metadata."}}

Where to read a database input that no earlier step in the graph can fill. source names the producer and key names the value inside it: a Document AI field key for document_ai, a questionnaire node id for questionnaire, and expected_details.<field> or metadata.<key> for expected_data. Exact-key matches against an upstream step resolve automatically and are deliberately not persisted, so renaming a Document AI field never freezes a stale mapping into the config. A malformed entry is dropped on save rather than rejected, which un-satisfies its service and drops it from the selection.

database_validation_no_match_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the database returns no match at all.

database_validation_not_applicable_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when no selected database covers the holder's country or document.

database_validation_partial_match_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the database matches some, but not all, of the submitted fields.

status_rules

array

array

DOCUMENT_AI

Configuration for the Document AI feature.

At most 3 documents per node, field keys unique within a document, and at most one field per document may set is_full_name (it is optional - a document may mark none).

Key

Type

Accepts

Meaning

document_ai_document_tampering_action

string | null

'REVIEW'|'DECLINE'

Verdict when the document looks tampered with.

document_ai_documents

array

array

document_ai_max_attempts_exceeded_action

string | null

'REVIEW'|'DECLINE'

Verdict when the user runs out of document_ai_max_retry_attempts.

document_ai_max_retry_attempts

integer | null

integer >=2 <=5

document_ai_missing_required_fields_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when a field marked required could not be extracted.

document_ai_name_match_score_threshold

integer | null

integer >=0 <=100

document_ai_name_mismatch_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the field flagged is_full_name disagrees with the verified identity's full name, scored against document_ai_name_match_score_threshold.

document_ai_unreadable_document_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the uploaded document cannot be read at all.

document_ai_unsupported_file_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the uploaded file type is not supported.

status_rules

array

array

EMAIL_VERIFICATION

Configuration for Email Verification feature.

Key

Type

Accepts

Meaning

breached_email_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the address appears in a known credential breach.

cross_org_fraud_email_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when this address was flagged as fraudulent by another organization in the network.

disposable_email_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the address belongs to a disposable-mail provider.

duplicated_email_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the address was already verified for this application.

email_alphanumeric_code

boolean | null

boolean

email_code_size

integer | null

integer >=4 <=8

email_enrichment_enabled

boolean | null

boolean

email_intelligence_score_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the enrichment score is worse than email_intelligence_score_threshold.

email_intelligence_score_threshold

integer | null

integer >=0 <=100

email_max_check_attempts

integer | null

integer >=1 <=5

email_max_retries

integer | null

integer >=1 <=5

frequent_email_breach_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the address appears in many breaches.

only_corporate_emails_allowed

boolean | null

boolean

recent_email_breach_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the address appears in a recent breach.

status_rules

array

array

FACE_MATCH

Configuration for Face Match feature.

Key

Type

Accepts

Meaning

face_match_eyes_covered_action

string

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when calibrated evidence says the eyes region is covered in the selfie. NO_ACTION records evidence without changing Face Match; REVIEW sends Face Match to review; DECLINE declines it. The signal remains shadow-only until the region reports calibrated=true.

face_match_face_covered_action

string

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when calibrated evidence says the face region is covered in the selfie. NO_ACTION records evidence without changing Face Match; REVIEW sends Face Match to review; DECLINE declines it. The signal remains shadow-only until the region reports calibrated=true.

face_match_max_attempts

integer | null

integer >=1 <=3

face_match_mouth_covered_action

string

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when calibrated evidence says the mouth region is covered in the selfie. NO_ACTION records evidence without changing Face Match; REVIEW sends Face Match to review; DECLINE declines it. The signal remains shadow-only until the region reports calibrated=true.

face_match_not_computed_action

string | null

'REVIEW'|'DECLINE'

Verdict when no face-match score could be produced (missing portrait or selfie).

face_match_score_decline_threshold

integer | null

integer >=0 <=100

face_match_score_review_threshold

integer | null

integer >=0 <=100

status_rules

array

array

IP_ANALYSIS

Configuration for Device & IP Analysis feature.

Key

Type

Accepts

Meaning

automation_detected_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the session looks driven by automation rather than a person.

cross_org_fraud_device_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when this device was flagged as fraudulent by another organization in the network.

cross_org_fraud_ip_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when this IP was flagged as fraudulent by another organization in the network.

device_app_tampered_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the host application binary looks tampered with.

device_blocklist_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the device is on the organization's block list.

device_debugger_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when a debugger is attached to the host application.

device_emulator_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the device is an emulator rather than real hardware.

device_hooking_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when runtime hooking or instrumentation is detected.

device_integrity_missing_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when no platform device-integrity attestation was returned.

device_rooted_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the device is rooted or jailbroken.

duplicated_device_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when this device was already used by another verified user.

duplicated_ip_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when this IP was already used by another verified user.

expected_ip_mismatch_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the IP disagrees with the expected IP sent on the session.

ip_geofencing_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the connecting IP's country is not allowed by ip_geofencing_by_country.

ip_geofencing_by_country

json | null

{"": {"allowed": true|false, "states"?: {"": {"allowed": true|false}} | null}}

Country allow/deny rules for the connecting IP address, applied only while is_ip_geofencing_enabled is true. allowed is required and must be a real boolean; states is optional and null when the country needs no per-state rule. Countries that are not valid ISO3 are dropped on save.

ip_mismatch_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the IP country disagrees with the document's issuing country.

is_ip_geofencing_enabled

boolean | null

boolean

multiple_devices_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the session was driven from more than one device.

recovered_device_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the device reports a recovered or restored state.

status_rules

array

array

vpn_detection_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the connection comes through a VPN, proxy or Tor exit.

KYB_DOCUMENTS

Key

Type

Accepts

Meaning

kyb_document_age_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when a document is older than its configured freshness window.

kyb_document_critical_mismatch_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when a document contradicts the registry on a critical company detail.

kyb_document_max_attempts_exceeded_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the user runs out of kyb_document_max_retry_attempts.

kyb_document_max_retry_attempts

integer | null

integer >=1 <=5

kyb_document_non_critical_mismatch_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when a document contradicts the registry on a minor detail.

kyb_document_subtype_config

json | null

{"<KYB_DOCUMENT_GROUP|KYB_DOCUMENT_SUBTYPE>": {"enabled": true|false, "max_age_days": <0-3650>|-1|null}}

Per-group or per-subtype switch and freshness window. Keys must be a known KYB document group or subtype code. max_age_days is null for the default window, -1 for unlimited, or an integer 0-3650; anything else is rejected.

kyb_document_tampering_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when a company document looks tampered with.

kyb_required_document_groups

json | null

["", ...]

The company paperwork to collect, as a list of document-GROUP codes - each group is satisfied by any one of the document types it covers. The KYB Documents feature refuses to save with an empty list: a node that requires nothing is the same as not having the node.

status_rules

array

array

KYB_KEY_PEOPLE

The workflow ids here point at separate KYC workflows: a KYB graph verifies the company, and the people behind it are verified by the linked person workflows.

Key

Type

Accepts

Meaning

kyb_corporate_ubo_verification_workflow

uuid | null

uuid

kyb_key_people_company_fields

json | null

[{"key": "", "label": "", "type": "text"|"number"|"date"|"phone"|"email", "required": true|false, "custom": true|false}]

Which company details are collected for a CORPORATE key person. Same list-of-descriptors shape and same rules as kyb_key_people_person_fields.

kyb_key_people_document_mismatch_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when a key person's document disagrees with the details declared for them.

kyb_key_people_ownership_required

boolean | null

boolean

kyb_key_people_person_fields

json | null

[{"key": "", "label": "", "type": "text"|"number"|"date"|"phone"|"email", "required": true|false, "custom": true|false}]

Which personal details are collected for an individual key person, as an ORDERED LIST of field descriptors (not a map). key is required and non-empty; type must be one of text, number, date, phone or email; custom marks a field the customer added rather than one of the built-ins.

kyb_key_people_prefill_from_registry

boolean | null

boolean

Pre-fill the key-people list from the company registry result, so the customer confirms and corrects rather than typing every officer and shareholder in.

kyb_notify_parties_by_email

boolean | null

boolean

kyb_officer_verification_workflow

uuid | null

uuid

kyb_reject_if_ubo_rejected

boolean | null

boolean

kyb_require_corporate_ubo_kyb

boolean | null

boolean

kyb_require_officer_kyc

boolean | null

boolean

kyb_require_ubo_kyc

boolean | null

boolean

kyb_reuse_verified_individuals

boolean | null

boolean

kyb_role_config

json | null

{"": {"enabled"?: true|false, "require_kyc"?: true|false, "verification_workflow"?: ""|null, "allow_skip"?: true|false}}

Per-role rules for the people behind the company. Role keys come from the existing config - never invent one. A role with require_kyc: true MUST also carry a verification_workflow (the uuid of a separate KYC workflow) or the save is rejected. A list of {"role": ..., ...} entries is accepted as an alternative to the map.

kyb_shareholder_ownership_threshold

integer | null

integer >=0 <=100

kyb_shareholder_verification_workflow

uuid | null

uuid

kyb_ubo_ownership_threshold

integer | null

integer >=0 <=100

kyb_ubo_verification_workflow

uuid | null

uuid

kyb_wait_for_all_ubos

boolean | null

boolean

status_rules

array

array

KYB_REGISTRY

Key

Type

Accepts

Meaning

kyb_accepted_countries

json | null

["", ...]

Which company-registry countries the business may be incorporated in, as a list of ISO-2 codes (note: ISO-2 here, unlike the ISO-3 used by the OCR and IP allow-lists). An empty list or null accepts every supported registry.

kyb_manual_company_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the company could not be found in a registry and was entered by hand.

kyb_registry_countries_config

json | null

{"": {"enabled": true|false, "tier": "basic"|"shareholders"|"ubo"}}

Per-country registry routing configuration. Each enabled country selects the data tier charged when a company is selected. Only tiers marked available by the pricing endpoint can be enabled. At least one country must be enabled: a registry check that searches nowhere is rejected. Manual company entry does not use this configuration and is billed at its own flat fee of USD 0.75 per company.

kyb_registry_fields_config

json | null

{"": {"enabled"?: true|false, "required"?: true|false}}

Per-registry-field overrides controlling which company details are collected and which of them are mandatory. Field keys come from the backend's configurable-field catalog (registration_number, incorporation_date, legal_address, vat_number, alternative_names, tax_number, company_type, legal_entity_identifier, location_of_registration, nature_of_business, registered_capital_amount, registered_capital_currency, website, email, phone, ...); an unknown key, or any sub-key other than enabled / required, is rejected.

kyb_registry_monitoring_enabled

boolean | null

boolean

Keep the COMPANY's registry record under continuous monitoring after a Shareholders or UBO result: changes of status, officers, ownership or address move the session back to review and fire a webhook. Only where the registry provider offers monitoring; USD 2.00 per company per year, cancellable at any time. Off by default.

kyb_vat_invalid_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the VAT number is rejected by the tax authority.

kyb_vat_unverified_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the VAT number could not be checked at all.

status_rules

array

array

LIVENESS

Configuration for Liveness feature.

Key

Type

Accepts

Meaning

cross_org_fraud_face_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Deprecated and no longer applied. It treated a face as if it carried a fraud verdict. Use cross_org_identity_claim_pattern_action.

cross_org_identity_claim_pattern_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when other organizations in the network recorded identity-claim events for this same person in which the claimed identity did not match. Review or no action only - a decline set here is downgraded to review.

external_capture_device_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when an external capture device is detected.

face_audio_recording_enabled

boolean | null

boolean

Record the microphone during the selfie capture, so a reviewer can hear the session. Off by default.

face_liveness_duplicated_face_name_mismatch_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when a duplicate face is found under a different name.

face_liveness_flash_mode

string | null

string

face_liveness_max_attempts

integer | null

integer >=1 <=3

face_liveness_method

string | null

'ACTIVE_3D'|'FLASHING'|'PASSIVE'

face_liveness_mode

string | null

string

face_liveness_multiple_faces_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when more than one face is present in the capture.

face_liveness_possible_duplicated_face_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when this face matches a previously seen user.

face_liveness_score_decline_threshold

integer | null

integer >=0 <=100

face_liveness_score_review_threshold

integer | null

integer >=0 <=100

face_luminance_max_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the selfie is brighter than face_luminance_max_threshold.

face_luminance_max_threshold

integer | null

integer >=0 <=100

face_luminance_min_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the selfie is darker than face_luminance_min_threshold.

face_luminance_min_threshold

integer | null

integer >=0 <=100

face_privacy_mode_enabled

boolean | null

boolean

face_quality_decline_threshold

integer | null

integer >=0 <=100

face_quality_review_threshold

integer | null

integer >=0 <=100

frame_injection_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when injected video frames are detected.

race_map_similarity_thresholds

json

{"": {"possible": 0-100, "high": 0-100}}

Per-demographic overrides of the face-similarity bands used against the allow-list and duplicate-face sets, so match rates stay even across groups. possible is the lower band (defaults to 62) and high the upper (68); a group with no entry uses those defaults.

screen_capture_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the selfie is a photo of a screen.

status_rules

array

array

virtual_camera_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when a virtual camera feed is detected.

NFC

Configuration for NFC/ePassport feature.

Key

Type

Accepts

Meaning

allow_nfc_skip

boolean | null

boolean

skip_nfc_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the user skips the NFC chip read (only reachable with allow_nfc_skip).

status_rules

array

array

trust_anchor_missing_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when chip data-group hashes are intact but the certificate chain cannot be verified because the issuing country's CSCA trust anchor is not loaded.

unverified_chip_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the chip is read but its signature cannot be verified.

OCR

Configuration for OCR/ID Verification feature.

Omitting documents_allowed stores the full country/document catalog, so the node accepts everything. Put OCR before any feature that reads identity data from the document (FACE_MATCH, NFC, DATABASE_VALIDATION).

Key

Type

Accepts

Meaning

age_restrictions_by_country

json | null

{"": {"minimum_age": 1-120, "maximum_age": 1-120|null, "states"?: {"": {"minimum_age": 1-120, "maximum_age": 1-120|null}}}}

Per-country (and optionally per-state) age gate. minimum_age is required for every country listed; maximum_age may be null.

cross_org_fraud_document_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when this document was flagged as fraudulent by another organization in the network.

document_audio_recording_enabled

boolean | null

boolean

Record the microphone during document capture, so a reviewer can hear the session. Off by default.

document_blur_fields_by_country

json | null

{"": ["", ...]}

Fields to blur out of the stored document image, per country. Only fields the country's document layout supports are accepted.

document_liveness_portrait_replace_decline_threshold

integer | null

integer >=0 <=100

document_liveness_portrait_replace_review_threshold

integer | null

integer >=0 <=100

document_liveness_printed_copy_decline_threshold

integer | null

integer >=0 <=100

document_liveness_printed_copy_review_threshold

integer | null

integer >=0 <=100

document_liveness_screen_replay_decline_threshold

integer | null

integer >=0 <=100

document_liveness_screen_replay_review_threshold

integer | null

integer >=0 <=100

document_or_personal_number_format_mismatch_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the document or personal number does not match the country's expected format.

document_selfie_portrait_match_decline_threshold

integer | null

integer >=0 <=100

document_selfie_portrait_match_review_threshold

integer | null

integer >=0 <=100

document_without_portrait_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the scanned document family carries no portrait on any side. Node-config only - there is no account-level setting; the runtime default is REVIEW.

documents_allowed

json | null

{"": {"": {"enabled": 0|1, "sides"?: 1|2, "subtypes"?: ["", ...]}}}

Which identity documents are accepted, per issuing country. Omit the key entirely to accept the full catalog; an empty object means the same thing. At least one document must end up enabled or the save is rejected.

duplicated_user_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the identity was already verified for this application.

expected_details_mismatch_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the extracted identity contradicts the expected_details sent with the session.

expiration_date_not_detected_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when no expiry date could be read from the document.

id_document_quality_threshold

integer | null

integer >=0 <=100

id_verification_max_retry_attempts

integer | null

integer >=2 <=5

id_verification_name_match_score_threshold

integer | null

integer >=0 <=100

image_capture_methods_allowed

array | null

["CAMERA_SCAN" | "UPLOAD", ...]

Capture methods the end user may use for the document photo. Declared as a list of free strings, so the vocabulary is not in the field itself: CAMERA_SCAN (live capture) and UPLOAD (pick an existing file). An empty list falls back to the account default.

image_quality_too_low_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when overall document image quality is below the bar.

image_too_blurry_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the captured document image is too blurry to trust.

image_too_bright_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the captured document image is overexposed.

image_too_dark_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the captured document image is underexposed.

inconsistent_data_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the document's own fields contradict each other.

invalid_code_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when a document check digit or barcode fails validation.

invalid_mrz_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the machine-readable zone is missing or inconsistent.

invalid_validation_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when a document authenticity validation fails.

is_age_restrictions_enabled

boolean | null

boolean

is_document_selfie_portrait_match_enabled

boolean | null

boolean

is_image_capture_review_screen_enabled

boolean | null

boolean

Show the user a review screen after each document capture, letting them retake the photo before it is submitted. Off by default.

is_ocr_id_verification_data_review_enabled

boolean | null

boolean

Let the user review and correct the extracted identity data before the step completes. Off by default. A correction is scored against ocr_id_verification_data_review_critical_fields, and a disagreement takes the critical or the minor action accordingly. The review still runs when the workflow includes NFC - a later chip read simply supersedes it.

maximum_age

integer | null

integer >=1 <=120

maximum_age_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the holder is older than maximum_age.

methods

json | null

{"": {"document": {"enabled": bool}, "id_lookup": {"enabled": bool, "max_attempts": 1-5, "skip_liveness_and_face_match": bool, "on_partial_match": "fallback_to_document"|"decline", "on_no_match": "fallback_to_document"|"decline", "on_provider_error": "fallback_to_document"|"decline", "response_fields"?: ["", ...]}, "wallet": {"enabled": bool, "providers": ["", ...], "on_failure": "fallback_to_document"|"decline"}}}

Which ID verification methods each country may use: document capture (today's behaviour), non-doc lookup against a government or other authoritative source, and digital identity wallets. Omit the key, or a country, or a method, and that country is document only. Every method must be available for the country in the capability catalog (GET workflow-graph/id-verification-methods-catalog/); wallets are an accept-list with no ordering. Each fallback is fallback_to_document or decline; max_attempts (1-5, default 1) counts only lookups the registry answered.

minimum_age

integer | null

integer >=1 <=120

minimum_age_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the holder is younger than minimum_age.

ocr_id_verification_data_review_critical_fields

array | null

["first_name" | "last_name" | "date_of_birth" | ...]

Which extracted identity fields count as critical when the user edits the OCR result, so a mismatch takes the critical action rather than the minor one.

ocr_id_verification_data_review_critical_mismatch_action

string | null

'REVIEW'|'DECLINE'

Verdict when the user's edit disagrees with OCR on a critical field.

ocr_id_verification_data_review_minor_mismatch_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the user's edit disagrees with OCR on a non-critical field.

status_rules

array

array

unparsed_address_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the document address could not be parsed into components.

PHONE_VERIFICATION

Configuration for Phone Verification feature.

Key

Type

Accepts

Meaning

code_size

integer | null

integer >=4 <=8

cross_org_fraud_phone_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when this number was flagged as fraudulent by another organization in the network.

disposable_number_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the number belongs to a disposable-number provider.

duplicated_phone_number_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the number was already verified for this application.

fallback_to_native

boolean | null

boolean

high_risk_phone_action

string | null

'REVIEW'|'DECLINE'

Verdict when the number carries a high risk signal.

low_phone_trust_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the trust index is below phone_trust_index_threshold.

phone_enrichment_enabled

boolean | null

boolean

phone_intelligence_score_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the enrichment score is worse than phone_intelligence_score_threshold.

phone_intelligence_score_threshold

integer | null

integer >=0 <=100

phone_max_check_attempts

integer | null

integer >=1 <=5

phone_max_retries

integer | null

integer >=1 <=5

phone_shared_device_mode

boolean | null

boolean

phone_trust_index_threshold

integer | null

integer >=0 <=100

phone_type_risk_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the line type itself is considered risky.

phone_verification_countries

json | null

{"": {"<channel: sms|whatsapp|telegram|rcs|viber|zalo>": {"enabled": true|false, "max_retries": } | true|false}}

Which countries and delivery channels the one-time code may be sent through. It is a WHITELIST: a country absent from the map is not offered at all, and a channel absent from a listed country is skipped. max_retries overrides the node-level retry cap for that one channel. A bare boolean is the legacy form and still means enabled/disabled with the node-level cap.

provider_key

string | null

string

recent_port_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the number was ported to a new carrier recently.

status_rules

array

array

voip_number_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the number is VoIP rather than a real subscriber line.

PROOF_OF_ADDRESS

Configuration for Proof of Address feature.

Key

Type

Accepts

Meaning

poa_document_authenticity_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the document fails authenticity checks.

poa_document_issues_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the document is damaged, cropped or otherwise unusable.

poa_documents_allowed

json | null

{"": {"": {"enabled": 0|1, "sides"?: 1|2, "subtypes"?: ["", ...]}}}

Which proof-of-address documents are accepted, per issuing country. Same shape as OCR's documents_allowed; omit to accept the full catalog.

poa_issue_date_not_detected_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when no issue date could be read from the document.

poa_issuer_not_identified_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the issuing company or authority cannot be identified.

poa_languages_allowed

json | null

{"": 0|1}

Languages the proof-of-address document may be written in, as a flag per language code. Omit to accept every supported language.

poa_max_attempts_exceeded_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the user runs out of poa_max_retry_attempts.

poa_max_retry_attempts

integer | null

integer >=2 <=5

poa_name_match_score_threshold

integer | null

integer >=0 <=100

poa_name_or_address_mismatch_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the name or address on the document disagrees with the verified identity.

poa_unparsable_or_invalid_address_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the address on the document cannot be parsed or is not a real address.

poa_unsupported_document_type_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the uploaded document is not one of poa_documents_allowed.

poa_unsupported_language_action

string | null

'NO_ACTION'|'REVIEW'|'DECLINE'

Verdict when the document language is not one of poa_languages_allowed.

status_rules

array

array

QUESTIONNAIRE

Configuration for Questionnaire feature.

Key

Type

Accepts

Meaning

questionnaire_uuid

uuid | null

uuid

review_questionnaire_manually

boolean | null

boolean

status_rules

array

array

Contributing

The feature-config contract above is generated - never hand-write a config key into a tool description. See CONTRIBUTING.md for the regeneration workflow and the checks that enforce it.

Issues and PRs welcome — see CONTRIBUTING.md. Run the hosted server at mcp.didit.me/mcp, or self-host from this repo (Docker / Node) — see Run it yourself.

License

MIT © Didit Protocol

Available Tools

121 tools
didit_account_loginBInspect

Login to existing Didit account. Returns access_token and refresh_token.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes
passwordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations for side effects; description only mentions token return, omitting potential rate limits, session creation, or prerequisites like account verification.

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

Conciseness3/5

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

Two sentences are concise but too sparse, missing essential behavioral and parameter details.

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

Completeness2/5

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

With two required parameters and a significant sibling set, the description omits important context like error handling and usage in authentication flows.

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

Parameters1/5

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

Schema coverage is 0% and description adds no parameter information beyond field names, failing to explain format or constraints for email and password.

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 'Login to existing Didit account' with specific verb and resource, and distinguishes from sibling tools like didit_account_register and didit_account_verify_email.

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?

Implies usage for logging into an existing account, but lacks explicit when-not-to-use or alternative guidance despite having relevant siblings.

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

didit_account_registerAInspect

Register a new Didit account. A 6-character verification code is sent to the email. Follow up with didit_account_verify_email.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address
passwordYesPassword (min 8 chars, must include uppercase, lowercase, digit, special char)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate the tool is not read-only (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds that a verification code is sent to the email, which is a key behavioral trait beyond the schema 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 two sentences, directly stating the purpose and the next step. Every word is informative, 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?

Given the presence of an output schema, the description adequately covers the registration process, email verification, and follow-up. It is missing potential error conditions or prerequisites, but is sufficiently complete for a simple registration 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 coverage is 100% with clear descriptions for both email and password. The description does not add any additional meaning beyond what the schema already provides, so it meets the baseline.

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

Purpose5/5

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

The description clearly states the action ('Register') and the resource ('new Didit account'). It also distinguishes from siblings like didit_account_login and didit_account_verify_email, making the 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 Guidelines4/5

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

The description explicitly says to follow up with didit_account_verify_email, guiding the next step. However, it does not provide explicit exclusions or conditions for when to use this tool instead of others, but the context of account registration is clear.

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

didit_account_resend_otpAInspect

Resend the 6-character email verification code for a pending registration. Codes expire after 10 minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address the code was originally sent to

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations are minimal (readOnlyHint=false, destructiveHint=false). The description adds the behavioral trait that codes expire after 10 minutes, which provides useful context, though it does not clarify if resending invalidates the previous code.

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 unnecessary words. The action is front-loaded, making it quick to understand.

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 resend OTP tool with one parameter and an output schema (not shown), the description covers the core action and a key constraint (expiry). It could mention restrictions like requiring a pending registration, but overall it's 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?

The schema describes the 'email' parameter with coverage 100%. The description does not add further meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Resend', the resource '6-character email verification code', and the context 'for a pending registration'. It effectively distinguishes from siblings like didit_account_verify_email and didit_account_register.

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 user needs a new verification code for a pending registration, but it does not explicitly state when not to use it or mention alternatives like didit_account_verify_email for code verification or didit_account_register for initial sign-up.

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

didit_account_verify_emailAInspect

Verify email with the 6-character code. Returns access_token, refresh_token, organization, application (with client_id and api_key).

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes
codeYes6-character alphanumeric code from email

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations (readOnlyHint=false) indicate mutation, and the description adds that it returns access_token, refresh_token, etc. It also confirms the code length (6 characters). However, it does not mention side effects like marking email as verified or any prerequisites.

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

Conciseness5/5

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

Two concise sentences: first sentence states purpose and code requirement, second enumerates return values. No extraneous information, front-loaded with key action.

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 and returns, which suffices for a simple verification tool. Output schema exists to detail return formats. However, it doesn't address prerequisites (e.g., user must have an account) or explain what happens if the code is invalid.

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 50% (code has description, email does not). The description does not add meaning beyond the schema: it mentions the code is 6-character but doesn't elaborate on email format or constraints. Given borderline coverage, a score of 3 is appropriate.

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

Purpose5/5

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

Description clearly states 'Verify email with the 6-character code', which is a specific verb and resource. It distinguishes from sibling tools like didit_verify_email_send (sending code) and didit_verify_email_check (checking status), 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 implies usage after receiving a code via email, but does not explicitly state when to use this tool versus alternatives (e.g., resend code, check verification status). No 'when-not' or exclusion criteria are provided.

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

didit_alert_configureCInspect

Configure an alert by type.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
alert_typeYes
dataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.3/5.0
Behavior2/5

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

Annotations indicate non-readOnly and non-destructive behavior. The description adds no additional context about side effects, authorization requirements, rate limits, or what actually happens during configuration. It does not contradict annotations but adds no 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.

Conciseness2/5

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

The description is extremely short (one sentence), but it is under-specified rather than concise. It restates the tool's name with minimal additional information, failing to earn its place by providing actionable detail.

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

Completeness2/5

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

Given the tool has 4 parameters (including a required alert_type and a nested data object) and an output schema, the description is severely incomplete. It does not explain how to use the parameters, what configurable options exist, or what the outcome is.

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

Parameters2/5

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

Schema description coverage is 50% (2/4 parameters described). The description does not explain the meaning or format of 'alert_type' or 'data' object. With borderline coverage, the description should add parameter-specific context, but it does not.

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

Purpose3/5

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

The description 'Configure an alert by type' uses a generic verb 'configure' that doesn't specify whether it creates, updates, or toggles alerts. It adds 'by type' which provides some distinction but still lacks precision. It does not differentiate from sibling tools like didit_alert_list.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like didit_alert_list or other configure-like tools. No when-to-use or when-not-to-use information is provided.

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

didit_alert_listA
Read-only
Inspect

List configured alerts.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read. The description adds no additional behavioral context such as pagination or filtering behavior. It is consistent but not additive.

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

Conciseness5/5

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

A single, direct sentence with no extraneous words. Front-loaded and efficient.

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?

The description is minimal but sufficient given the read-only hint and presence of an output schema. However, it could be more complete by mentioning that it returns a list of alerts or specifying scope (e.g., for an organization/application).

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 input schema fully documents both parameters with their descriptions. The tool description adds no further semantic value 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 'List configured alerts' clearly states the action (list) and specific resource (configured alerts). It distinguishes from sibling 'didit_alert_configure' which has a different purpose.

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 usage guidance is provided. The description does not mention when to use this tool versus alternatives like 'didit_alert_configure' or any other listing tools.

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

didit_allowlist_addAInspect

Add an entry to the allowlist (trusted, bypasses some checks).

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations indicate non-read-only and non-destructive behavior. The description adds that it 'bypasses some checks', but does not elaborate on what checks, authorization requirements, or other behavioral details. Some context is added, 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, efficient sentence with no unnecessary words. It is front-loaded and clear.

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

Completeness4/5

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

Given the tool's simplicity, the description covers the core action. However, it omits details on idempotency, behavior on duplicates, or constraints. The presence of an output schema partially compensates.

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 both parameters already described in the schema. The description does not add extra meaning 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 ('Add an entry') and the resource ('allowlist'), with additional context about its purpose ('trusted, bypasses some checks'). This distinguishes it from sibling tools like 'didit_blocklist_add'.

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 trusted entries that bypass checks, but does not explicitly state when to use this tool versus alternatives like 'didit_lists_entry_create' or 'didit_blocklist_add'. No when-not guidance is provided.

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

didit_analyticsA
Read-only
Inspect

Aggregate verification analytics ACROSS ALL your apps and organizations in one call — the efficient way to answer questions like "how many people tried phone verification but dropped off in the last 15 days?". Returns summed status counts (request_breakdown), a feature_funnel (how many sessions REACHED each step, e.g. PHONE_VERIFICATION), and a recomputed conversion_rate, for a date window. Omit organization_id/application_id to span everything; pass them to narrow.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_fromNoISO date lower bound (YYYY-MM-DD)
date_toNoISO date upper bound (YYYY-MM-DD)
last_n_daysNoRelative window: include only the last N days (sets date_from/date_to). Alternative to passing date_from/date_to.
include_timeseriesNoAlso return per-day time series (heavier). Default false.
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 destructiveHint=false, so the agent knows it is safe. The description adds valuable details about the return structure (status counts, feature funnel, conversion rate) and the optional timeseries, which is beyond annotation capabilities.

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. The first sentence states the core purpose and example; the second provides return fields and parameter usage. No redundancy or waste, 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?

Given the tool has 6 optional parameters and an output schema exists, the description covers the main use case, return fields, and scoping. It omits details about the timeseries parameter and exact format of outputs, but the output schema likely fills that gap. Overall, it is sufficiently complete for an agent to understand the tool's capability.

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 meaning by explaining the effect of omitting or passing organization_id/application_id, and clarifies that the tool spans everything by default. This goes beyond the schema's parameter descriptions.

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

Purpose5/5

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

The description clearly states it aggregates verification analytics across all apps and organizations, provides a concrete example question, and the specific verb 'Aggregate' distinguishes it from other tools that might process individual sessions or reports.

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 explains when to omit or pass organization_id/application_id to span or narrow the scope, providing clear context. However, it does not mention when not to use this tool versus alternative tools like session search or report exports.

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

didit_audit_log_listA
Read-only
Inspect

List audit-log entries for the application (who changed what).

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
cursorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so description's 'who changed what' adds minimal behavioral context. 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?

Single sentence, front-loaded with verb and noun, zero unnecessary 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?

Simple read-only list tool with output schema; description covers core purpose. Could mention pagination via cursor but not essential given schema.

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

Parameters2/5

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

67% schema description coverage is moderate but description adds no parameter meaning beyond what schema provides. Cannot compensate for cursor parameter lacking 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?

Description clearly states verb 'list' and resource 'audit-log entries', plus explanatory note 'who changed what'. It uniquely identifies this tool among many 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?

Implies usage for auditing changes but provides no explicit when-to-use, when-not-to-use, or alternatives. Sibling tools are not compared.

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

didit_blocklist_addBInspect

Add an entry to the blocklist (e.g. by vendor_data, document number, face).

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations indicate readOnlyHint false and destructiveHint false, so the description's 'Add' aligns. However, the description adds minimal behavioral context beyond annotations, such as handling of duplicate entries, authorization requirements, or confirmation of success.

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, direct sentence without extraneous words. It could be slightly more structured (e.g., bullet points for examples), but it is concise and front-loads the main action.

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

Completeness2/5

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

Despite having an output schema, the description lacks important context such as required permissions, error conditions, or side effects. Given the large sibling set, more guidance on when this tool is appropriate would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for both organization_id and application_id. The tool description adds no additional parameter meaning, so 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 clearly states the action (Add) and resource (blocklist), with examples of entry types (vendor_data, document number, face). This distinguishes it from related sibling tools like didit_blocklist_get and didit_blocklist_remove.

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 provides no guidance on when to use this tool versus alternatives (e.g., didit_allowlist_add) or any prerequisites. It only states what it does without contextual usage advice.

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

didit_blocklist_getA
Read-only
Inspect

List blocklist entries (blocked users/identifiers).

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description appropriately indicates a read operation. However, it adds no extra behavioral details such as pagination, return format, or parameter effects, which would be useful.

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 waste. It is front-loaded with the core action and immediately clarifies the content type.

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 simple read-only nature, the description is acceptable but lacks contextual details like the scope of listing (e.g., does it list all entries or only those matching optional filters?) and whether pagination is supported. The existence of an output schema partially compensates, but the description could be more precise.

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 2 parameters are fully described in the input schema (100% coverage), and the description adds no additional meaning beyond what the schema provides. The description does not elaborate on parameter usage or effects.

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 'List blocklist entries' with a parenthetical clarification of what entries are. This distinguishes it from sibling tools like didit_blocklist_add and didit_blocklist_remove.

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 provides no guidance on when to use this tool versus alternatives, nor any prerequisites or conditions. This leaves the agent to infer usage solely from the tool name and siblings.

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

didit_blocklist_removeB
Destructive
Inspect

Remove an entry from the blocklist.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true. The description does not add extra behavioral context beyond that, but it does not contradict annotations. Minimal additional 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?

Extremely concise: one sentence with no wasted words. Front-loads the core action effectively.

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

Completeness2/5

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

The description omits how to specify which entry to remove (no entry ID in input schema) and does not clarify the scope of removal (e.g., all entries for an org/application?). With an output schema present, return values are covered, but the description lacks essential context 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 coverage is 100%, so baseline is 3. The description does not add any meaning beyond what the schema already provides (e.g., no explanation of how organization_id/application_id identify the entry to remove).

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 'Remove an entry from the blocklist' uses a specific verb ('Remove') and resource ('blocklist entry'), clearly distinguishing it from sibling tools like didit_blocklist_add (add) and didit_blocklist_get (get).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., didit_blocklist_add, didit_blocklist_get). There is no mention of prerequisites or scenarios where removal is appropriate.

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

didit_branding_getA
Read-only
Inspect

Get the current branding customization (logos, colors) applied to your verification UI.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output 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 destructiveHint=false. The description adds value by specifying exactly what is retrieved (logos, colors) and the scope (verification UI). 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, front-loaded sentence that efficiently conveys the tool's purpose without any superfluous words.

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 tool with an output schema, the description fully explains what the tool does. The existence of an output schema covers 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?

No parameters are defined, so the baseline score is 4. The description adds no further information about parameters, 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 uses a specific verb 'Get' and defines the resource as 'branding customization (logos, colors)' applied to the 'verification UI'. It clearly distinguishes from the sibling tool didit_branding_update.

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 retrieving current branding settings, and the readOnlyHint annotation reinforces this. While it does not explicitly state when not to use, the presence of a sibling write tool provides clear context.

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

didit_branding_updateBInspect

Update verification UI branding images. Provide absolute file paths for the images you want to set.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_square_pathNoAbsolute path to a square logo image
image_rectangular_pathNoAbsolute path to a rectangular logo image
image_favicon_pathNoAbsolute path to a favicon image

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

Annotations already indicate non-read-only and non-destructive. The description adds only the requirement for absolute file paths, but does not disclose potential side effects, authentication needs, or what happens if a path is invalid.

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

Conciseness5/5

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

The description is extremely concise at two sentences, with no wasted words. It front-loads the main action and immediately follows with critical usage detail.

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

Completeness2/5

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

The description does not clarify whether partial updates are allowed (all parameters optional), what the output is (despite output schema existing), or any constraints on file formats/sizes. Missing context for safe 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?

With 100% schema description coverage, the schema already explains each parameter adequately. The description merely restates that paths must be absolute, adding no new semantic value 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 clearly states the action ('Update') and resource ('verification UI branding images'), with specific instruction about absolute file paths. It effectively distinguishes from the sibling didit_branding_get.

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 provide explicit when-to-use or when-not-to-use guidance, but it implies that this tool is for setting branding images, contrasting with the read-only sibling. No alternatives or exclusions are mentioned.

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

didit_case_createCInspect

Create a case.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, implying a non-destructive write operation. The description adds no behavioral context beyond the verb 'create', such as side effects, idempotency, or authentication requirements.

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

Conciseness3/5

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

The description is extremely concise at three words, but this comes at the cost of clarity and completeness. It is front-loaded but lacks sufficient information to stand alone.

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

Completeness2/5

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

Despite the presence of an output schema, the description fails to define what a 'case' is or explain the behavior when optional parameters are omitted. This leaves significant gaps for an agent 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?

Schema description coverage is 100%, with both parameters (organization_id, application_id) documented in the input schema. The description adds no additional meaning beyond what the schema already provides, meeting the baseline.

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

Purpose4/5

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

The description 'Create a case.' is a clear verb+noun that distinguishes the tool from sibling tools like didit_case_get, didit_case_list, didit_case_manage, etc. However, it lacks context on what constitutes a 'case' in this domain, preventing a perfect score.

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 provides no guidance on when to use this tool versus alternatives (e.g., didit_session_create, didit_transaction_create). It does not mention prerequisites like requiring an organization or application ID, despite both parameters being optional.

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

didit_case_getB
Read-only
Inspect

Get a case with its details.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
case_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description doesn't need to repeat that. The description adds no behavioral details beyond the name. It is adequate but does not disclose any edge cases, error handling, or permissions.

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, concise sentence. It is front-loaded with the core purpose. However, it could be slightly more informative without becoming verbose.

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 simplicity of a get-by-id operation, the description, combined with an output schema (present but not shown), is likely sufficient. No extra context about return values or error cases is needed, though it would be a minor improvement.

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 67% of parameters with descriptions. The description provides no additional parameter meaning beyond what the schema already offers. Baseline 3 is appropriate since schema coverage is high.

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 tool gets a case with details. The verb 'Get' and resource 'case' are specific. However, it does not distinguish from sibling tools like didit_case_list or didit_case_search, which also retrieve case data.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as didit_case_list or didit_case_search. There are no prerequisites, exclusions, or context that help an agent decide when to invoke this tool.

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

didit_case_listA
Read-only
Inspect

List investigation/compliance cases for ONE app; with multiple apps (or no scope) it auto-spans all your apps. For a cross-app query prefer didit_case_search.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
statusNo
cursorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate read-only and non-destructive behavior. The description adds context about auto-spanning across apps when multiple or no scope, 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, no waste. First sentence states purpose and scope, second gives guidance on alternatives. Front-loaded with essential information.

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

Completeness4/5

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

For a list tool with 4 parameters and an output schema, the description covers scope behavior and alternatives. Missing details on pagination or permission requirements, but overall adequate.

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

Parameters2/5

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

The description does not elaborate on any parameters. With 50% schema coverage, the description could compensate but does not. Parameters like cursor and status remain unexplained.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'investigation/compliance cases'. It specifies scope behavior (one app vs. auto-span) and distinguishes from sibling tool didit_case_search.

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 recommends didit_case_search for cross-app queries, providing a clear alternative. Does not list all when-not-to-use scenarios, but 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.

didit_case_manageB
Destructive
Inspect

Act on a case: assign, resolve, reopen, escalate, comment, or update.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
case_idYes
actionYes
dataNoAction payload (e.g. {assignee_id}, {comment}, or fields to update)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations indicate destructive behavior, but description adds no specifics (e.g., what gets destroyed, whether actions are reversible, auth requirements).

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

Conciseness4/5

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

Single concise sentence front-loading purpose and supported actions. Efficient but could be slightly more structured.

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

Completeness2/5

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

For a multi-action management tool, description omits response format, action-specific constraints, and error handling. Incomplete given complexity.

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 60%; description adds brief context for 'data' parameter but lacks detail on per-action payloads. Does not fully compensate for missing schema 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?

Clear verb 'Act on a case' with explicit list of actions: assign, resolve, reopen, escalate, comment, update. Distinguishes from case creation, retrieval, search, etc.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs siblings like didit_case_create or didit_case_update. No advice on prerequisites or when not to use.

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

didit_case_statisticsA
Read-only
Inspect

Get case statistics (counts by status, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false, covering safety. The description adds that it returns counts but does not elaborate on behaviors like filtering, pagination, or response format. With annotations present, the description adds marginal 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?

Extremely concise single sentence with no filler. Every word adds value. Front-loads the action and resource.

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 that an output schema exists (context signal), the description need not detail return values. It sufficiently communicates the tool's purpose as a statistics aggregator, though it could hint at aggregation scope (e.g., organization-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?

Input schema covers both parameters with descriptions (100% coverage). The description does not add any additional parameter meaning 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?

The description uses a specific verb ('Get') and resource ('case statistics'), clearly distinguishing from sibling tools like didit_case_list (list individual cases) and didit_case_get (get a single case). The parenthetical '(counts by status, etc.)' adds specificity.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description only states what it does, lacking any when-to-use or when-not-to-use advice. Sibling tools like didit_case_list and didit_case_search are not mentioned.

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

didit_context_getA
Read-only
Inspect

Return ALL organizations you can access with their applications nested, plus the default org/app when unambiguous — in ONE call (replaces didit_org_list + per-org didit_org_list_applications). Call this first to discover ids.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output 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 destructiveHint=false, covering the safety profile. The description adds valuable behavioral context: it returns all accessible organizations with nested applications, and clarifies behavior for default org/app when unambiguous. 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 highly concise: two sentences with no extraneous words. It front-loads the key action and includes the replacement note. Every sentence adds value.

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

Completeness5/5

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

With zero parameters, clear annotations, and an output schema present, the description sufficiently covers what the tool does, how to use it (first call for discovery), and its scope. No gaps identified.

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 baseline is 4. No additional parameter semantics needed; the description focuses on purpose and usage.

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 returns all accessible organizations with nested applications, plus default org/app when unambiguous. It uses the specific verb 'return' and explicitly distinguishes from sibling tools by noting it replaces didit_org_list and per-org didit_org_list_applications.

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 guidance to 'call this first to discover ids' and explains it replaces multiple calls. However, it does not explicitly state when not to use it or describe alternatives for specific subsets, leaving some ambiguity for edge cases.

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

didit_lists_createAInspect

Create an allowlist or custom list. System blocklists are auto-provisioned (one per entry type) and cannot be created. name must be unique per application.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesREQUIRED. Unique list name
list_typeYesREQUIRED. allowlist or custom (blocklists are auto-provisioned)
entry_typeYesREQUIRED. What kind of values the list holds
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate a mutable operation (readOnlyHint=false) and non-destructive (destructiveHint=false). The description confirms creation and adds constraints (unique name, blocklist prohibition) without contradicting annotations. It provides useful 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?

Two sentences with no wasted words. The description is front-loaded with the core purpose and then adds critical constraints. 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?

The description covers creation scope, constraints, and exclusions. It does not detail return values (output schema likely handles that) or error cases, but for a create tool with an output schema, this is sufficient for an agent to understand when and how to use 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 input schema already describes parameters well (75% coverage). The description adds extra meaning: 'name must be unique per application' (constraint) and clarifies that blocklists are not allowed (list_type and entry_type implications). This enhances understanding beyond 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 clearly states the verb ('Create') and resource ('allowlist or custom list'), specifying what the tool does. It distinguishes from blocklists (which are auto-provisioned and cannot be created) and mentions name uniqueness per application, making the purpose specific and unambiguous.

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

Usage Guidelines4/5

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

The description explicitly says blocklists cannot be created (negative guidance) and that name must be unique (constraint). It implies when to use this tool (for allowlists/custom lists) but does not explicitly contrast with sibling tools like lists_update or entry creation, though the context is clear enough.

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

didit_lists_deleteA
Destructive
Inspect

Delete an allowlist/custom list and all its entries. System blocklists cannot be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
list_uuidYesUUID of the list

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already provide destructiveHint=true. The description adds useful context that deleting a list also deletes all its entries, and that system blocklists are protected. This goes beyond the bare annotations, though it does not detail side effects or 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 two sentences, front-loaded with the action, and every word contributes meaning. No redundancy or 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 simple delete tool with one parameter and annotations, the description is fairly complete. It covers the deletion scope and a constraint. It could mention that the list must exist, but that is implicit. The presence of an output schema reduces the need to explain 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% (the parameter 'list_uuid' is described in the schema). The tool description does not add any additional semantics about the parameter, so it meets the baseline with no added value.

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

Purpose5/5

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

The description clearly states the verb 'Delete' and the resource 'allowlist/custom list', distinguishing it from sibling tools like didit_lists_entry_delete or didit_lists_update. It also explicitly notes that system blocklists cannot be deleted.

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 provides minimal guidance. It implies usage for deleting allowlists/custom lists but does not mention when to use this over didit_lists_entry_delete for individual entries or any prerequisites. No exclusions are given beyond system blocklists.

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

didit_lists_entries_listA
Read-only
Inspect

List entries in a specific list. Use search to filter by value or label.

ParametersJSON Schema
NameRequiredDescriptionDefault
list_uuidYesUUID of the list
searchNoSearch by value or display label
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no further behavioral context (e.g., pagination, ordering) beyond the schema. It is adequate but not enriched.

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 main purpose. No wasted words, efficient.

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?

Output schema exists, covering return format. However, the description omits details about pagination (limit/offset) and whether all entries are listed or paginated. Adequate for a simple tool but could be more 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 50% (list_uuid and search have descriptions). The description adds meaning for search ('filter by value or label') but does not clarify limit or offset parameters. Partially compensates but incomplete.

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 'List entries in a specific list,' which is a specific verb and resource. It distinguishes from siblings like didit_lists_get (list metadata) and didit_lists_entry_create/delete.

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 mentions using search for filtering, which gives context, but does not explicitly state when to use this tool versus alternatives (e.g., didit_lists_entry_create). Usage is implied, not directive.

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

didit_lists_entry_createAInspect

Add an entry to a blocklist/allowlist/custom list. Pass value directly, or reference_session_id to auto-extract from a session (face, document, phone, email, IP, device). Pass both to disambiguate when a session has multiple values of the same type. For face entries without a session, use didit_lists_entry_upload_face instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
list_uuidYesUUID of the list to add to
valueNoValue to add (phone, email, IP, etc.). Optional if reference_session_id is provided.
reference_session_idNoSession UUID — backend auto-extracts the value based on the list's entry type
reference_object_uuidNoUUID of the source entity (transaction, vendor user/business) for traceability
display_labelNoHuman-readable label
commentNoReason for adding
metadataNoAdditional structured data (e.g. reference_type, full_name)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate mutation but not destructive. Description adds behavioral context: value can be provided directly or auto-extracted from a session, and both can be used for disambiguation. Does not contradict annotations.

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

Conciseness5/5

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

Four concise sentences with no fluff. Front-loaded with the main purpose, each sentence adds value: purpose, modes, disambiguation, alternative 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?

Given the complexity (7 params, nested objects, output schema), the description covers the essential usage patterns and key parameter relationships. Could mention permissions or list-type specifics, but the description is largely sufficient when combined with 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 has 100% coverage, so baseline is 3. The description adds meaningful parameter interaction context, especially the disambiguation scenario when both value and reference_session_id are provided, which is not 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 clearly states the verb 'Add' and the resource 'entry to a blocklist/allowlist/custom list'. It distinguishes from the sibling 'didit_lists_entry_upload_face' by specifying that for face entries without a session, that alternative should be used.

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 guidance by explaining two modes (direct value or session extraction) and the disambiguation scenario. Explicitly names an alternative tool for a specific case, though does not cover all possible alternatives.

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

didit_lists_entry_deleteA
Destructive
Inspect

Remove an entry from a list. Also unblocks the underlying user/business if applicable.

ParametersJSON Schema
NameRequiredDescriptionDefault
list_uuidYesUUID of the list
entry_uuidYesUUID of the entry to remove

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Description adds behavioral context beyond annotations: the side effect of unblocking the underlying user/business. Annotations already mark it as destructive (destructiveHint: true), so description provides valuable extra detail.

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 primary action, no redundant words. Efficient and to the point.

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 that an output schema exists, the description adequately covers the main action and important side effect. However, it lacks details on conditions for unblocking and error handling, but overall sufficient for a simple delete 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 coverage is 100%, so baseline is 3. The description does not add any additional meaning to the parameters beyond what the schema already provides (list_uuid and entry_uuid descriptions).

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

Purpose5/5

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

The description clearly states the verb 'Remove' and the resource 'an entry from a list', with an additional side effect noted. It distinguishes from sibling tools like didit_lists_entry_create (add) and didit_lists_delete (delete list itself).

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The description does not mention when-not to use or compare with siblings like didit_lists_entries_list or didit_lists_entry_create.

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

didit_lists_entry_upload_faceAInspect

Add a face entry to a face list by uploading an image directly (no session needed). Use this when you have a photo but no reference_session_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
list_uuidYesUUID of a face-type list
image_pathYesAbsolute path to the face image file
display_labelNo
commentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output 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=false and destructiveHint=false, so the description's addition of 'no session needed' is helpful but not extensive. It doesn't elaborate on other behaviors like limits or side effects, but given annotations, 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?

Two concise sentences: first states the core action and method, second gives usage guidance. No fluff or repetition. Front-loaded with essential information.

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

Completeness4/5

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

Describes core function, method, and when to use. Output schema exists for return values. However, the description omits details on optional parameters (display_label, comment) and prerequisites like list existence, but for a simple tool this is nearly complete.

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

Parameters2/5

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

Schema coverage is 50% (list_uuid and image_path described, 'display_label' and 'comment' lack descriptions). The description does not add any additional meaning or constraints beyond the schema, failing to compensate for the undocumented 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?

Description clearly states the action ('Add a face entry'), the method ('uploading an image directly'), and the distinguishing condition ('no session needed'). It effectively differentiates from sibling tools that might require a reference_session_id.

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 to use this tool when having a photo but no reference_session_id, providing clear context for selection over alternatives. This is a model guideline for when to use the tool.

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

didit_lists_getA
Read-only
Inspect

Get a single list's details by UUID.

ParametersJSON Schema
NameRequiredDescriptionDefault
list_uuidYesUUID of the list

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 destructiveHint=false. Description adds no extra behavioral context beyond 'get details'. Adequate but minimal.

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 of 8 words, front-loaded with verb and resource. No unnecessary 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?

Tool is simple with one required parameter, read-only, and has output schema. Description sufficiently covers the purpose and input; output schema handles return details.

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 description 'UUID of the list' for list_uuid. Description does not add additional 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?

Description clearly states verb 'Get', resource 'single list', and identifier 'UUID'. Distinguishes from sibling tools like didit_lists_list (list all) and didit_lists_create/update/delete.

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

Usage Guidelines3/5

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

No explicit guidance on when to use or alternatives. Usage is implied by the resource and parameter, but lacks context to avoid confusion with similar tools like didit_lists_list.

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

didit_lists_listA
Read-only
Inspect

List all lists (blocklists, allowlists, custom) for the application. Filter by list_type or entry_type.

ParametersJSON Schema
NameRequiredDescriptionDefault
list_typeNoFilter: blocklist, allowlist, custom
entry_typeNoFilter: face, document, phone, email, ip_address, device_fingerprint, wallet_address, bank_account, user, business, country, key
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 destructiveHint=false. The description adds context about list types but no additional behavioral traits (e.g., side effects, authentication requirements, or scope). It does not contradict 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 sentences (20 words), front-loaded with the action, and contains no unnecessary information.

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 output schema exists, return values are covered. However, the description does not mention pagination (limit/offset) or application scope, leaving some functional gaps. It is adequate but not fully comprehensive.

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

Parameters2/5

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

Schema coverage is 50%, with descriptions for list_type and entry_type already in the schema. The description merely repeats these, adding no new meaning. Parameters limit and offset lack descriptions in both schema and description, leaving their purpose unclear.

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 all lists (blocklists, allowlists, custom) with filtering options, using a specific verb and resource. It distinguishes from siblings like didit_lists_create or didit_blocklist_add.

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

Usage Guidelines3/5

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

The description implies usage for listing lists with filters, but does not explicitly state when to use alternatives (e.g., didit_lists_get for a single list) or when not to use this tool. No exclusion criteria are provided.

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

didit_lists_updateAInspect

Rename or update the description of an allowlist/custom list. System blocklists are immutable.

ParametersJSON Schema
NameRequiredDescriptionDefault
list_uuidYesUUID of the list
nameNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate it's read-only (false) and not destructive (false). Description adds that system blocklists cannot be updated, which is valuable behavioral context beyond what annotations provide. 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?

Two short sentences that front-load the action. Every word is necessary; 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?

Given the tool's simplicity and presence of output schema, the description covers the main update action and the immutability constraint. Could mention partial update behavior or error handling, but overall adequate for the 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 low (33%), so description should compensate. Description links 'rename' to the name parameter and 'update description' to the description parameter, but does not clarify that both parameters are optional or provide format constraints. Adds some value but not enough to fully compensate for low 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?

Description states specific actions (rename or update description) on a list resource, distinguishes between allowlist/custom lists and immutable system blocklists, and is clearly differentiated from sibling tools like didit_lists_create and didit_lists_delete.

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: use to rename or update description of user-created lists. Explicitly states when not to use (system blocklists are immutable). No explicit alternative named, but it's the only update tool for lists, so guidance is sufficient.

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

didit_org_get_applicationA
Read-only
Inspect

Get application details (client_id etc.). The api_key is REDACTED — a masked preview + api_key_set flag are returned, never the raw secret. Use didit_org_reveal_application_api_key to obtain the raw key.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idYes
application_idYes
access_tokenNoOnly for stdio mode. Omit in hosted OAuth mode.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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, so no destructive behavior. The description adds valuable transparency about the API key handling: it is redacted, and only a masked preview and flag are returned. This goes 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?

The description is only two sentences and is front-loaded with the core purpose. Every sentence adds value without extraneous 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?

Output schema exists, so return values are covered. The description captures the key behavioral nuance (redacted key) and points to the alternative. For a simple get-by-ID tool, this is sufficient, though it could mention success/error conditions.

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

Parameters2/5

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

Schema coverage is low (33% – only access_token has a description). The description does not explain the required parameters (organization_id, application_id) beyond their names, missing an opportunity to add context. The access_token description is 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 clearly states 'Get application details (client_id etc.)', specifying the verb 'Get' and the resource 'application details'. It also differentiates from siblings by mentioning the alternative tool for obtaining the raw API key.

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 use this tool (to retrieve application details) and provides an alternative (didit_org_reveal_application_api_key) for obtaining the raw key. However, it does not elaborate on prerequisites or scenarios where this tool should be avoided over other similar get tools.

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

didit_org_get_balanceA
Read-only
Inspect

Get current credit balance and auto-refill settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output 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, so the description adds value by specifying the exact data returned (credit balance and auto-refill settings). No additional behavioral context like rate limits or authentication needs are mentioned, but the core safety profile is covered by annotations.

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

Conciseness5/5

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

Single sentence, front-loaded with the main action, no wasted words. Every word is essential.

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

Completeness5/5

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

Given zero parameters and a simple return value, the description is complete. The existence of an output schema further reduces the need for detailed return descriptions.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description adds no parameter info but it's unnecessary since there are no 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 states the tool retrieves current credit balance and auto-refill settings, using a specific verb and resource. It distinguishes effectively from sibling tools like 'didit_org_top_up' which modifies balance.

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 read-only usage but does not explicitly state when to use this tool versus alternatives or provide exclusions. For a simple read tool, this is acceptable but lacks explicit guidance.

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

didit_org_invite_memberBInspect

Invite a member to the organization (email + role).

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
emailYes
roleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/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 adds no behavioral context. It does not explain what happens on invitation (e.g., email sent, duplicate handling) or system effects beyond the basic write 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?

A single, front-loaded sentence conveys the essential action and key parameters with no wasted words. It is optimally concise for quick comprehension.

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

Completeness2/5

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

Given the availability of sibling tools and the optional nature of organization_id, the description is incomplete. It does not mention that role is optional (contrary to the implication of 'email + role'), prerequisites, or expected outcomes. Output schema exists but is not needed to explain return values.

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

Parameters2/5

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

Schema description coverage is only 33% (only organization_id described). The description mentions 'email + role' but adds no new semantics like valid formats, role options, or behavior of optional parameters. It does not compensate for the low 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 'Invite a member to the organization (email + role)' clearly states the action (invite) and the resource (member to organization), distinguishing it from sibling tools like remove or update. The parentheses list the key parameters, making the purpose immediately understandable.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives such as didit_org_update_member or didit_org_remove_member. The description provides no context for selecting this tool over related ones.

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

didit_org_listA
Read-only
Inspect

List the organizations you belong to (each has an id to pass as organization_id to other tools). In hosted OAuth mode no arguments are needed; in stdio mode pass access_token from login/verify_email.

ParametersJSON Schema
NameRequiredDescriptionDefault
access_tokenNoOnly for stdio mode — Bearer access token from login/verify_email. Omit in hosted OAuth mode.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output 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 destructiveHint=false. The description adds behavioral context about mode-specific requirements (OAuth vs stdio) and explains the output's purpose, which goes 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?

Two sentences, front-loaded with the main purpose, and no redundant information. 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?

Given the output schema exists, the description appropriately focuses on purpose, usage modes, and the id's role. It is complete for a read-only listing tool with good annotation coverage.

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

Parameters4/5

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

Schema coverage is 100% with a description for access_token. The description adds value by explaining when the parameter is needed (only in stdio mode) and that it should be omitted in OAuth mode, which is not 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 clearly states the tool lists organizations the user belongs to and explains that the returned ids are used for other tools. The verb 'List' is specific and distinguishes it from other 'org_' 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 provides usage guidance for both hosted OAuth and stdio modes, including when to pass the access_token. While it doesn't explicitly mention alternatives, the context of siblings and the description imply this is the basic listing tool.

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

didit_org_list_api_keysB
Read-only
Inspect

List API keys (pass application_id for an app's keys).

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=true, consistent with listing. The description adds the behavioral detail that passing application_id filters keys per app, which is beyond annotations. However, it lacks details like pagination or default behavior when no org ID is provided.

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 with no wasted words. It efficiently conveys the core action and a key usage note.

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 list with an output schema, the description is largely complete. However, it omits clarification on default behavior when no optional parameters are provided, which could cause confusion.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. The description does not add new meaning beyond the schema's 'application_id' description, so baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'List' and resource 'API keys', with a parenthetical hint about using application_id for app-specific keys. However, it does not explicitly clarify what happens when no application_id is provided (e.g., lists all org keys), leaving minor ambiguity.

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 provides no explicit guidance on when to use this tool vs. alternatives like 'didit_org_reveal_application_api_key' or other list tools. It only hints at parameter usage but does not explain context or prerequisites.

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

didit_org_list_applicationsB
Read-only
Inspect

List the applications in an organization (each has an id to pass as application_id). In hosted OAuth mode pass only organization_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idYesOrganization UUID (from didit_org_list)
access_tokenNoOnly for stdio mode. Omit in hosted OAuth mode.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 destructiveHint=false, indicating a safe read operation. The description adds modest context about the output (application IDs) and mode-specific parameter usage, but does not disclose further behavioral traits like pagination or rate limits.

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

Conciseness5/5

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

The description is two sentences, front-loads the main purpose, and contains no extraneous information. Every sentence 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?

Given the presence of an output schema (not shown but noted), the description does not need to detail return values. It covers the core functionality and usage context for hosted OAuth mode. Minor omission: no mention of pagination or limits, but these may be in the 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?

Input schema has 100% description coverage, so the schema already documents both parameters adequately. The description reinforces that access_token is for stdio mode but adds no new semantic meaning beyond 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 clearly states the tool lists applications in an organization and mentions the returned IDs for further use. It does not explicitly differentiate from sibling tools like didit_org_get_application, but the verb 'list' and context imply it is a batch retrieval 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?

No guidance on when to use this tool versus alternatives. The description only provides parameter usage notes (hosted OAuth mode) but no tool selection criteria or exclusions.

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

didit_org_list_membersB
Read-only
Inspect

List the organization's members.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds no further behavioral traits (e.g., pagination, rate limits, or whether it returns all members). With annotations covering safety, a score of 3 is appropriate.

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

Conciseness5/5

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

The description is a single sentence with no wasted words. It is front-loaded and 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?

The tool has an output schema, so return values do not need to be described in the text. However, for a list tool, one might expect details about filtering or ordering. The description is minimal but sufficient given the schema, yet lacks usage 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%; the only parameter (organization_id) has a schema description. The tool description does not add any additional meaning beyond the schema, 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?

The description 'List the organization's members' clearly states the verb and resource. However, among many org-related sibling tools (didit_org_list, didit_org_list_roles, etc.), it does not distinguish this tool from alternatives, missing an opportunity to clarify scope.

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 provides no guidance on when to use this tool versus alternatives (e.g., didit_org_list, didit_org_list_roles). No prerequisites, context, or exclusions are mentioned.

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

didit_org_list_rolesB
Read-only
Inspect

List the roles available in the organization.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds no further behavioral details, such as pagination, output format, or authentication requirements. Minimal 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?

Single 7-word sentence, front-loaded with the verb and resource. Every word earns its place; no redundancy or filler.

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

Completeness3/5

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

For a simple list tool with an optional parameter and existing output schema, the description is minimally adequate. However, it lacks usage context, pagination info, or any link to further documentation. Could be more complete for an agent unfamiliar with the system.

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 one parameter already well-described ('Organization UUID from didit_org_list. Optional if your token has a single/default org.'). The description adds no additional meaning to the parameter, and baseline is appropriate at 3.

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

Purpose4/5

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

Description clearly states 'List the roles available in the organization' with a specific verb and resource. It distinguishes from sibling list tools by identifying roles as the resource, though it does not elaborate on what constitutes a role.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. No prerequisites, context, or exclusions are mentioned. The sibling tools include many other list tools, but the description provides no differentiation.

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

didit_org_remove_memberC
Destructive
Inspect

Remove a member from the organization.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description's 'Remove' aligns. However, it adds no further behavioral context (e.g., irreversibility, cascading effects). 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.

Conciseness4/5

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

Extremely concise (6 words, one sentence), no unnecessary words. However, it is overly terse and could benefit from minimal elaboration.

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

Completeness2/5

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

For a destructive action with 2 parameters and an output schema (not provided), the description is too minimal. Missing details on consequences, return value, and constraints. Relies on annotations for safety, but insufficient for complete understanding.

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

Parameters2/5

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

Schema description coverage is 50% (organization_id described, member_id not). The tool description does not add any parameter information to compensate for the missing member_id description.

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

Purpose4/5

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

The description clearly states the action (remove) and the resource (member from organization), distinguishing it from sibling tools like didit_org_invite_member (add) and didit_org_update_member (modify). It is specific but lacks mention of permanence.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no prerequisites (e.g., required permissions, member not being the last owner), and no conditions for use or avoidance.

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

didit_org_reveal_application_api_keyA
Destructive
Inspect

Return the RAW, un-redacted api_key for an application. This exposes a LIVE SECRET — only call when a human explicitly needs the key to integrate; never log or persist it. Requires confirm:true AND an explicit organization_id + application_id (no defaults).

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idYesREQUIRED. No env/context default for this raw-secret tool.
application_idYesREQUIRED. No env/context default for this raw-secret tool.
confirmYesREQUIRED. Must be true to expose the raw key.
access_tokenNoOnly for stdio mode.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations indicate destructiveHint:true and readOnlyHint:false. The description adds important behavioral context: exposes a LIVE SECRET, must be human-initiated, must not be logged or persisted. It goes beyond annotations to explain the 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 two sentences, front-loaded with purpose, followed by warnings and requirements. Every sentence earns its place; no wasted words.

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

Completeness5/5

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

Given the output schema is present, the description covers purpose, usage guidelines, and safety warnings comprehensively. For a high-risk tool, it provides sufficient context for safe 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?

With 100% schema coverage, baseline is 3. The description adds value by stating 'No env/context default for this raw-secret tool.' and requiring confirm:true. This reinforces the mandatory nature 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 clearly states 'Return the RAW, un-redacted api_key for an application.' It uses a specific verb (return/expose) and resource (api_key), and distinguishes from siblings like didit_org_list_api_keys and didit_org_get_application by emphasizing the raw, un-redacted 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 provides explicit guidance: 'only call when a human explicitly needs the key to integrate; never log or persist it.' It also specifies prerequisites (confirm:true, explicit IDs). However, it does not explicitly mention alternatives for non-raw key listing, which would strengthen it.

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

didit_org_top_upA
Destructive
Inspect

Create a Stripe checkout session to top up credits. Returns a checkout URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
amount_in_dollarsYesAmount in USD (minimum $50)
success_urlNoOptional redirect after successful payment
cancel_urlNoOptional redirect if payment is cancelled

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true, so the description carries a lower burden. However, it adds only the output mention (checkout URL) and does not elaborate on behavioral implications like the fact that this initiates a payment flow, which could be important for the agent to 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 two concise sentences, front-loaded with the primary action. Every word adds value, and there is no redundancy or unnecessary information.

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?

The description mentions the output (checkout URL) but omits important context such as the fact that the session must be completed via browser redirect, or that credits are added only after payment. Given the existence of an output schema (not shown), the description could be more complete about the flow.

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 does not add any additional meaning beyond the schema descriptions (e.g., amount minimum, optional URLs). It neither enhances nor detracts from parameter understanding.

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 Stripe checkout session), the resource (top up credits), and the output (checkout URL). The name 'didit_org_top_up' is specific among siblings, and there is no other top-up tool, so it distinguishes well.

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 provides no explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites (e.g., Stripe configuration) or exclusions. It simply states the action without context.

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

didit_org_update_memberCInspect

Update a member's role.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
member_idYes
roleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=false. Description adds no further behavioral traits, such as whether the change is reversible, permission requirements, or side effects.

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

Conciseness4/5

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

Single sentence, front-loaded with the core action. No redundant information, but borderline under-specified.

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

Completeness2/5

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

Lacks essential context: does not mention that role likely comes from didit_org_list_roles, does not describe return value (output schema exists but not referenced), and no error scenarios.

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

Parameters2/5

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

Schema description coverage is 33% (only organization_id described). Description does not clarify member_id or role parameter meanings, valid values, or constraints 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?

Description states 'Update a member's role' which is a specific verb and resource. Among siblings like didit_org_invite_member and didit_org_remove_member, this clearly distinguishes 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 Guidelines2/5

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

No guidance on when to use this tool vs. alternatives (e.g., didit_org_list_members to get member IDs, didit_org_list_roles for valid roles). No prerequisites or context provided.

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

didit_questionnaire_createAInspect

Create a custom questionnaire. The backend expects title + form_elements (an array of form-element objects, each with an UPPERCASE element_type) — NOT questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesQuestionnaire title
descriptionNoDescription shown to the user
form_elementsYesREQUIRED. Array of form-element objects. Each: { element_type (uppercase, one of the allowed types), title (object of locale→string, e.g. {"en":"Your name"}), is_required (bool), and for choice types a `choices` array }.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate a non-read-only, non-destructive mutation. The description adds the important behavioral hint that 'questions' is not accepted, but does not disclose side effects, permissions, or success responses. 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.

Conciseness5/5

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

Two sentences with no fluff. The first states the purpose, the second delivers a critical usage detail. 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?

Given the tool's complexity (many element types) and the presence of an output schema, the description covers the core purpose and a key gotcha. It omits stating the optionality of 'description' but the schema covers that. Overall, fairly 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 baseline is 3. The description reinforces that form_elements is required and element_type must be uppercase, but this is already in the schema. The 'NOT questions' hint adds marginal value.

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

Purpose5/5

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

The description clearly states 'Create a custom questionnaire' with a specific verb and resource. It distinguishes from sibling tools like didit_questionnaire_update or didit_questionnaire_delete by focusing on creation. The added hint about form_elements vs 'questions' further clarifies the exact 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?

The description implicitly directs the agent to use this tool for creating questionnaires, not for updating or deleting. It provides a corrective hint about the expected input format, but lacks explicit guidance on when to use this vs. alternatives like didit_questionnaire_update.

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

didit_questionnaire_deleteB
Destructive
Inspect

Delete a questionnaire.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionnaire_idYesQuestionnaire UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

The annotation 'destructiveHint: true' already signals destructive behavior. The description adds no new behavioral context beyond that, such as whether deletion is permanent or if confirmation is required. With annotations, a score of 3 is appropriate.

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

Conciseness4/5

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

The description is extremely concise at one short sentence, which is efficient. However, it could be slightly expanded to include key behavioral notes without sacrificing brevity.

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 simple parameter set (1 required) and annotations, the description is minimally adequate. However, it lacks explanation of the output (e.g., success response) or any side effects, making it somewhat incomplete for a destructive action.

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 describes the single parameter (questionnaire_id as 'Questionnaire UUID'), and coverage is 100%. The description adds no additional 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 clearly states the action (delete) and the resource (questionnaire), distinguishing it from sibling tools like create, get, list, and update. However, it could be more specific about the scope (e.g., deleting by ID) and implications.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., questionnaire_update for non-destructive changes). No mention of prerequisites (e.g., questionnaire must exist) or consequences (irreversible deletion).

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

didit_questionnaire_getA
Read-only
Inspect

Get full details of a specific questionnaire (questions, options, translations).

ParametersJSON Schema
NameRequiredDescriptionDefault
questionnaire_idYesQuestionnaire UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds that the tool returns 'questions, options, translations,' providing specific behavioral context beyond the annotations. It does not contradict 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 sentence that is concise and front-loaded with the core purpose. Every word earns its place; no extraneous 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 simple get-by-ID tool with one required parameter and an output schema (as indicated in context), the description is complete: it tells exactly what the tool returns. No additional explanation is needed.

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 one parameter, questionnaire_id, with description 'Questionnaire UUID.' The description does not add any additional meaning beyond the schema. Schema coverage is 100%, 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 'Get full details of a specific questionnaire (questions, options, translations).' This clearly identifies the action (Get), the resource (questionnaire), and the scope (full details including sub-components). It distinguishes from siblings like didit_questionnaire_list (list all) and didit_questionnaire_create (create new).

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 used when you need the full details of a specific questionnaire identified by questionnaire_id. It is clear that this is for a single item, contrasting with list or search tools. No explicit when-not or alternatives, but the context is sufficient.

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

didit_questionnaire_listA
Read-only
Inspect

List all custom questionnaires for your application.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, signaling a safe read operation. The description adds no extra behavioral context beyond confirming the list action, which is adequate but not enhanced.

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 redundant information. Every word is necessary and clear.

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 fully covers the tool's purpose for a simple list-all operation. Given an output schema exists and no parameters, it is sufficiently complete, though it could mention scope (application-specific) as it does.

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

Parameters4/5

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

There are no parameters, and the input schema coverage is 100% trivially. The description correctly implies no filtering is needed. Baseline 4 per guidelines for zero 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 uses a specific verb 'List' and resource 'custom questionnaires,' clearly distinguishing it from sibling tools like 'didit_questionnaire_get' (single item) and 'didit_questionnaire_create' (creation).

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like 'didit_questionnaire_get' for a single questionnaire. The context is clear enough but lacks exclusion criteria or alternative mentions.

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

didit_questionnaire_updateAInspect

Update a questionnaire's title, description, or form_elements (array of form-element objects with UPPERCASE element_type).

ParametersJSON Schema
NameRequiredDescriptionDefault
questionnaire_idYesQuestionnaire UUID
titleNo
descriptionNo
form_elementsNoREQUIRED. Array of form-element objects. Each: { element_type (uppercase, one of the allowed types), title (object of locale→string, e.g. {"en":"Your name"}), is_required (bool), and for choice types a `choices` array }.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Description aligns with annotations (not read-only, not destructive). Adds that update supports title, description, form_elements. No extra context on permissions, side effects, or failure modes 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?

Single, well-structured sentence. Front-loaded with verb and resource, no wasted words.

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

Completeness4/5

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

Covers essential update aspects. Missing mention that questionnaire_id is required (though schema covers it) or partial update behavior. With output schema present, return information is not required. Adequate for a simple mutation 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?

Description lists updatable fields and notes form_elements require UPPERCASE element_type. Schema coverage is 50%; title and description lack schema descriptions, so description adds minimal value. The form_elements structure is already detailed in schema.

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

Purpose5/5

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

Clearly states the verb 'update' and the resource 'questionnaire' with specific fields (title, description, form_elements). Distinguishes from sibling tools like create, delete, get, list.

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

Usage Guidelines3/5

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

No explicit guidance on when to use vs alternatives. The name implies update, but it does not specify prerequisites, partial updates, or when not to use (e.g., use create for new questionnaires).

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

didit_report_exportC
Read-only
Inspect

Start an export report. kind ∈ sessions | transactions | businesses | vendor-users | vendor-businesses.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
kindYes
dataNoFilters for the export

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior1/5

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

The description states 'Start an export report,' which implies a mutation or creation action, but the annotations declare readOnlyHint=true, creating a direct contradiction. No additional behavioral traits are disclosed beyond what annotations provide, and the contradiction undermines trust.

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

Conciseness3/5

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

The description is very short and to the point, but it lacks necessary details. It is not wasted, but the conciseness comes at the cost of completeness and clarity in the context of the contradiction.

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

Completeness2/5

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

Given the tool has 4 parameters (including a nested object), an output schema, and is part of a suite with many related tools, the description is insufficient. It does not explain the export process, return values, or how to use the output schema, leaving significant gaps for an agent to correctly invoke 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?

Schema description coverage is 75%, and the schema already provides adequate descriptions for most parameters. The description adds the allowed values for 'kind' (which are not an enum in the schema), providing marginal added value. However, it does not explain the 'data' object or the optional parameters 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?

The description clearly states it starts an export report, specifying the 'kind' parameter values, which gives a specific verb and resource. However, it does not explicitly distinguish this tool from sibling report tools like didit_report_list or didit_report_get, leaving a minor gap in 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 that this tool is used to initiate an export report, but it offers no explicit guidance on when to use it versus other report tools or any prerequisites. Context signals show many sibling report tools, so clearer usage guidelines would be beneficial.

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

didit_report_getA
Read-only
Inspect

Get a report's status/details.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
report_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the tool is known to be safe. The description adds minimal value beyond stating it gets status/details; no discussion of caching, authorization, or side effects.

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

Conciseness5/5

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

Single sentence, no unnecessary words. Efficiently communicates the tool's function.

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 operation with an output schema, the description is sufficient. It captures the essential purpose and leaves parameter/return details to 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 67% (2 of 3 parameters described). The description does not add meaning to the parameters beyond what the schema provides. The missing report_id description is a gap, but the implied purpose covers it loosely.

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

Purpose5/5

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

The description 'Get a report's status/details' clearly states the action (get) and the resource (report). It distinguishes from siblings like didit_report_list (list all reports) and didit_report_get_download_url (get download link).

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 no explicit guidance on when to use this tool versus alternatives (e.g., didit_report_list, didit_report_get_download_url). The implied usage is clear 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.

didit_report_get_download_urlC
Read-only
Inspect

Get a signed download URL for a finished report.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
report_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds minimal behavioral context by stating the report must be 'finished,' but does not disclose error handling, URL expiration, or other traits. With annotations present, the description adds limited 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?

The description is a single sentence that conveys the purpose with no unnecessary words. It is front-loaded and efficient, earning full points for conciseness.

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

Completeness2/5

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

Given the tool's complexity (3 parameters, moderate schema coverage, and an output schema), the description is insufficient. It omits important context such as what a 'signed download URL' entails, whether the report must be finished, and any size or time limitations. The output schema exists but the description does not complement it.

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 67% (two parameters have descriptions). The description does not add any parameter-specific meaning beyond what the schema already provides. Baseline 3 is appropriate as coverage is moderate but not high enough to require compensation.

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

Purpose4/5

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

The description clearly states the action (Get) and the resource (signed download URL for a finished report), distinguishing it from sibling tools like `didit_report_get` (which likely returns report data) and `didit_report_list` (list of reports). However, it does not explicitly differentiate from `didit_report_get` or other report retrieval methods.

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 provides no guidance on when to use this tool versus alternatives such as `didit_report_get` or `didit_report_list`. It does not mention prerequisites (e.g., report must be finished) or context where the tool should be avoided.

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

didit_report_listB
Read-only
Inspect

List generated export reports.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 destructiveHint=false. The description adds no further behavioral context, but is consistent and 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.

Conciseness4/5

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

The description is a single concise sentence with no waste. It could benefit from slightly more context without becoming verbose.

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 an output schema and readOnly annotations, the description is minimally complete. However, it lacks details about the scope of reports listed or any ordering/filtering, which would improve completeness.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds no extra parameter meaning beyond the schema's own descriptions of organization_id and application_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 clearly states the action 'List' and the resource 'generated export reports', distinguishing it from sibling tools like didit_report_export and didit_report_get.

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 provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, filters, or 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.

didit_session_add_reviewAInspect

Add a review note to a session's audit trail, optionally changing its status.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
commentNoReview comment or note
new_statusNoOptional new session status to record with the note

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/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. The description adds context that the operation is additive ('add a review note') and optionally modifies status, which aligns with the annotations. 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?

Single sentence that is direct and front-loaded with the key action. No superfluous words; 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?

The description covers the core functionality (add note, optional status) and is complete for a simple tool. The presence of an output schema (as indicated by context) means return values are handled separately. Minor gap: could mention that the session must exist, but that is 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 67% (2 of 3 parameters have descriptions). The description itself does not add new parameter details beyond the schema, but it reinforces the purpose of the optional new_status parameter. Baseline score of 3 is appropriate 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 clearly states the action: adding a review note to a session's audit trail, with the optional ability to change its status. It distinguishes from sibling tools like didit_session_update_status (status-only) and didit_session_list_reviews (read-only list).

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

Usage Guidelines3/5

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

The description implies usage (when adding a review note with optional status change) but does not explicitly state when not to use it or mention alternatives like didit_session_update_status for status-only updates. The guidance is implied but not thorough.

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

didit_session_batch_deleteA
Destructive
Inspect

Delete multiple sessions by session numbers, or delete all sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_numbersNoArray of session numbers to delete
delete_allNoSet true to delete ALL sessions (ignores session_numbers)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so the description's statement of deletion adds limited value. It does not disclose authorization needs, side effects, or recovery options.

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, immediately front-loads the verb and resource, and efficiently communicates both usage modes without unnecessary 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 the simplicity of the tool (two parameters, no nested objects, output schema provided), the description adequately covers core behavior, though could mention return value or confirmation.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. The tool description adds no extra 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 clearly states the tool deletes sessions, with two specific modes: by session numbers or all sessions. This distinguishes it from single-session delete tools like didit_session_delete.

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 batch deletion through 'multiple' and 'all', and siblings include `didit_session_delete` for single deletion, but no explicit guidance on when not to use or prerequisites.

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

didit_session_createAInspect

Create a verification session. Requires workflow_id (created in the Console Workflows page) — the workflow defines which steps run and whether the session is KYC or KYB. Returns session_id, url, and session_token.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesREQUIRED. UUID of the workflow that defines the verification steps. Selects KYC vs KYB implicitly.
vendor_dataNoYour unique identifier for the user (e.g. user ID). Used to group sessions into a user/business.
callbackNoURL to redirect the user to after verification
callback_methodNoWhich device/flow the callback applies to
languageNoPre-set the verification UI language (ISO code)
metadataNoArbitrary JSON stored on the session and echoed in webhooks
contact_detailsNoPre-fill contact info (e.g. email, phone) for the session
expected_detailsNoExpected values to validate against (e.g. expected country, IP)
portrait_imageNoBase64 or URL reference portrait used by some workflows

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

The description discloses that this tool creates a session (mutation) and returns specific fields. Annotations already set readOnlyHint=false, so no contradiction. The description adds context beyond annotations by specifying outputs, but does not detail side effects like webhooks or rate limits.

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

Conciseness5/5

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

The description is two sentences long, front-loads the purpose, and contains no redundant information. Every sentence adds value.

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

Completeness5/5

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

The description, combined with full parameter descriptions and output schema (implied), provides a complete picture: what the tool does, required input, and return values. No critical gaps for a creation tool.

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

Parameters3/5

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

All 9 parameters have descriptions in the schema (100% coverage), so the baseline is 3. The description does not add new parameter-specific information 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 clearly states 'Create a verification session,' specifies the required workflow_id, and indicates the return values (session_id, url, session_token). This distinguishes it from sibling tools like didit_session_list or didit_session_update_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 explains that workflow_id is required and defines the session type (KYC/KYB). It implies a prerequisite (workflow must exist in Console) but does not explicitly tell when not to use this tool or mention alternatives like didit_session_create_import.

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

didit_session_create_importBInspect

Create a bulk import job from a hosted CSV/NDJSON file (e.g. migrating historical verifications into Didit). Pass source_file_url. All imports use Didit's canonical schema. To label a record's source, include the optional per-row provider column in the file itself (defaults to generic) — there is no provider request field.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_file_urlYesREQUIRED. Publicly fetchable URL of the CSV/NDJSON file to import.
import_typeNoWhat the rows represent (default user_verification)
source_formatNoFile format (default csv)
workflow_idNoWorkflow to associate imported sessions with

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false (write operation) and destructiveHint=false. The description confirms it creates a job and adds context about canonical schema and the lack of a provider request field. However, it does not disclose side effects, whether the job runs asynchronously, or any prerequisites. 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.

Conciseness4/5

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

The description is concise (two sentences) and front-loaded with the core purpose. It efficiently conveys key details without unnecessary words. Could be slightly more structured but is effective.

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 output schema exists and no nested objects, the description covers the main purpose and a notable caveat. It does not mention error handling, authentication needs, or the fact that it is an asynchronous job. For a tool with 4 parameters and many siblings, it is adequate but could include more operational 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%, so the schema already describes parameters. The description adds value by clarifying the provider column is per-row in the file, not a parameter. This is helpful but not extensive beyond the schema definitions.

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 it creates a bulk import job from a hosted CSV/NDJSON file, with an example of migrating historical verifications. It is specific enough to distinguish from session creation or other import tools, though it does not explicitly call out 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?

The description advises to pass source_file_url and notes the optional provider column, but does not provide explicit guidance on when to use this tool vs. alternatives like didit_session_import_shared or didit_session_create. Usage context is implied by the example but not formally stated.

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

didit_session_deleteA
Destructive
Inspect

Permanently delete a single verification session and all associated data.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already provide destructiveHint=true, so the destructive nature is known. The description adds 'Permanently delete' and 'all associated data,' which supplements the annotation. However, it does not disclose other behavioral traits like whether the action is reversible, required permissions, or immediate consequences 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, concise sentence (10 words) that is front-loaded with the key action. Every word serves a purpose, and there is no unnecessary 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?

Given the presence of an output schema and the tool's simplicity (one parameter), the description covers the essential purpose (permanently delete a single session and associated data). Minor gaps exist, such as not clarifying what happens if the session_id is invalid or that deletion is immediate, but it is largely sufficient.

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

Parameters2/5

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

The input schema has 0% description coverage for the parameter 'session_id,' and the tool description does not elaborate on its meaning, format, or source. For a simple required string, the agent might infer it, but the description adds no semantic value beyond what the schema minimally 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 'Permanently delete a single verification session and all associated data,' specifying the verb (delete), resource (verification session), scope (single), and the permanent nature. This distinguishes it from sibling tools like didit_session_batch_delete (batch deletion) and other session operations.

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 permanently deleting a single session, but it does not provide explicit guidance on when to use it versus alternatives (e.g., didit_session_batch_delete) or conditions like session existence. It lacks context on prerequisites or 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.

didit_session_generate_pdfB
Read-only
Inspect

Generate a PDF verification report for a session.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=true and destructiveHint=false, consistent with PDF generation. The description does not add behavioral context beyond annotations (e.g., time, permissions).

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

Conciseness4/5

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

Single sentence, efficient. Could add brief context without becoming verbose.

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?

Adequate for a simple tool with one parameter and output schema. Lacks prerequisites or behavior notes.

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

Parameters2/5

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

Schema coverage is 0%. The description does not explain the 'session_id' parameter's purpose or format, relying on 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 clearly states the tool's purpose: 'Generate a PDF verification report for a session.' It uses a specific verb ('generate') and resource ('PDF verification report for a session'), distinguishing it from sibling session and report tools.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., didit_report_get, didit_session_get). No mention of prerequisites or exclusions.

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

didit_session_get_decisionA
Read-only
Inspect

Get the full verification decision and all extracted data for a session.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 and destructiveHint=false. The description adds that the tool returns 'full verification decision and all extracted data', but does not disclose additional behavioral traits such as required session status or data format details. With annotations covering safety, a score of 3 is appropriate.

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

Conciseness5/5

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

A single sentence that is clear and front-loaded. 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?

The tool has one parameter, an output schema, and annotations. The description is sufficient for a simple retrieval tool, though it could benefit from mentioning when to use it (e.g., after session completion).

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% (session_id described as 'Session UUID'). The description does not add any extra meaning beyond the schema. Baseline 3 is correct.

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' and specifies the resource 'full verification decision and all extracted data for a session'. It distinguishes from sibling tools like didit_session_list (list all sessions) and didit_session_get_import (get import details).

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 decision and extracted data, but does not explicitly state when to use it instead of other session-related tools, nor does it provide exclusions or prerequisites.

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

didit_session_get_importA
Read-only
Inspect

Get the status and summary of a bulk import job.

ParametersJSON Schema
NameRequiredDescriptionDefault
import_idYesImport job ID returned by didit_session_create_import

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations (readOnlyHint=true, destructiveHint=false) already indicate a safe read operation. The description reinforces this without adding new behavioral details (e.g., permissions, rate limits, response structure). 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?

One sentence of 10 words, perfectly concise. No filler or redundancy. Structure is clear 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?

Given the presence of an output schema, high schema coverage, and sparse annotations, the description is adequate for a simple read operation. It could mention expected response fields or usage context, but is generally 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% for the single parameter import_id. The description adds the origin of the ID ('returned by didit_session_create_import'), which provides context but does not significantly enhance 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?

Description clearly states it retrieves status and summary of a bulk import job. The verb 'get' and resource 'import' are specific. It distinguishes from sibling tools like didit_session_create_import (creation) and didit_session_get_import_errors (errors).

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 as a follow-up after creating an import, but no explicit when-to-use or alternatives are mentioned. The description does not compare to sibling tools or state prerequisites.

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

didit_session_get_import_errorsA
Read-only
Inspect

List per-row errors for a bulk import job (rows that failed validation or processing).

ParametersJSON Schema
NameRequiredDescriptionDefault
import_idYesImport job ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 destructiveHint=false, so the agent knows it's safe. The description adds that it lists per-row errors, which is consistent with the annotation and provides specific behavioral information.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words. It is front-loaded with the core action and resource.

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

Completeness5/5

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

Given the tool's simplicity (1 parameter, output schema exists), the description is complete. It explains what errors are listed and the context (bulk import job). The output schema handles 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% for the single parameter 'import_id', which already has a description 'Import job ID'. The tool description adds no further meaning beyond that, meeting the baseline for 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 clearly states the tool's purpose: 'List per-row errors for a bulk import job (rows that failed validation or processing).' It uses a specific verb ('list') and identifies the resource ('per-row errors for a bulk import job'), distinguishing it from sibling tools like didit_session_get_import.

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 context (for a bulk import job) but does not explicitly state when to use this tool versus alternatives, nor does it mention prerequisites or a when-not-to-use scenario.

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

didit_session_get_import_templateA
Read-only
Inspect

Download the canonical import template (column headers and format) used by didit_session_create_import.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false; description adds context about being a template for a specific import, which is useful but not critical 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?

Single sentence, front-loaded with actionable verb 'Download', 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 zero-parameter tool with good annotations and output schema, description is complete enough. Could mention template format (e.g., CSV) but not necessary.

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

Parameters4/5

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

No parameters in schema (100% coverage), so description need not add parameter details. Baseline of 4 applies.

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

Purpose5/5

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

Description clearly states 'Download the canonical import template used by didit_session_create_import' with a specific verb and resource, distinguishing it from sibling tools like didit_session_create_import and didit_session_get_import.

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?

Implies usage before creating an import via didit_session_create_import, but does not explicitly state when or when-not to use it versus alternatives.

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

didit_session_import_sharedAInspect

Import a shared verification session from a partner (Reusable KYC).

ParametersJSON Schema
NameRequiredDescriptionDefault
share_tokenYesToken received from the sharing partner

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

The description does not disclose behavioral traits beyond the operation name. Annotations (readOnlyHint=false, destructiveHint=false) provide minimal context, and the description does not add details about side effects, idempotency, or authentication 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?

The description is a single, clear sentence that is front-loaded and contains no filler. Every word adds value.

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

Completeness3/5

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

For a simple import operation with one parameter and an output schema, the description is adequate but does not mention what the tool returns or any prerequisite conditions. It covers the basics but lacks completeness.

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

Parameters3/5

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

The schema already provides a description for the single parameter 'share_token' ('Token received from the sharing partner'), which closely mirrors the overall description. The description adds no extra parameter-level information, 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 clearly states the action ('Import'), the resource ('shared verification session'), and the context ('from a partner'), distinguishing it from sibling tools like didit_session_get_import.

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 share token is available from a partner but does not explicitly state when to use this tool versus alternatives like didit_session_create_import or didit_session_get_import.

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

didit_session_listA
Read-only
Inspect

List verification sessions for ONE app. If you have multiple apps (or pass no scope) this automatically spans every app, newest first — but didit_session_search is the canonical cross-app tool and what to reach for to answer "my last N sessions". status accepts session-level values: Not Started, In Progress, In Review, Approved, Declined, Expired, Abandoned, Kyc Expired, Resubmitted, Awaiting User.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by session status (Not Started, In Progress, In Review, Approved, Declined, Expired, Abandoned, Kyc Expired, Resubmitted, Awaiting User)
session_kindNoKYC (user), KYB (business), or all
vendor_dataNoFilter by vendor_data
workflow_idNoFilter by workflow UUID
searchNoFree-text search
date_fromNoISO date lower bound
date_toNoISO date upper bound
limitNoPage size (LimitOffset pagination)
offsetNoPagination offset

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds crucial behavioral context: auto-spans all apps if multiple or no scope, orders newest first. No contradictions with annotations.

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

Conciseness5/5

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

Two sentences, no fluff. First sentence states core purpose, second provides alternative tool reference and status details. Well-structured and efficient.

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

Completeness4/5

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

Given 9 parameters and an output schema, the description covers main behavior (scope, ordering, status filtering) and distinguishes from sibling. Could mention pagination or default limit, but overall adequate for a list 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 coverage is 100%, but the description adds value by explicitly listing all valid status values and clarifying that they are 'session-level values', which is not fully captured in the schema's string type description.

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

Purpose5/5

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

The description clearly states the verb 'List' and resource 'verification sessions for ONE app', explicitly distinguishing it from didit_session_search as the cross-app alternative. 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 Guidelines5/5

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

Explicitly tells when to use this tool vs. the sibling didit_session_search, including that didit_session_search is the canonical cross-app tool for answering 'my last N sessions'. Provides clear context on 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.

didit_session_list_reviewsB
Read-only
Inspect

List the review history and activity log for a session.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds minimal behavioral context beyond the annotation, only stating it lists history and logs.

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, concise sentence that is front-loaded with the action. No unnecessary words, but could be slightly expanded for completeness.

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 list tool with one parameter and an existing output schema, the description is adequate but minimal. It does not mention pagination or output structure, though the output schema covers return values.

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

Parameters2/5

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

Schema has one required parameter 'session_id' with 0% coverage (no description). The tool description does not explain the parameter's format, source, or validation, relying solely on the schema which lacks detail.

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 review history and activity log for a session, specifying the verb 'List' and resource 'review history and activity log for a session'. It distinguishes from sibling tools like 'didit_session_add_review' (adds review) and 'didit_session_list' (lists sessions).

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. It does not mention when not to use it or provide comparisons with sibling tools like 'didit_session_add_review' or 'didit_session_list'.

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

didit_session_shareBInspect

Share a verified session with a trusted partner for reusable KYC (B2B session sharing).

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
partner_client_idYesThe partner application's client_id

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

Annotations indicate the tool is not read-only and not destructive, which aligns with 'share'. However, the description adds no further behavioral context (e.g., auth requirements, rate limits, side effects) 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 a single, front-loaded sentence with no unnecessary words, achieving high conciseness.

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 existence of an output schema (not shown), the description is adequate but fails to mention what the share operation returns (e.g., a link or token) or any usage scenario, leaving some gaps in completeness.

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

Parameters2/5

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

Schema coverage is 50%; only 'partner_client_id' has a description. The tool description does not elaborate on parameters. 'session_id' lacks any explanation, so the description adds minimal value 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 clearly states the action ('share'), the resource ('verified session'), and the purpose ('reusable KYC/B2B session sharing'), distinguishing it from sibling tools like session_create or session_list.

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

Usage Guidelines3/5

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

The description implies usage for sharing KYC sessions but lacks explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions.

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

didit_session_update_dataAInspect

Correct the KYC data extracted from the ID document on a session (reviewer override). Only send the fields you want to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
document_typeNo
document_subtypeNo
document_numberNo
personal_numberNo
date_of_birthNoYYYY-MM-DD
date_of_issueNoYYYY-MM-DD
expiration_dateNoYYYY-MM-DD
issuing_stateNoISO 3166-1 alpha-3 issuing country
first_nameNo
last_nameNo
genderNo
addressNo
place_of_birthNo
nationalityNo
marital_statusNo
extra_fieldsNoDocument-specific extra fields
parsed_addressNoStructured address override

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

The description adds behavioral context beyond minimal annotations: it clarifies the operation is a mutation for reviewer override and that only specified fields are updated. While annotations only convey non-read-only and non-destructive, the description omits potential side effects like triggering re-verification or downstream impacts.

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: a concise action-resource statement and a clear usage instruction. It is front-loaded with the primary purpose and contains zero superfluous words.

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

Completeness2/5

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

Given the tool's complexity (18 parameters, nested objects, output schema), the description lacks important context about post-update effects, permanence, session state requirements, or any triggers. Even though an output schema exists, the brief description does not adequately cover the operation's implications.

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

Parameters2/5

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

With only 33% schema description coverage, the description should compensate but only provides a general instruction to send only changed fields. It does not elaborate on individual parameters such as date formats, enum meanings, or the purpose of nested objects, leaving much ambiguity for the agent.

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 'Correct' and the resource 'KYC data extracted from the ID document on a session', specifying it's a 'reviewer override'. It distinguishes the tool as a partial update operation, setting it apart from other session tools like create or status updates.

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: 'Only send the fields you want to change' indicates a partial update pattern. It also implies reviewer use via 'reviewer override'. However, it does not explicitly mention when not to use or list alternatives among the many sibling session tools.

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

didit_session_update_poa_dataAInspect

Correct the Proof of Address data extracted from the POA document on a session (reviewer override). Only send the fields you want to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
issuing_stateNoISO 3166-1 alpha-3 issuing country
document_typeNo
document_languageNo
issuerNo
issue_dateNoYYYY-MM-DD
poa_addressNo
name_on_documentNo
extra_fieldsNo
poa_parsed_addressNoStructured address override

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Description discloses partial update behavior, but does not detail permissions, side effects, or consequences. Annotations provide minimal info, so description adds some value but lacks depth.

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

Conciseness5/5

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

Single sentence front-loads purpose and usage hint. 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.

Completeness2/5

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

With 10 parameters and an output schema, the description is too brief. It doesn't explain return values, error cases, or handle nested objects like poa_parsed_address.

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

Parameters2/5

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

Only 30% of parameters have schema descriptions. The description adds no extra meaning beyond the partial update hint; many parameters remain undocumented in both schema and 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?

Description clearly states the tool corrects Proof of Address data on a session, specifying it's a reviewer override. It distinguishes from sibling tools like didit_session_update_data by focusing on POA data.

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?

Description provides guidance on usage: 'Only send the fields you want to change' implies partial update. It also mentions 'reviewer override', giving context but not explicitly comparing to alternatives.

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

didit_session_update_statusAInspect

Approve, decline, or request resubmission of a session. For resubmission, pass new_status='Resubmitted' and nodes_to_resubmit; already-approved steps are kept.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
new_statusYesNew decision status
commentNoReviewer note stored on the audit trail
nodes_to_resubmitNoNode IDs the user must redo (only for Resubmitted)
send_emailNoEmail the user about the status change
email_addressNoOverride the recipient email
email_languageNoLanguage for the notification email

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false, so the mutation is expected. The description adds one behavioral trait: for resubmission, already-approved steps are kept. But it does not disclose side effects of approval/decline, required permissions, or reaction of other systems, which would be valuable given the absence of detailed 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, no filler. The first sentence states the core purpose, and the second adds critical usage detail for resubmission. Every word earns its place.

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?

The description is adequate for a straightforward status update tool, especially given an output schema exists. However, it does not cover all statuses equally (e.g., for approval or decline, no additional guidance on parameters like comment or send_email is given), leaving some ambiguity for the 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?

With 86% schema coverage, the schema already explains most parameters. The description adds contextual meaning by tying nodes_to_resubmit to the resubmission flow and noting that approved steps persist. This is helpful but does not substantially elevate understanding 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 tool's function: 'Approve, decline, or request resubmission of a session.' This uses a specific verb and resource, and it distinguishes the tool from session-related siblings (e.g., didit_session_add_review) by focusing on status changes.

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 explicit guidance for resubmission ('For resubmission, pass new_status=''Resubmitted'' and nodes_to_resubmit; already-approved steps are kept'). However, it does not give when-to-use or when-not-to-use advice for other statuses or alternatives, leaving the agent to infer from context.

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

didit_transaction_createBInspect

Submit a transaction for monitoring and rule evaluation. transaction_details and subject shapes depend on transaction_category.

ParametersJSON Schema
NameRequiredDescriptionDefault
transaction_idYesREQUIRED. Your unique transaction identifier
transaction_categoryYesREQUIRED. Determines the expected transaction_details/subject shape
transaction_detailsYesREQUIRED. Category-specific transaction payload
subjectYesREQUIRED. The party initiating the transaction (usually a vendor_data reference)
counterpartyNoThe other party in the transaction
transaction_atNoISO timestamp of the transaction
time_zoneNo
custom_propertiesNoCustom values keyed for monitoring rules (custom_values.<key>)
travel_rule_detailsNo
network_snapshotNo
include_crypto_screeningNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With readOnlyHint=false indicating a write operation, the description adds minimal behavioral context beyond 'monitoring and rule evaluation'. It does not mention side effects, synchronous behavior, or what triggers after submission.

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 fluff. Every part contributes to understanding the tool's core function and a key dependency.

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

Completeness2/5

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

Given the complexity (11 parameters, nested objects, output schema exists), the description is too minimal. It does not cover prerequisites, authentication, or expected behavior beyond submission. The output schema exists but is not referenced.

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 description adds meaning by stating that transaction_details and subject shapes depend on transaction_category, which is not in the schema. Baseline is 3 due to 64% schema coverage; description provides some extra context but not for all 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 states the verb 'Submit' and the resource 'transaction for monitoring and rule evaluation', distinguishing it from sibling transaction tools (get, list, search, screen_wallet). The dependency on transaction_category for shapes is also mentioned.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives like didit_transaction_screen_wallet. The description implies monitoring and rule evaluation but does not state conditions or exclusions.

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

didit_transaction_getA
Read-only
Inspect

Get a single monitored transaction and its rule-evaluation result.

ParametersJSON Schema
NameRequiredDescriptionDefault
transaction_idYesTransaction ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations provide readOnlyHint=true and destructiveHint=false, so the description's addition of 'monitored transaction and its rule-evaluation result' adds context about the return value 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 sentence, front-loaded with the key purpose, and contains no extraneous words.

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

Completeness5/5

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

Given the tool's simplicity (one required parameter, output schema present), the description adequately covers the functionality and expected output.

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?

With 100% schema description coverage, the single parameter 'transaction_id' is already documented. The description does not add any meaning beyond what the schema provides, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the specific resource 'single monitored transaction' and includes 'rule-evaluation result', distinguishing it from sibling tools like didit_transaction_list or didit_transaction_search that handle multiple transactions.

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 no explicit guidance on when to use this tool over alternatives, such as when a specific transaction ID is known. It is implied from the purpose but not stated.

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

didit_transaction_listA
Read-only
Inspect

List monitored transactions for ONE app; with multiple apps (or no scope) it auto-spans all your apps. For a cross-app query prefer didit_transaction_search. Supports limit/offset pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only and non-destructive. Description adds scope behavior (auto-span if multiple apps or no scope) and pagination support. Does not contradict 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, no redundancy. First sentence front-loads the core purpose and scope; second adds sibling guidance and pagination. 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?

Given low parameter count and presence of output schema, description covers scope and pagination. Lacks details on parameter formats or optionality, but overall adequate for the tool'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 coverage is 0% so description must compensate. It states 'Supports limit/offset pagination' linking the two parameters to pagination, but doesn't describe format, defaults, or constraints. Meets baseline with minimal additional 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?

Clearly states it lists monitored transactions for one app, distinguishing from the cross-app sibling didit_transaction_search. The verb 'List' and resource 'monitored transactions' are 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?

Explicitly recommends using didit_transaction_search for cross-app queries, and mentions scope behavior (one app vs auto-span). Could add more explicit 'when not to use' but sufficient.

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

didit_transaction_screen_walletAInspect

Screen a single crypto wallet address for AML risk WITHOUT creating a transaction. Returns risk_score, severity, sanctions_hit, source/destination of funds. Requires transaction monitoring to be configured (a provider key) or returns 409.

ParametersJSON Schema
NameRequiredDescriptionDefault
wallet_addressYesREQUIRED. The crypto address to screen (must match the chain's address format)
blockchainYesREQUIRED. Asset / chain identifier
directionNoOptional screening direction context

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior2/5

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

Description emphasizes no transaction creation, implying read-only operation, but annotations set readOnlyHint=false, contradicting. The description does add behavioral context (409 error), but the contradiction undermines trust.

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 purpose, no wasted words. Efficient and easily scannable.

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 output schema existing, description covers key returns and prerequisite. Minor gap: omits explanation of direction parameter and configuration details. Still fairly complete for a screening 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 coverage is 100%, so baseline 3. Description adds no extra meaning beyond schema descriptions; it mentions wallet address and blockchain but not direction in detail.

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 screens a crypto wallet for AML risk without creating a transaction, and lists the returned fields (risk_score, severity, sanctions_hit). It distinguishes from transaction creation 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 Guidelines5/5

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

Provides explicit context: when to screen (AML risk assessment) and when not (avoiding transaction creation). Also mentions prerequisite of transaction monitoring configuration and potential 409 error, guiding proper use.

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

didit_vendor_business_createCInspect

Create a business record manually (KYB).

ParametersJSON Schema
NameRequiredDescriptionDefault
vendor_dataNoYour unique identifier for the business
display_nameNo
legal_nameNo
registration_numberNo
country_codeNoISO 3166-1 alpha-2 country code
statusNo
metadataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

The description adds minimal behavioral context beyond annotations. It declares it is a 'Create' operation, consistent with readOnlyHint=false. However, it does not disclose side effects, idempotency, permission requirements, or any validation behavior that would help an agent anticipate tool behavior.

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

Conciseness3/5

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

The description is extremely short (5 words), which is concise but at the cost of informativeness. It conveys the basic purpose but does not earn its place for a tool with 7 parameters and low schema coverage.

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

Completeness2/5

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

Given the tool's complexity (7 parameters, nested objects, output schema), the description is incomplete. It does not explain parameter roles, output format, or prerequisites. The context 'manual KYB' is helpful but insufficient for full understanding.

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

Parameters1/5

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

The description does not mention any of the 7 parameters despite low schema description coverage (29%). It fails to add meaning beyond what the schema provides. Parameters like 'vendor_data' or 'country_code' are critical but undocumented in the 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 'Create a business record manually (KYB)' uses a specific verb ('Create') and resource ('business record'), and adds context about the method ('manually') and purpose ('KYB'). This clearly distinguishes it from sibling tools like 'didit_vendor_business_update' or 'didit_vendor_business_delete'.

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 manually creating a KYB business record, but provides no explicit guidance on when to use this tool versus alternatives (e.g., automated creation, or updating existing records). No when-not-to-use or exclusion criteria are given.

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

didit_vendor_business_deleteA
Destructive
Inspect

Batch delete businesses by vendor_data list and/or didit_internal_id list, or delete all businesses.

ParametersJSON Schema
NameRequiredDescriptionDefault
vendor_data_listNo
didit_internal_id_listNo
delete_allNoSet true to delete ALL businesses

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already set destructiveHint: true, so the agent knows this is destructive. The description adds that deletion can be targeted via lists or global. However, it doesn't mention if deletion is permanent, requires authorization, or has cascading effects. With annotations covering the destructive nature, the description provides adequate but not exhaustive 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?

The description is a single sentence that front-loads the action and resource. Every word serves a purpose, with no redundancy or fluff. It efficiently conveys the core functionality in a compact form.

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?

The tool has 3 optional parameters and an output schema. The description covers the deletion scenarios but misses a critical constraint: at least one of vendor_data_list, didit_internal_id_list, or delete_all must be provided. Without that note, an agent might call the tool with no parameters, resulting in a no-op or error. The description is otherwise complete for a batch delete 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 coverage is low (33% with only delete_all described). The description compensates by explaining that vendor_data_list and didit_internal_id_list are for batch deletion by those identifiers. This adds meaning beyond the bare parameter names in the schema, helping the agent understand their intended use.

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 'Batch delete', the resource 'businesses', and three distinct methods: by vendor_data list, by didit_internal_id list, or delete all. This precisely distinguishes it from sibling tools like didit_vendor_business_update_status or didit_vendor_business_update.

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 deletion but does not explicitly state when not to use it or suggest alternatives. For example, it doesn't clarify that this tool should not be used for status updates or that delete_all is irreversible. Given the sibling context, an explicit 'when to use vs. when not to' would improve clarity.

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

didit_vendor_business_getA
Read-only
Inspect

Get details of a specific business by its vendor_data identifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
vendor_dataYesThe vendor_data value that identifies the business

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 and destructiveHint=false. Description adds no further behavioral context beyond stating it gets details. 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?

One concise sentence, front-loaded with action and resource. No redundant 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?

Simple read-only tool with output schema present. Description sufficiently covers purpose and parameter; return format is handled by 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?

Single parameter 'vendor_data' is fully described in schema (100% coverage). Description restates schema 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?

Clear verb ('Get'), resource ('details of a specific business'), and identifier ('vendor_data'). Distinguishes from sibling tools like list and search.

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

Usage Guidelines3/5

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

No explicit when-to-use or alternatives. Purpose is straightforward, but no guidance on 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.

didit_vendor_business_listA
Read-only
Inspect

List verified businesses (KYB, grouped by vendor_data) for ONE app; with multiple apps (or no scope) it auto-spans all your apps. For a cross-app lookup prefer didit_vendor_business_search. Supports limit/offset pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint true and destructiveHint false, so the tool is safe. The description adds behavioral context: grouping by vendor_data, scope behavior, and pagination support. No contradictions. Does not mention auth or rate limits, but annotations cover safety.

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, no wasted words. Front-loaded with main purpose, then guidance, then pagination details. Every sentence adds value.

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

Completeness5/5

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

For a list tool with output schema and pagination, the description covers all essential aspects: what it lists, scope behavior, pagination, and alternative tool. No 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 0%, so description carries the burden. It states 'Supports limit/offset pagination', clarifying the purpose of the two parameters. While it doesn't specify format (e.g., integer strings), this is sufficient for a list tool.

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

Purpose5/5

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

The description clearly states it lists verified businesses (KYB, grouped by vendor_data) for one app or auto-spans across apps. It distinguishes from sibling didit_vendor_business_search by specifying 'cross-app lookup prefer ...'. The verb 'List' and resource 'verified businesses' are specific.

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 advises to use didit_vendor_business_search for cross-app lookups, providing a clear alternative. Also implies this tool is for single-app or auto-spanning contexts, giving practical usage context.

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

didit_vendor_business_updateBInspect

Update a business's profile fields. Only send the fields you want to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
vendor_dataYes
display_nameNo
legal_nameNo
registration_numberNo
country_codeNoISO 3166-1 alpha-2 country code
statusNo
metadataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=false (write) and destructiveHint=false (non-destructive). The description adds no behavioral context beyond the word 'Update', such as permissions, idempotency, or side effects.

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

Conciseness5/5

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

Two sentences, zero wasted words, front-loaded with the primary action. Highly concise and structured.

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

Completeness2/5

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

Despite having an output schema, the description is too brief. It does not mention return value, error handling, or context for the 7 parameters. More detail is needed for a mutation tool with nested objects.

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

Parameters2/5

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

Schema coverage is only 14% (1 of 7 params described). The description only adds the insight about partial updates ('Only send the fields you want to change') but does not explain other parameters or their 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 'Update a business's profile fields' with a specific verb and resource. It distinguishes from sibling 'didit_vendor_business_update_status' which updates only status, and other CRUD tools like create/get/delete.

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

Usage Guidelines3/5

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

The description implies when to use (when updating fields) and includes the hint 'Only send the fields you want to change' for partial updates, but lacks explicit guidance on when not to use or comparisons to alternatives like create or delete.

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

didit_vendor_business_update_statusBInspect

Set a business's monitoring status (ACTIVE, FLAGGED, or BLOCKED).

ParametersJSON Schema
NameRequiredDescriptionDefault
vendor_dataYes
statusYesNew status

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

The description adds minimal behavioral context beyond annotations. Annotations indicate it is not read-only and not destructive, but the description does not disclose any additional traits like required permissions or side effects.

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

Conciseness5/5

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

Single sentence, no extraneous words. Front-loaded with the action and resource.

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 status update, the description covers the core functionality, but it lacks context on the 'vendor_data' parameter and does not reference any output schema details.

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 description explains the 'status' parameter's possible values, but the 'vendor_data' parameter is left undocumented. With 50% schema coverage, the description partially compensates but remains incomplete.

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 ('Set'), the resource ('business's monitoring status'), and the allowed values ('ACTIVE, FLAGGED, or BLOCKED'). It distinguishes from sibling tools like didit_vendor_business_update which updates other fields.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or 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.

didit_vendor_user_createBInspect

Create a user record manually (e.g. to pre-register a vendor_data identity or attach allowlisted emails/phones).

ParametersJSON Schema
NameRequiredDescriptionDefault
vendor_dataYesREQUIRED. Your unique identifier for the user
full_nameNo
display_nameNo
date_of_birthNoYYYY-MM-DD
statusNo
metadataNo
approved_emailsNo
approved_phonesNo
issuing_statesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, meaning the tool is a mutation but not destructive. The description adds no further behavioral context such as auth requirements, rate limits, or side effects beyond stating 'create'. For a mutation tool without full annotations, this is insufficient.

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

Conciseness5/5

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

The description is a single sentence of 20 words, front-loading the core action 'Create a user record manually' and providing key examples. Every word is meaningful, with no fluff or repetition.

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

Completeness2/5

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

Given the tool's complexity (9 parameters, output schema, nested objects), the description is too brief. It does not cover many parameters or fully explain the manual creation process. While output schema exists and reduces need for return value explanation, the description still lacks sufficient detail for an AI agent to use 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 low (22%), so the description must compensate. It hints at 'attach allowlisted emails/phones' which maps to approved_emails and approved_phones parameters, but many parameters (full_name, display_name, status, metadata, issuing_states) are not explained. The description adds some value but not enough for full comprehension.

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 'create' and the resource 'user record', with specific use cases like pre-registering a vendor_data identity or attaching allowlisted emails/phones. This differentiates it from sibling tools such as didit_vendor_user_update, didit_vendor_user_get, etc.

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 implied usage via examples (pre-register, attach allowlisted items) but lacks explicit guidance on when to use this tool versus alternatives like didit_vendor_user_search or didit_vendor_user_list. No exclusions or when-not conditions are given.

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

didit_vendor_user_deleteA
Destructive
Inspect

Batch delete users by vendor_data list, or delete all users.

ParametersJSON Schema
NameRequiredDescriptionDefault
vendor_data_listNoArray of vendor_data values to delete
delete_allNoSet true to delete ALL users

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/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, indicating a destructive write operation. The description adds context about the two deletion modes, which is helpful. No contradictions. It could mention that deletions are irreversible, but given the destructive hint, the agent is sufficiently warned.

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 efficiently conveys the tool's capability. No unnecessary words, and it covers both operational modes. Perfectly concise for the information it needs to convey.

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

Completeness5/5

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

Given that the tool has only two simple parameters, clear annotations, and an output schema (as indicated), the description is complete. It informs the agent of the two possible actions and no critical information is missing. The agent can confidently use this tool based on the provided 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 well-documented. The description succinctly restates the two modes: 'by vendor_data list' corresponds to vendor_data_list, and 'delete all users' corresponds to delete_all. It adds no new meaning beyond what the schema already provides, which is acceptable for 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 clearly states the tool's purpose: 'Batch delete users by vendor_data list, or delete all users.' It specifies the verb 'delete' and the resource 'users', and distinguishes between two modes. Among sibling tools with similar prefixes, this concrete purpose stands out.

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 when to use this tool: when you need to delete vendor users either by a list of vendor_data or all at once. It does not explicitly state not to use it for other user types or compare to other delete tools, but the tool name and resource make it clear enough. Slight improvement possible with more explicit exclusion criteria.

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

didit_vendor_user_getA
Read-only
Inspect

Get details of a specific user by their vendor_data identifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
vendor_dataYesThe vendor_data value that identifies the user

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false, so the description adds minimal behavioral context (only 'Get details'). No contradictions, but the description does not enrich 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?

The description is a single focused sentence of 12 words, front-loading the action and resource. Every word is necessary; no fluff.

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

Completeness5/5

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

Given the output schema exists, the description does not need to explain return values. It covers all necessary information for a simple read operation by a unique identifier.

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

Parameters3/5

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

Schema coverage is 100% and the parameter description in the schema already explains 'vendor_data'. The tool description simply repeats the concept without adding new semantic meaning.

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

Purpose5/5

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

The description uses specific verb 'Get details' and resource 'specific user', clearly distinguishing from sibling tools like didit_vendor_user_list (list all) and didit_vendor_user_search (search by criteria) by specifying identification via 'vendor_data identifier'.

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 state when to use this tool versus alternatives like list or search, but the context of having a vendor_data identifier implies its use case. No exclusions or alternative references are provided.

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

didit_vendor_user_listA
Read-only
Inspect

List verified users (grouped by vendor_data) for ONE app; with multiple apps (or no scope) it auto-spans all your apps. For a cross-app customer lookup prefer didit_vendor_user_search. Supports limit/offset pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Description adds concrete behavioral traits: grouping by vendor_data, scope spanning, pagination support. Annotations already indicate read-only and non-destructive, so 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?

Two concise sentences with front-loaded purpose and immediate usage guidance. Every sentence adds value.

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

Completeness5/5

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

Given output schema exists and annotations, description covers scope, pagination, and alternative tool. No missing context for a list operation.

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?

Description adds meaning to parameters by mentioning pagination support, but does not specify format or constraints for limit/offset. Schema has 0% description coverage, so description compensates partially.

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 specific verb 'list' and resource 'verified users', clearly explains scope behavior (one app vs multiple) and distinguishes from sibling tool didit_vendor_user_search.

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 states when to avoid this tool ('For a cross-app customer lookup prefer didit_vendor_user_search') and describes the single-app vs multi-app behavior.

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

didit_vendor_user_updateAInspect

Update a user's profile fields. Only send the fields you want to change. To change ONLY the monitoring status, prefer didit_vendor_user_update_status.

ParametersJSON Schema
NameRequiredDescriptionDefault
vendor_dataYesThe vendor_data value that identifies the user
full_nameNo
display_nameNo
date_of_birthNoYYYY-MM-DD
statusNoMonitoring status
metadataNo
approved_emailsNo
approved_phonesNo
issuing_statesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations indicate mutation (readOnlyHint=false) and non-destructive (destructiveHint=false). Description adds no extra behavioral context beyond stating update 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 concise sentences, front-loaded with purpose, no wasted words.

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

Completeness2/5

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

Despite output schema existing, description lacks parameter semantics and behavioral details for a complex tool with 9 parameters and nested objects.

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

Parameters2/5

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

Schema coverage is low (33%), and description does not explain parameter meanings beyond a general usage tip. Does not compensate for missing schema 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?

Description clearly states verb 'Update' and resource 'user's profile fields'. It distinguishes from sibling didit_vendor_user_update_status by specifying when to use the sibling for status-only updates.

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 advises to send only fields to change and to prefer didit_vendor_user_update_status for monitoring status changes, providing clear when-not and alternative.

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

didit_vendor_user_update_statusBInspect

Set a user's monitoring status (ACTIVE, FLAGGED, or BLOCKED).

ParametersJSON Schema
NameRequiredDescriptionDefault
vendor_dataYesThe vendor_data value that identifies the user
statusYesNew status

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

Annotations already indicate non-read-only and non-destructive behavior. The description adds the specific status values but does not disclose any side effects, reversibility, or authorization requirements beyond what annotations offer.

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 wasted words, efficiently conveying the core 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 simple status update with two parameters and an output schema, the description is sufficiently complete. It lacks explanation of prerequisites or behavioral details, but the low complexity keeps it adequate.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are fully documented in the schema. The description adds no additional meaning beyond listing the enum values already 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 clearly states the verb ('Set'), the resource ('user's monitoring status'), and the allowed values ('ACTIVE, FLAGGED, or BLOCKED'), distinguishing it from sibling tools that update other aspects of a vendor user.

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 provides no guidance on when to use this tool versus alternatives like didit_vendor_user_update, nor any prerequisites or 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.

didit_verify_ageBInspect

Estimate a person's age from a facial image. Also performs passive liveness check.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
image_pathYesAbsolute path to facial image file
vendor_dataNoOptional identifier to link the result to a user

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, but the description does not clarify behavioral aspects such as whether the image is stored, if a new session or record is created, or what the output format is. While there is no contradiction with annotations, the description adds minimal extra context beyond stating the basic function.

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

Conciseness5/5

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

The description is extremely concise: one sentence with two clear clauses. It covers the core function without excess wording. Every word serves a purpose, 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.

Completeness3/5

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

Given that output schema exists (so return values are covered elsewhere), the description adequately states the main functions. However, it lacks context on image quality requirements, whether multiple faces are handled, or how the liveness check impacts age estimation. These gaps mean the description is merely adequate but not 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?

Input schema has 100% description coverage, so the baseline is 3. The description does not add any additional parameter insights beyond what the schema already provides (e.g., vendor_data is just 'optional identifier to link result to user' in both). No enhancement is provided.

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 tool estimates age from a facial image and also performs a passive liveness check. This specifies the verb 'estimate' and the resource 'age', and distinguishes it from sibling tools like didit_verify_passive_liveness (which only does liveness) and didit_verify_id (which does ID verification).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. For example, it does not mention that for liveness-only checks, didit_verify_passive_liveness might be more appropriate, or that for full identity verification, didit_verify_id should be used. The description only states what the tool does, not 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.

didit_verify_amlBInspect

AML screening against global watchlists, PEP lists, sanctions, and (optionally) adverse media. Supports person and company entity types.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
full_nameYesREQUIRED. Full name to screen
entity_typeNoDefaults to person
date_of_birthNoYYYY-MM-DD (improves match accuracy)
nationalityNoISO country code (improves match accuracy)
document_numberNo
include_adverse_mediaNoInclude adverse-media findings
include_ongoing_monitoringNoEnroll the entity for ongoing monitoring
vendor_dataNo
metadataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

Annotations set readOnlyHint=false and destructiveHint=false, implying mutation. The description only says 'screening' without clarifying side effects (e.g., if results are stored, if it triggers alerts). Adds minimal 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?

Two sentences: first states purpose, second lists entity types. No fluff, front-loaded, highly efficient.

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 output schema exists (not shown), description doesn't need to explain return values. But it omits prerequisites, result format, or whether it creates records. Adequate but not thorough.

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 73% (high), so description does not need to add much. The description mentions entity types already covered by the enum. No additional parameter meaning is provided beyond what's 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 clearly states the tool screens against AML-related lists (watchlists, PEP, sanctions, adverse media) and supports person and company entity types. It distinguishes from sibling tools like didit_verify_id and didit_verify_age.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., other verification tools). No when-not-to-use or alternative tool suggestions provided.

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

didit_verify_databaseCInspect

Validate identity data against national and global authoritative data sources. issuing_state (ISO 3166-1 alpha-2) is required and selects which sources run.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
issuing_stateYesREQUIRED. ISO 3166-1 alpha-2 country code that selects the data sources to query
first_nameNo
last_nameNo
middle_nameNo
full_nameNo
date_of_birthNoYYYY-MM-DD
document_numberNo
document_typeNo
personal_numberNo
tax_numberNo
genderNo
nationalityNo
servicesNoOptional service_ids to restrict which sources run
partial_match_actionNo
no_match_actionNo
vendor_dataNo
metadataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

Annotations indicate readOnlyHint=false (mutation) and destructiveHint=false. The description does not disclose side effects (e.g., record creation, cost), permission needs, or what happens after validation. 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.

Conciseness4/5

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

The description is very short (two sentences) with no redundancy. It front-loads the core purpose and critical parameter, but could integrate the issuing_state note more naturally.

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

Completeness2/5

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

For a tool with 19 parameters and an output schema, the description lacks coverage of how inputs map to the verification process, what outputs to expect, and how actions like partial_match_action work. The existing description is too thin for the complexity.

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

Parameters2/5

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

With 26% schema description coverage, the description only elaborates on issuing_state ('selects which sources run'). Other critical parameters (e.g., first_name, document_number, partial_match_action) are not explained beyond schema labels, leaving the agent without guidance.

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 tool validates identity data against authoritative data sources and mentions issuing_state selects sources. It distinguishes from siblings like didit_verify_id (document verification) by focusing on database checks, though could specify the type of databases.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like didit_verify_id, didit_verify_aml, etc. The description does not mention prerequisites, limitations, or 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.

didit_verify_email_checkAInspect

Verify the OTP code sent to an email. Max 3 attempts per code.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
emailYes
codeYesVerification code from email

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate non-read-only and non-destructive nature. The description adds value by disclosing a maximum of 3 attempts per code, alerting the agent to a rate limit behavior 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?

Two sentences, each adding distinct value: the first stating the primary action, the second a critical behavioral note. No wasted words, and the key verb 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?

Given the presence of an output schema and annotations, the description covers the core action and a constraint. It does not mention the prerequisite of having sent a code, but overall it sufficiently completes the picture for 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 75% (3 of 4 parameters have descriptions). The tool description does not add meaning beyond the schema, 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?

Description explicitly states the tool verifies an OTP code sent to an email, distinguishing it from the sending counterpart. It also adds a specific behavioral constraint (max 3 attempts). This clearly communicates the core function and scope.

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 after sending an OTP via a companion tool like didit_verify_email_send, but does not explicitly state when to use this tool versus alternatives. No when-not-to guidance is provided.

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

didit_verify_email_sendAInspect

Send a one-time verification code to an email address. Code valid for 5 minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
emailYesEmail address to verify

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations (readOnlyHint=false, destructiveHint=false) indicate a non-read, non-destructive operation. The description adds context by specifying the code's 5-minute validity, which is useful for agent decision-making.

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, front-loaded with the action, and contains 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 simple send-verification-code tool, the description covers core behavior and temporal constraint. Presence of output schema likely covers return values, so completeness is adequate.

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

Parameters3/5

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

Schema coverage is 100% with all parameters described. The description adds no additional parameter meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool sends a one-time verification code to an email address, and specifies the code is valid for 5 minutes. This distinguishes it from sibling tools like didit_verify_email_check.

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 email verification but does not provide explicit when-to-use or when-not-to-use guidance relative to sibling tools. No prerequisites or alternatives are mentioned.

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

didit_verify_face_matchAInspect

Compare two facial images to determine if they belong to the same person (1:1 face matching). The score is symmetric, so image order does not affect the result.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
image_1_pathYesAbsolute path to the first facial image (e.g. the selfie)
image_2_pathYesAbsolute path to the second facial image (e.g. the ID portrait)
vendor_dataNoOptional identifier to link the result to a user

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Adds symmetry property beyond annotations (which only give readOnlyHint=false, destructiveHint=false). However, does not disclose authorization needs, image handling, or other side effects typical for a write 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 sentences with no wasted words. Front-loaded with the core purpose, making it highly scannable.

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?

Output schema exists, so return values are covered. Parameter descriptions are in schema. However, missing usage context for a specialized verification tool among many siblings (e.g., when to use face_match vs face_search).

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The tool description adds no additional parameter meaning beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states it compares two facial images for 1:1 matching, with specific verb 'compare' and resource 'facial images'. It distinguishes from sibling tools like face_search (1:N) by explicitly mentioning 1:1 matching.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this vs alternatives like face_search or passive_liveness. Only mentions score symmetry, but no contextual usage advice.

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

didit_verify_idAInspect

Verify an identity document by submitting front (and optionally back) images. Returns structured OCR data and authenticity checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
front_image_pathYesAbsolute path to front image file
back_image_pathNoAbsolute path to back image file (optional)
vendor_dataNoOptional identifier to link the result to a user
perform_document_livenessNoRun document-presence (anti-screenshot) checks
minimum_ageNoDecline if the extracted age is below this value
preferred_charactersNoPreferred OCR script

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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. Description adds that it returns OCR data and authenticity checks, which is useful but does not elaborate on side effects, rate limits, or authentication needs. Adequate beyond annotations 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?

Description is a single sentence plus return-value context, with no redundant information. Purpose and behavior are stated upfront without 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 the output schema exists, return values are sufficiently explained. Description covers purpose and basic behavior. It does not detail optional parameters or prerequisites (e.g., file path requirements), but schema handles those. Nearly complete for selection and basic 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 coverage is 100% with descriptions for all 8 parameters. Description mentions front and optionally back images, matching schema. No additional semantic context beyond what schema provides, 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?

Description clearly states the tool verifies identity documents using front/back images and returns OCR data and authenticity checks. It distinguishes from sibling verification tools (face match, AML) through its focus on document images.

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?

Description implies usage for identity document verification but does not explicitly state when to use this tool versus alternatives like didit_verify_face_match or didit_verify_poa. No when-not or context exclusion provided.

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

didit_verify_kyb_selectAInspect

Resolve a candidate from didit_verify_kyb_search into a full company registry record. kyb_response_id is the per-search candidate handle returned by the search.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
kyb_response_idYesREQUIRED. Candidate handle from didit_verify_kyb_search
vendor_dataNo
metadataNo
save_api_requestNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate this is not read-only (false) and not destructive (false). Description adds that it resolves a candidate, but does not disclose potential side effects or auth requirements beyond what is implied.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, no redundant 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?

Given the presence of an output schema, the description suffices for core usage, but could elaborate on optional parameters like vendor_data and metadata.

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 50%. The description adds meaning for kyb_response_id ('Candidate handle from didit_verify_kyb_search') but does not clarify vendor_data, metadata, or save_api_request, which lack schema 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 uses specific verb 'resolve' and resources 'candidate from didit_verify_kyb_search into full company registry record', clearly distinguishing it from siblings like didit_verify_kyb_search.

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 after didit_verify_kyb_search by referencing 'kyb_response_id ... returned by the search', but does not explicitly state when not to use it or list alternatives.

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

didit_verify_passive_livenessAInspect

Passive liveness detection -- verify a person is physically present from a single image (no interaction required).

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
image_pathYesAbsolute path to facial image file
vendor_dataNoOptional identifier to link the result to a user

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, so the tool is a non-destructive mutation. Description adds that it uses a single image for passive detection, but does not disclose side effects, authentication requirements, or result format. With annotations present, the description provides some but not extensive 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?

Single, clear sentence with no superfluous text. Essential information is front-loaded (passive liveness detection). Highly concise.

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

Completeness4/5

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

Given the tool's simplicity (4 parameters, 1 required, output schema present, annotations provided), the description adequately covers the core functionality. Could add more on typical usage contexts (e.g., identity verification workflows) but is sufficient for selection.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. Description does not add meaningful detail beyond the schema; it mentions 'single image' matching image_path, but no additional parameter semantics.

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

Purpose5/5

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

Description clearly states it performs passive liveness detection from a single image, using a specific verb ('verify') and resource ('passive liveness'). It distinguishes from sibling verification tools (e.g., face match, ID verification) by emphasizing passive and single-image 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?

Description implies usage for liveness verification but does not explicitly state when to use or avoid this tool versus alternatives like didit_verify_face_match or didit_verify_id. No exclusion criteria or context provided.

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

didit_verify_phone_checkAInspect

Verify the OTP code sent to a phone number. Max 3 attempts per code.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
phone_numberYes
codeYesVerification code from SMS

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false. The description adds valuable behavioral context by stating the max attempts per code constraint, which influences agent decision-making (e.g., avoid exceeding attempts). No contradictions with annotations.

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

Conciseness5/5

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

The description is extremely concise: one clear sentence and a key constraint. Every word adds value, 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?

Given the presence of an output schema, the description adequately covers the tool's purpose and constraints. It does not detail prerequisites (e.g., prior OTP send) or expiration, but for a simple verification tool this 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?

The input schema has high coverage (75%), with only phone_number lacking a description. The description does not add additional meaning to parameters beyond what the schema provides, resulting in a baseline score 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?

The description clearly states the tool's purpose: verifying an OTP code sent to a phone number. It distinguishes itself from siblings like didit_verify_phone_send and didit_verify_email_check by focusing on verification with a specific resource (phone) and action (verify OTP).

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

Usage Guidelines3/5

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

The description implicitly suggests usage after sending an OTP via didit_verify_phone_send, but lacks explicit 'when to use' or 'when not to use' guidance. The max attempts constraint is useful but does not fully clarify the context versus alternative verification tools.

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

didit_verify_phone_sendAInspect

Send a one-time verification code to a phone number via SMS. Code valid for 5 minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
phone_numberYesPhone number with country code (e.g. +1234567890)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false, so mutation is expected. The description adds value by revealing that the code expires after 5 minutes, which is a behavioral detail beyond annotations. However, it does not mention potential side effects like rate limits or costs.

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 wasted words. The action is front-loaded, and the expiration detail is included. Could be improved by structuring into a single sentence with clear action and constraint, but it is already concise.

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?

Output schema exists, so return details are not needed. The description adequately covers the purpose and a key behavioral trait (expiration). It does not mention any prerequisites or constraints on phone number format beyond what is in the schema, but it is sufficient for a simple send action.

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%, meaning the schema already describes all three parameters. The description adds no extra semantic meaning beyond what is in the schema, so baseline score applies.

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

Purpose5/5

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

The description clearly states the action (send a one-time verification code via SMS) and specifies a constraint (code valid for 5 minutes). It is distinct from sibling tools like didit_verify_phone_check and didit_verify_email_send.

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 used to initiate verification before calling didit_verify_phone_check, but it does not explicitly state when to use this tool versus alternatives or provide any prerequisites. Usage guidance is implied by naming convention and sibling context.

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

didit_verify_poaBInspect

Proof of Address verification. Submit a single document image to extract and validate address information.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
document_image_pathYesAbsolute path to the POA document image
vendor_dataNoOptional identifier to link the result to a user
expected_addressNoAddress to validate the document against
expected_countryNoISO 3166-1 alpha-2 country code to validate against
expected_first_nameNo
expected_last_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/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, indicating mutation is possible but not destructive. The description adds that the tool 'extract[s] and validate[s] address information,' but does not disclose details like what happens on validation failure, required permissions, or whether the document is stored. It adds some context beyond annotations but not enough for full transparency.

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

Conciseness5/5

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

The description is extremely concise: two sentences that immediately convey the tool's purpose and action. 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.

Completeness2/5

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

Given the tool's complexity (8 parameters, output schema present, 1 required param), the description is too brief. It omits prerequisites (e.g., need for organization_id/application_id from other tools), does not differentiate from siblings like didit_verify_id, and fails to explain how the validation works or what the output contains (though output schema exists). Significantly incomplete.

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?

With 75% schema coverage, the input schema already documents most parameters. The description adds meaning by framing the tool's operation as 'extract and validate address information,' which implicitly explains expected_address, expected_country, and expected_name fields. However, it does not elaborate on required vs optional parameters or the role of vendor_data. Overall, marginal value beyond 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 clearly states the tool's purpose: 'Proof of Address verification' by 'submit[ting] a single document image to extract and validate address information.' It uses a specific verb ('verify') and resource ('proof of address'), distinguishing it from sibling verification tools like didit_verify_id and didit_verify_age.

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 lacks guidance on when to use this tool versus alternatives like didit_verify_id or didit_verify_database. It does not mention prerequisites (e.g., need for organization_id or application_id) or scenarios where this tool is unsuitable.

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

didit_webhook_createAInspect

Create a webhook destination. The response includes the signing secret used to verify the X-Signature header on delivered events.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYesREQUIRED. Human-readable name
urlYesREQUIRED. HTTPS endpoint to receive events
enabledNoWhether the destination receives events (default true)
webhook_versionNoPayload version (v3 recommended)
subscribed_eventsNoEvent types to deliver (e.g. status.updated, data.updated, user.created). Omit to receive all.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations indicate it is not read-only and not destructive, which aligns with creation. The description adds valuable behavioral information by stating that the response includes the signing secret for verifying X-Signature headers.

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

Conciseness5/5

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

Two succinct sentences: first states the core purpose, second adds an important behavioral insight about the response. No unnecessary 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?

With an output schema available and a clear description, the tool is largely complete. Minor missing details (e.g., idempotency, duplicate handling) but acceptable for a straightforward creation tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already details all parameters. The description does not add parameter-specific semantics beyond the schema, maintaining 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?

The description clearly states the verb ('Create') and resource ('webhook destination'), and distinguishes it from sibling webhook tools (delete, get, list, update).

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

Usage Guidelines3/5

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

No explicit when-to-use or alternatives guidance is provided. The description assumes the agent understands the context of webhook creation, but does not discuss prerequisites or when to avoid this tool.

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

didit_webhook_deleteA
Destructive
Inspect

Delete a webhook destination so it stops receiving events.

ParametersJSON Schema
NameRequiredDescriptionDefault
destination_uuidYesWebhook destination UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true, and the description adds context that deleting stops events, providing clarity beyond annotations 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?

The description is a single sentence, concise and front-loaded, with no wasted words.

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

Completeness5/5

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

Given the simplicity of the tool, the presence of an output schema, and thorough annotations, the description is complete and sufficient for an agent to use 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 covers 100% of the parameter with a description 'Webhook destination UUID', and the tool description adds no further meaning, meeting the baseline for 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 clearly states the verb 'Delete', the resource 'webhook destination', and the effect 'stops receiving events', distinguishing it from sibling tools like create, get, list, and update.

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 deleting a webhook, and no explicit exclusions or alternatives are needed given the simple nature of the tool. It is clear when to use it.

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

didit_webhook_getA
Read-only
Inspect

Get a single webhook destination, including its signing secret.

ParametersJSON Schema
NameRequiredDescriptionDefault
destination_uuidYesWebhook destination UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds that the response includes the signing secret, which is sensitive information. This adds value beyond annotations. 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, front-loaded sentence with no unnecessary words. Every part is essential: verb, resource, scope, and inclusion of signing secret.

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 retrieval tool with one parameter and an output schema (exists but not shown), the description states what is returned (signing secret). It is complete and sufficient for an agent to understand the tool's purpose and behavior.

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 single parameter 'destination_uuid' described as 'Webhook destination UUID'. The description does not add additional meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states 'Get a single webhook destination, including its signing secret.' It uses a specific verb ('Get') and resource ('webhook destination'), and identifies what is included (signing secret). This distinguishes it from sibling tools like didit_webhook_list (list all webhooks) and CRUD operations.

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: when you need details of a specific webhook. It does not explicitly state when not to use it or provide alternatives, but the context of sibling tools (list, create, update, delete) makes the usage clear. No misleading guidance.

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

didit_webhook_listA
Read-only
Inspect

List configured webhook destinations. Each destination has its own URL, version, enabled flag, subscribed events, and signing secret.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 destructiveHint=false, so the agent knows this is a safe read operation. The description adds value by specifying the fields returned (URL, version, enabled flag, subscribed events, signing secret), which is useful 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 very concise with two sentences. It immediately states the purpose in the first sentence and adds relevant detail in the second. No extraneous 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 parameters and clear annotations, the description is complete. It provides enough context for the agent to understand what the tool returns and that it is safe to use.

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 no parameters, and the schema coverage is 100%. The description does not need to explain parameters; it correctly focuses on the output.

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

Purpose5/5

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

The description explicitly states 'List configured webhook destinations', which is a specific verb-resource pair. It clearly distinguishes from sibling tools like didit_webhook_create or didit_webhook_get by indicating it returns all destinations.

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 state when to use this tool versus alternatives like didit_webhook_get. The purpose is implied but no usage guidance is provided.

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

didit_webhook_updateAInspect

Update a webhook destination's URL, version, enabled flag, or subscribed events.

ParametersJSON Schema
NameRequiredDescriptionDefault
destination_uuidYesWebhook destination UUID
labelNo
urlNo
enabledNo
webhook_versionNo
subscribed_eventsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/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's mention of 'update' is consistent but adds no additional behavioral context. No disclosure of whether updates are partial or full, how missing fields are treated, or any 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?

The description is a single sentence with no extraneous words. It is front-loaded with the action and lists the fields concisely. Every word adds value.

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

Completeness3/5

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

The tool has 6 parameters, low schema coverage, and an output schema (not shown). The description is short and covers only the list of updatable fields. It does not explain validation rules, side effects, or error scenarios. Given the complexity, more detail would be beneficial, but the output schema may mitigate the need for return value explanations.

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 only 17% (only destination_uuid described). The description lists which fields are updatable (URL, version, enabled flag, subscribed events) but does not explain their meaning, constraints (e.g., version enum values), or behavior when omitted. It provides a general mapping but lacks detailed semantics.

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

Purpose5/5

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

The description clearly states the verb 'Update' and identifies the resource as 'webhook destination'. It lists the specific fields that can be updated (URL, version, enabled flag, subscribed events), distinguishing it from sibling tools like didit_webhook_create, didit_webhook_delete, didit_webhook_get, and didit_webhook_list.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives. While the sibling names imply it is for modifying an existing webhook, there is no guidance on prerequisites (e.g., requiring a destination_uuid) or when not to use it (e.g., for initial creation).

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

didit_workflow_createAInspect

Create a SIMPLE (linear) verification workflow from an ordered list of features. Send features (uppercase feature values, in execution order) — NOT flat is_*_enabled flags or a workflow_type (those are rejected with 400). Put dependency features first (e.g. OCR before FACE_MATCH/NFC/DATABASE_VALIDATION). KYB workflows use KYB_REGISTRY/KYB_DOCUMENTS/KYB_KEY_PEOPLE. For BRANCHING / conditional logic (e.g. decline on a status, route on an extracted field, Document-AI proof-of-funds), use the graph tools instead: didit_workflow_get_field_definitions → build a graph → didit_workflow_validate_graph → didit_workflow_set_graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
workflow_labelNoDisplay name (max 50 chars)
featuresYesVerification features in execution order. Each: { feature, config?, label? }. Example: [{"feature":"OCR"},{"feature":"LIVENESS","config":{"face_liveness_method":"PASSIVE"}},{"feature":"FACE_MATCH"}]
is_defaultNoSet as default workflow for new sessions
statusNoOmit to publish immediately; 'draft' saves without publishing
is_white_label_enabledNo
is_desktop_allowedNo
max_retry_attemptsNo
retry_window_daysNo
session_expiration_timeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint=false annotation, the description details behavioral traits: rejections of improper inputs (400), requirement for dependency-first ordering, and specifics about status parameter (omit for immediate publish, 'draft' saves without publishing). No contradictions with annotations.

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

Conciseness5/5

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

Description is efficient, front-loaded with purpose, then usage guidelines, then specific examples. Every sentence serves a purpose without redundancy. Length is justified by complexity.

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

Completeness5/5

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

Given the tool's complexity (11 params, nested arrays, multiple sibling tools), the description is comprehensive. It covers when to use alternatives, gives data format examples, explains execution order, and addresses common pitfalls.

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 55% schema description coverage, the description adds significant meaning: explains ordering of features (dependencies first), gives KYB workflow examples, and clarifies the status parameter behavior. For undocumented parameters, schema descriptions exist. Some value added beyond 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 clearly states the tool creates a simple linear verification workflow from an ordered list of features. It distinguishes itself from branching graph tools, 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 Guidelines5/5

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

Provides explicit guidance on when to use this tool (simple linear workflows) vs. branching/case tools, even naming specific workflow tools. Also warns against using flat flags or workflow_type, which would be rejected.

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

didit_workflow_create_draftAInspect

Create an editable DRAFT version from a published workflow (graph/config edits require a DRAFT). Returns the new draft's uuid.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesWorkflow version uuid or stable workflow_id
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Description adds context beyond annotations: identifies that edits require a draft, and that creation is not read-only nor destructive. Annotations already convey non-readOnly/non-destructive, but description reinforces with specific usage.

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

Conciseness5/5

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

Two concise sentences: first states action and purpose, second states return value. No fluff, 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 purpose, usage context, and output. Could mention that the workflow must already be published, but that's implied. Given simplicity and output schema existence, it's fairly 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 description adds no extra meaning 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?

Clearly states it creates a draft from a published workflow, with a specific purpose (edits require draft). Distinguishes from sibling tools like create or publish by explaining the draft's role.

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 indicates when to use (before graph/config edits) and that it requires a published workflow. Does not list alternatives but the context is clear.

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

didit_workflow_deleteA
Destructive
Inspect

Delete a verification workflow. Existing sessions using it are not affected.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
workflow_idYesWorkflow UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true, but the description adds crucial context: deletion does not impact existing sessions. This goes beyond annotation to explain the scope of 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?

Two sentences, no wasted words. Front-loaded with the main action, followed by a key behavioral note. Efficient and clear.

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?

Tool is straightforward; description covers the core effect (deletion) and a critical nuance (sessions unaffected). Output schema exists, so return values need not be explained. Could mention required permissions or error states for completeness.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all three parameters. The description does not add parameter-specific semantics beyond the schema, hence baseline 3.

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

Purpose5/5

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

Description states 'Delete a verification workflow' which is a specific verb-resource pair. It clearly distinguishes from sibling tools like create, update, get, and list by being the only delete operation. Additional detail about non-affect on sessions adds clarity.

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?

States 'Existing sessions using it are not affected', which gives guidance on when it's safe to use (even with active sessions). However, it does not explicitly mention when not to use or alternatives like archiving.

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

didit_workflow_edit_graphAInspect

MODIFY an existing workflow's graph with small OPERATIONS — the right tool for editing a live workflow. You send only the deltas; the MCP fetches the full current graph SERVER-SIDE, applies your ops, validates, auto-creates a DRAFT (the live version is never touched), and saves. This means huge feature configs (documents_allowed, poa_documents_allowed, phone countries) are preserved exactly and you NEVER resend them. Validation failures return applied:false with the errors (nothing saved). Example to insert a branch after OCR and rejoin the existing pipeline at the Liveness node: ops = [ {op:'set_next', node_id:'', next:'branch1'}, {op:'set_node', node_id:'branch1', node:{node_type:'branch', branches:[{id:'declined',logic:'or',rules:[{field:'kyc.status',operator:'equals',value:'Declined'}],goto:'decline1'},{id:'eng',logic:'and',rules:[{field:'kyc.extra_fields.profession',operator:'fuzzy_match',value:'Software Engineer',score:80}],goto:'pof1'}], next:''}}, {op:'set_node', node_id:'decline1', node:{node_type:'status',session_status:'Declined'}}, {op:'set_node', node_id:'pof1', node:{node_type:'feature',feature:'DOCUMENT_AI',config:{document_ai_documents:[...]},next:''}} ].

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesWorkflow version uuid or stable workflow_id
operationsYesOrdered edits applied to the full server-side graph. Each: one of — {op:'set_node', node_id, node:{…}} upsert a node; {op:'remove_node', node_id}; {op:'set_next', node_id, next:'<id|null>'} rewire a node's unconditional next; {op:'set_branches', node_id, branches:[…]} set conditional branches; {op:'merge_node_config', node_id, config:{…}} shallow-merge config keys (preserves the big allow-lists); {op:'set_start', start_node}.
publishNoPublish after saving (default false → leaves a reviewable DRAFT)
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Adds significant behavioral context: auto-creates a draft (never touches live), server-side fetch, delta operations, validation failure behavior. Annotations already indicate not read-only and not destructive, so the description enhances understanding.

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?

Well-structured with purpose first, then operation types, then example. Slightly verbose but every part adds value. Could be slightly trimmed, but overall effective.

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

Completeness4/5

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

Covers core behavior, validation, and example. Output schema exists, so return values are not required. Lacks potential side-effects (e.g., impact on active sessions) but is sufficient for a complex tool.

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

Parameters5/5

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

Despite 100% schema coverage, the description adds substantial meaning: explains delta concept, lists operation types with brief explanations, and provides a detailed example. This greatly aids correct usage.

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 'MODIFY an existing workflow's graph with small OPERATIONS' and positions it as 'the right tool for editing a live workflow'. Distinguishes from siblings like set_graph (full replacement) and validate_graph (validation only) through the delta operations approach.

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 recommends this tool for live workflow editing and contrasts with resending full configs. Lacks explicit 'when not to use' statements, but the context implies alternatives.

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

didit_workflow_getB
Read-only
Inspect

Get the full configuration of a specific workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
workflow_idYesWorkflow UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description does not need to repeat. It adds the phrase 'full configuration' implying comprehensive data but does not detail what is included.

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 is direct and contains no unnecessary words. It is optimally concise.

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 output schema exists, the description does not need to explain return values. However, it could be more complete by clarifying what 'full configuration' entails (e.g., including graph, fields), but it is adequate.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds no additional meaning beyond the parameter descriptions already in 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 clearly states 'Get the full configuration of a specific workflow,' which specifies the verb (get) and the resource (full configuration). It distinguishes from sibling tools like 'didit_workflow_get_graph' which retrieves only the graph.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'didit_workflow_list' or 'didit_workflow_search'. No prerequisites or context are mentioned.

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

didit_workflow_get_branch_fieldsA
Read-only
Inspect

Given a candidate graph and a branch node, return the fields actually available at that point (only features that completed on every path reaching the branch, plus dynamically-derived Document-AI/questionnaire fields).

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesWorkflow version uuid or stable workflow_id
graphYesNode/branching workflow graph: { start_node, nodes }. `start_node` is the id of the entry node (must be a feature node). `nodes` maps nodeId → node. Node shapes: feature = {node_type:'feature', feature:<UPPERCASE, e.g. OCR|DOCUMENT_AI>, config?:{}, next?:<id>, branches?:[]}; branch = {node_type:'branch', branches:[{id, logic:'and'|'or', rules:[{field, operator, value, score?}], goto:<id>}], next?:<id fallback>}; status (TERMINAL) = {node_type:'status', session_status:'Approved'|'Declined'|'In Review'|'Determine'}. Branches are evaluated in order, first match wins; an empty rules:[] is the else/catch-all (kept last). Operators include `fuzzy_match` (string fields only, needs a `score` 0-100). Reference a feature's outcome with e.g. kyc.status / document_ai.status, and an extracted value with kyc.extra_fields.profession. Document AI: feature:'DOCUMENT_AI' with config.document_ai_documents:[{document_key,title,description,fields:[{key,name,type:'text'|'number'|'date',required}]}]. Validate with didit_workflow_validate_graph before didit_workflow_set_graph. Get valid fields/operators from didit_workflow_get_field_definitions.
node_idNoThe branch node id to evaluate availability at
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds context about the return nature (fields completed on every path + dynamically-derived fields) but does not disclose additional behavioral traits such as performance implications, auth requirements, or error handling beyond what annotations imply.

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, well-structured sentence that front-loads the main action and includes parenthetical clarifications. It is concise without waste, though the density of information might slightly reduce readability. It earns a 4 for efficiency.

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

Completeness4/5

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

Given the tool has an output schema and 100% parameter coverage, the description adequately explains the core functionality. However, it lacks guidance on edge cases (e.g., if node_id is not a branch node) or prerequisites beyond cross-referencing validation tools. It is almost complete but misses some contextual nuance for a complex 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 coverage is 100%, meaning the input schema provides descriptions for all 5 parameters. The tool description does not add new parameter-level details beyond what the schema already offers, so baseline 3 is appropriate. It reiterates the conceptual purpose of 'candidate graph' and 'branch node' but does not explain parameter constraints or formats beyond 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 clearly states the verb 'return' and the resource 'fields actually available at a branch node in a candidate graph'. It specifies the inputs (graph, branch node) and the output (available fields), distinguishing it from sibling tools like didit_workflow_get_field_definitions which focus on available field definitions rather than dynamic availability.

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 mentioning validation steps ('Validate with didit_workflow_validate_graph before didit_workflow_set_graph') and cross-referencing didit_workflow_get_field_definitions, but it does not explicitly state when to use this tool vs alternatives, nor does it provide when-not-to-use guidance or exclusions.

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

didit_workflow_get_field_definitionsA
Read-only
Inspect

List every field you can branch on plus the operators valid for each (e.g. kyc.status, kyc.extra_fields.profession with fuzzy_match, document_ai., aml.risk_score). Call this before building branch rules so the field/operator pairs are valid.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesAny workflow in the target application (used to resolve the app)
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

The description adds the behavioral guidance to call before building branch rules, which goes beyond the readOnlyHint annotation. It does not disclose other traits like pagination, but the annotation already indicates 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 sentences, front-loaded with the primary purpose and an example. No wasted words, all sentences add 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?

Given the tool's complexity, full schema coverage, existence of output schema, and annotations, the description is complete. It tells what the tool does and when to use it, leaving no 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 coverage is 100% with descriptions for all parameters. The description does not add additional meaning to the parameters 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 that the tool lists fields and operators for branching in workflows, with specific examples (kyc.status, aml.risk_score). It distinguishes itself from sibling workflow tools by focusing on field definitions for branch rules.

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 'Call this before building branch rules so the field/operator pairs are valid,' providing a clear when-to-use instruction. No exclusions or alternatives are needed given the context.

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

didit_workflow_get_graphA
Read-only
Inspect

Get the node/graph for a workflow (the structure: nodes, branches, conditions, Document-AI steps) + status/version/is_editable. Large feature configs (documents_allowed, poa_documents_allowed, phone countries) are SUMMARIZED by default so the response never overflows — set include_config:true for the raw config. Pass just workflow_id; the owning org/app is resolved automatically. To MODIFY the graph, prefer didit_workflow_edit_graph (small ops, no need to resend big configs).

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesWorkflow version uuid or stable workflow_id
include_configNoReturn full feature configs verbatim (default false → summarized). Can be very large.
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

Although annotations already indicate read-only (readOnlyHint=true, destructiveHint=false), description adds critical detail about config summarization to prevent overflow and the include_config parameter to retrieve raw config. 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?

Two concise sentences: first defines purpose and what's included; second gives usage guidance and alternative. No fluff, 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?

With output schema present, description covers return structure and behavior modifications (summarization). All parameters documented; no gaps for a read-only graph retrieval tool.

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

Parameters5/5

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

All parameters already described in schema (100% coverage); description adds context: organization_id and application_id are optional and auto-resolved, and include_config controls verbosity of configs. This enhances understanding 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?

Description provides a specific verb 'Get' and resource 'node/graph for a workflow', listing included elements (nodes, branches, conditions, etc.) and excluded configs. It clearly distinguishes from siblings like didit_workflow_edit_graph.

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 states to pass only workflow_id, with automatic org/app resolution. Provides clear alternative for modifications: 'To MODIFY the graph, prefer didit_workflow_edit_graph' with rationale.

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

didit_workflow_listA
Read-only
Inspect

List verification workflows. With multiple apps (or no scope) it auto-spans every app, each row tagged with its org/app. To find one workflow by id/label across all apps, prefer didit_workflow_search.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds that it auto-spans every app with multiple apps or no scope, and tags each row with org/app, providing useful 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?

Two concise sentences with front-loaded purpose. No filler; every sentence adds value. Efficiently communicates scope and sibling differentiation.

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

Completeness5/5

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

Given the tool's complexity (multi-app scoping, optional parameters with defaults), the description fully covers usage context, parameter semantics, and relationship with sibling. Output schema is present, so return format is covered.

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

Parameters5/5

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

Schema coverage is 100% and description adds meaningful guidance: tells where to obtain UUIDs (didit_org_list, didit_org_list_applications) and explains optionality based on default org/app, which the schema alone does not convey.

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

Purpose5/5

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

The description clearly states it lists verification workflows, explains auto-spanning across apps with row tagging, and distinguishes from the sibling didit_workflow_search for finding a specific workflow.

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 contrasts with didit_workflow_search: use list for broad listing, search for finding by id/label. Also notes scope behavior and parameter optionality based on token configuration.

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

didit_workflow_publishAInspect

Publish a draft workflow version — makes it the live version for NEW sessions. Existing sessions are unaffected.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesDraft workflow version uuid or stable workflow_id
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations do not contradict, and the description adds behavioral context: existing sessions are unaffected, which is not captured in 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, front-loaded with the primary action, 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?

Complete for a publish action with output schema present; could mention needing a draft version but 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 coverage is 100%, so baseline 3. The description adds no extra parameter meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the tool publishes a draft workflow version, making it live for new sessions, distinguishing it from sibling tools like didit_workflow_create or didit_workflow_update.

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 draft version is ready for publication, but does not explicitly state when to use or avoid this tool, nor mention alternatives like didit_workflow_update.

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

didit_workflow_set_graphAInspect

Replace a workflow's ENTIRE node/graph. Use this only to build a NEW/small workflow from scratch — to modify an EXISTING workflow prefer didit_workflow_edit_graph (you'd otherwise have to resend every node incl. multi-100KB allow-lists). If the workflow is published, a DRAFT is auto-created and the graph applied there (a live version is NEVER mutated); reviewable DRAFT unless publish:true. Validate first. Example graph: OCR → branch[ kyc.status==Declined → status(Declined); kyc.extra_fields.profession fuzzy_match 'Software Engineer' score 80 → DOCUMENT_AI(proof of funds) → status(Determine) ; else → status(Determine) ].

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesWorkflow version uuid or stable workflow_id
graphYesNode/branching workflow graph: { start_node, nodes }. `start_node` is the id of the entry node (must be a feature node). `nodes` maps nodeId → node. Node shapes: feature = {node_type:'feature', feature:<UPPERCASE, e.g. OCR|DOCUMENT_AI>, config?:{}, next?:<id>, branches?:[]}; branch = {node_type:'branch', branches:[{id, logic:'and'|'or', rules:[{field, operator, value, score?}], goto:<id>}], next?:<id fallback>}; status (TERMINAL) = {node_type:'status', session_status:'Approved'|'Declined'|'In Review'|'Determine'}. Branches are evaluated in order, first match wins; an empty rules:[] is the else/catch-all (kept last). Operators include `fuzzy_match` (string fields only, needs a `score` 0-100). Reference a feature's outcome with e.g. kyc.status / document_ai.status, and an extracted value with kyc.extra_fields.profession. Document AI: feature:'DOCUMENT_AI' with config.document_ai_documents:[{document_key,title,description,fields:[{key,name,type:'text'|'number'|'date',required}]}]. Validate with didit_workflow_validate_graph before didit_workflow_set_graph. Get valid fields/operators from didit_workflow_get_field_definitions.
publishNoPublish the draft after saving (default false → leaves a reviewable DRAFT)
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations indicate write operation (readOnlyHint=false) and non-destructive (destructiveHint=false). Description elaborates: replaces entire graph, auto-creates draft if published, live version never mutated, reviewable draft unless publish:true. 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.

Conciseness4/5

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

The description is packed with essential details and well-structured (first sentence main purpose, then usage, then graph details). It is somewhat lengthy but every sentence adds value; could be slightly more terse.

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

Completeness5/5

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

Given the complexity of the graph parameter, the description provides complete guidance: node types, branching evaluation order, operator usage, Document AI configuration, validation, and references to sibling tools. Output schema exists so return values are covered elsewhere.

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

Parameters5/5

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

All parameters have schema descriptions (100% coverage). The description adds significant meaning beyond schema: explains graph node shapes (feature, branch, status), branching logic, operators like fuzzy_match, validation recommendation, and references sibling tools for field definitions.

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 'replace' and the resource 'workflow's ENTIRE node/graph'. It distinguishes from the sibling tool didit_workflow_edit_graph by specifying this is for building new/small workflows from scratch, not for modifying existing ones.

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 states when to use this tool (new/small workflow from scratch) and when to prefer an alternative (didit_workflow_edit_graph for existing workflows). Also specifies publishing behavior: draft auto-created, publish:true to publish, and validation recommended.

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

didit_workflow_updateAInspect

Update a SIMPLE (linear) workflow's top-level settings or its flat features array (same shape as create). This does NOT add branching — to add conditional branches, a Document-AI step, or any node/graph logic, use didit_workflow_set_graph (it never flattens a graph into a linear list). Editing features retroactively affects how past sessions' decisions are read, so change deliberately.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.
workflow_idYesWorkflow UUID
workflow_labelNo
featuresNoReplacement feature list in execution order (same shape as create)
is_defaultNo
statusNo
is_white_label_enabledNo
is_desktop_allowedNo
max_retry_attemptsNo
retry_window_daysNo
session_expiration_timeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

The description reveals important behavioral traits beyond annotations: it only updates linear workflows (not graph-based ones), and editing features retroactively affects how past sessions' decisions are read. Annotations only indicate non-read-only and non-destructive, so this adds essential 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?

The description is two concise sentences, each adding value. The first states purpose and scope; the second clarifies exclusions, directs to an alternative, and adds a caution. No redundant or wasteful 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 the tool has 12 parameters and an output schema, the description provides adequate behavioral context for an agent to select and use the tool correctly. It explains what it updates, what it doesn't, and warns about retroactive effects. Minor gaps in parameter-level explanations are acceptable because the output schema and parameter names provide some 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 low (33%), and the description does not detail individual parameters. However, it mentions the features array (same shape as create) and top-level settings. Many parameters are self-explanatory, but more guidance on parameters like is_white_label_enabled, max_retry_attempts, etc., would improve semantic clarity.

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 updates a SIMPLE (linear) workflow's top-level settings or its flat features array. It explicitly distinguishes from didit_workflow_set_graph, which handles branching and graph logic, 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 Guidelines5/5

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

The description provides explicit when-to-use and when-not-to-use guidance: 'This does NOT add branching — to add conditional branches, ... use didit_workflow_set_graph'. It also warns about retroactive effects on past sessions, giving clear context for appropriate use.

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

didit_workflow_validate_graphA
Read-only
Inspect

Dry-run validate a graph WITHOUT saving. Returns per-node errors (bad field/operator, missing dependency, branching on a field before its feature runs, etc.). Always validate before didit_workflow_set_graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYesWorkflow version uuid or stable workflow_id
graphYesNode/branching workflow graph: { start_node, nodes }. `start_node` is the id of the entry node (must be a feature node). `nodes` maps nodeId → node. Node shapes: feature = {node_type:'feature', feature:<UPPERCASE, e.g. OCR|DOCUMENT_AI>, config?:{}, next?:<id>, branches?:[]}; branch = {node_type:'branch', branches:[{id, logic:'and'|'or', rules:[{field, operator, value, score?}], goto:<id>}], next?:<id fallback>}; status (TERMINAL) = {node_type:'status', session_status:'Approved'|'Declined'|'In Review'|'Determine'}. Branches are evaluated in order, first match wins; an empty rules:[] is the else/catch-all (kept last). Operators include `fuzzy_match` (string fields only, needs a `score` 0-100). Reference a feature's outcome with e.g. kyc.status / document_ai.status, and an extracted value with kyc.extra_fields.profession. Document AI: feature:'DOCUMENT_AI' with config.document_ai_documents:[{document_key,title,description,fields:[{key,name,type:'text'|'number'|'date',required}]}]. Validate with didit_workflow_validate_graph before didit_workflow_set_graph. Get valid fields/operators from didit_workflow_get_field_definitions.
organization_idNoOrganization UUID (from didit_org_list). Optional if your token has a single/default org.
application_idNoApplication UUID (from didit_org_list_applications). Optional if a default application is configured.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description discloses the dry-run nature (no save), which aligns with annotations (readOnlyHint=true, destructiveHint=false). It also states that it returns per-node errors, adding 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.

Conciseness4/5

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

The description is verbose but well-structured: first sentence states purpose, then lists error types and usage hint, followed by detailed graph structure. While it contains much information, it remains organized and front-loaded. Minor reduction could improve conciseness.

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

Completeness5/5

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

Given the complexity of nested objects and multiple node types, the description provides thorough coverage. It explains error types, graph shape, branching, operators, and field references. No output schema, but return type is implied.

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

Parameters5/5

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

The description adds extensive detail beyond the 100% schema coverage, including node shapes, branching logic, operators, field reference syntax, and document AI configuration. This significantly aids understanding of complex 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 states the tool performs a dry-run validation of a graph without saving, listing specific error types. It distinguishes itself from sibling tools like didit_workflow_set_graph (which saves) and didit_workflow_get_graph (which retrieves).

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 to always validate before didit_workflow_set_graph, and references didit_workflow_get_field_definitions for valid fields/operators. This provides clear guidance on when and how to use the tool.

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. 121 tool updatesv5.0.0
    • First observeddidit_account_login
    • First observeddidit_account_register
    • First observeddidit_account_resend_otp
    • First observeddidit_account_verify_email
    • First observeddidit_alert_configure
    • First observeddidit_alert_list
    • First observeddidit_allowlist_add
    • First observeddidit_analytics
    • First observeddidit_audit_log_list
    • First observeddidit_blocklist_add
    • First observeddidit_blocklist_get
    • First observeddidit_blocklist_remove
    • First observeddidit_branding_get
    • First observeddidit_branding_update
    • First observeddidit_case_create
    • First observeddidit_case_get
    • First observeddidit_case_list
    • First observeddidit_case_manage
    • First observeddidit_case_search
    • First observeddidit_case_statistics
    • First observeddidit_context_get
    • First observeddidit_lists_create
    • First observeddidit_lists_delete
    • First observeddidit_lists_entries_list
    • First observeddidit_lists_entry_create
    • First observeddidit_lists_entry_delete
    • First observeddidit_lists_entry_upload_face
    • First observeddidit_lists_get
    • First observeddidit_lists_list
    • First observeddidit_lists_update
    • First observeddidit_org_get_application
    • First observeddidit_org_get_balance
    • First observeddidit_org_invite_member
    • First observeddidit_org_list
    • First observeddidit_org_list_api_keys
    • First observeddidit_org_list_applications
    • First observeddidit_org_list_members
    • First observeddidit_org_list_roles
    • First observeddidit_org_remove_member
    • First observeddidit_org_reveal_application_api_key
    • First observeddidit_org_top_up
    • First observeddidit_org_update_member
    • First observeddidit_questionnaire_create
    • First observeddidit_questionnaire_delete
    • First observeddidit_questionnaire_get
    • First observeddidit_questionnaire_list
    • First observeddidit_questionnaire_update
    • First observeddidit_report_export
    • First observeddidit_report_get
    • First observeddidit_report_get_download_url
    • First observeddidit_report_list
    • First observeddidit_session_add_review
    • First observeddidit_session_batch_delete
    • First observeddidit_session_create
    • First observeddidit_session_create_import
    • First observeddidit_session_delete
    • First observeddidit_session_generate_pdf
    • First observeddidit_session_get_decision
    • First observeddidit_session_get_import
    • First observeddidit_session_get_import_errors
    • First observeddidit_session_get_import_template
    • First observeddidit_session_import_shared
    • First observeddidit_session_list
    • First observeddidit_session_list_reviews
    • First observeddidit_session_search
    • First observeddidit_session_share
    • First observeddidit_session_update_data
    • First observeddidit_session_update_poa_data
    • First observeddidit_session_update_status
    • First observeddidit_transaction_create
    • First observeddidit_transaction_get
    • First observeddidit_transaction_list
    • First observeddidit_transaction_screen_wallet
    • First observeddidit_transaction_search
    • First observeddidit_vendor_business_create
    • First observeddidit_vendor_business_delete
    • First observeddidit_vendor_business_get
    • First observeddidit_vendor_business_list
    • First observeddidit_vendor_business_search
    • First observeddidit_vendor_business_update
    • First observeddidit_vendor_business_update_status
    • First observeddidit_vendor_user_create
    • First observeddidit_vendor_user_delete
    • First observeddidit_vendor_user_get
    • First observeddidit_vendor_user_list
    • First observeddidit_vendor_user_search
    • First observeddidit_vendor_user_update
    • First observeddidit_vendor_user_update_status
    • First observeddidit_verify_age
    • First observeddidit_verify_aml
    • First observeddidit_verify_database
    • First observeddidit_verify_email_check
    • First observeddidit_verify_email_send
    • First observeddidit_verify_face_match
    • First observeddidit_verify_face_search
    • First observeddidit_verify_id
    • First observeddidit_verify_kyb_search
    • First observeddidit_verify_kyb_select
    • First observeddidit_verify_passive_liveness
    • First observeddidit_verify_phone_check
    • First observeddidit_verify_phone_send
    • First observeddidit_verify_poa
    • First observeddidit_webhook_create
    • First observeddidit_webhook_delete
    • First observeddidit_webhook_get
    • First observeddidit_webhook_list
    • First observeddidit_webhook_update
    • First observeddidit_workflow_create
    • First observeddidit_workflow_create_draft
    • First observeddidit_workflow_delete
    • First observeddidit_workflow_edit_graph
    • First observeddidit_workflow_get
    • First observeddidit_workflow_get_branch_fields
    • First observeddidit_workflow_get_field_definitions
    • First observeddidit_workflow_get_graph
    • First observeddidit_workflow_list
    • First observeddidit_workflow_publish
    • First observeddidit_workflow_search
    • First observeddidit_workflow_set_graph
    • First observeddidit_workflow_update
    • First observeddidit_workflow_validate_graph

TDQS

B3.4/5.0

Scored across 121 tools

Disambiguation5/5

Each tool targets a specific action on a distinct entity (e.g., session, vendor, workflow) with clear, detailed descriptions. Even similarly named tools like list vs. search are explicitly differentiated by scope and purpose, leaving no ambiguity.

Naming Consistency5/5

All tools follow the pattern `didit_<domain>_<verb>` in snake_case. Verbs are consistent (create, list, get, delete, update, search, etc.), and the naming is predictable across all 121 tools.

Tool Count2/5

At 121 tools, the server is extremely heavy. While the domain (identity verification and compliance) is broad, the granularity exceeds typical expectations—many sub-actions are separate tools rather than parameters. This strains discoverability and selection.

Completeness4/5

The tool surface covers account management, verification (multiple types), sessions, cases, workflows, webhooks, reporting, and vendor management with full CRUD. Minor gaps exist (e.g., no bulk user update), but the domain is comprehensively addressed.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A comprehensive Model Context Protocol toolkit that transforms AI assistants into autonomous agents capable of executing real-world tasks across filesystems, web requests, Git workflows, databases, system commands, and AI integrations.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables secure enterprise AI agents to access internal tools like GitHub, Gmail, Calendar, file systems, databases, and knowledge bases through the Model Context Protocol, with built-in security, audit, and observability.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to perform identity verification, KYC/KYB, PEP & sanctions screening, bank statement analysis, and workflow automation via the Model Context Protocol.
    MIT