SezzleOps MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SezzleOps MCPReconcile the latest settlement and show mismatches"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Sezzle Merchant MCP
An unofficial, experimental, security-focused Model Context Protocol server for safe Sezzle merchant operations, settlement reconciliation, webhook monitoring, and integration diagnostics.
This project is unofficial and is not affiliated with, endorsed by, or maintained by Sezzle.
No Sezzle logos are used. Sezzle trademarks belong to their respective owner.
Project maturity
This project is an unofficial, experimental integration.
Its deterministic business logic, permission model, mutation guards, and mocked API integration are tested. However, the Sezzle API adapter has not yet been validated with real merchant sandbox credentials.
Do not enable production financial mutations until the sandbox validation checklist has been completed.
Production-oriented and security-focused design does not mean production readiness. Live Sezzle sandbox validation is still required before production use.
Analyze today’s Sezzle orders, identify uncaptured authorizations and refund mismatches, reconcile the latest settlement, inspect webhook health, and prepare safe actions without executing anything until I approve them.
Sezzle Merchant MCP is not a thin API wrapper. It adds deterministic money validation, mutation previews, explicit approval gates, permission-based tool registration, reconciliation evidence, webhook correlation, Integration Doctor findings, secure support routing, and redacted audit records around the documented Sezzle merchant API.
Related MCP server: Shopify Admin GraphQL Gateway MCP
Features
Sandbox-first startup with read-only mode enabled by default.
Documented Sezzle v2 merchant API adapter with in-memory token renewal.
Capture, refund, release, session, reference, checkout, and webhook mutation previews.
Literal
confirm: true, expiring preview binding, fresh-state validation, and idempotency.Integer minor-unit money and
bigintarithmetic; no floating-point financial calculations.Lossless parsing of settlement decimals and four-decimal interest-account values.
Deterministic settlement matching, duplicate suppression, mismatch detection, expected payout, confidence, and evidence.
Raw-byte HMAC-SHA256 webhook verification before parsing, idempotent ingestion, and occurrence-time timelines.
Stable-code Integration Doctor findings and go-live checklists.
PII-minimized support policy tools with merchant-reference ownership verification.
Structured JSON logs to stderr, redacted resources, and durable audit metadata.
MCP stdio and stateless Streamable HTTP transports.
Memory and SQLite storage, Docker, Compose, CI, Dependabot, ESLint, Prettier, and Vitest.
Architecture
flowchart LR
Client[MCP client] --> Transport[stdio or Streamable HTTP]
Transport --> Registry[Permission-filtered MCP registry]
Registry --> Services[Operation services]
Services --> Guards[Preview, confirmation, ownership, idempotency]
Services --> Domain[Money, reconciliation, diagnostics, support policy]
Services --> API[Versioned Sezzle v2 adapter]
API --> Auth[In-memory token manager]
API --> HTTP[Timeout, retry, concurrency, correlation]
HTTP --> Sezzle[Documented Sezzle merchant API]
Services --> Storage[Memory or SQLite]
Storage --> Audit[Redacted audit evidence]
Storage --> Events[Verified webhook event timeline]MCP registration is intentionally thin. Services own workflows, domain modules own deterministic calculations, API modules own paths and wire schemas, and storage modules own previews, idempotency, audit events, and webhook records. See ARCHITECTURE.md for design decisions and documented API ambiguities.
Safety Model
The default configuration is:
SEZZLE_ENV=sandbox
SEZZLE_READ_ONLY=true
SEZZLE_REQUIRE_CONFIRMATION=true
SEZZLE_PERMISSION_PROFILE=read
MCP_TRANSPORT=stdioMutation tools are not registered while SEZZLE_READ_ONLY=true. They are absent from tools/list; they do not remain visible and return permission errors.
Financial and high-impact operations use two steps:
Call the preview tool, or call a combined mutation tool with
confirm: false.Review current state, requested change, financial impact, validation, warnings, expiry, and audit ID.
Repeat the unchanged request with the returned
preview_idand literalconfirm: true.
Execution fails if the preview expired, was already used, belongs to another merchant/target/environment, has a different request hash, or current state changed. The model cannot infer confirmation from natural language.
Example capture:
{
"tool": "sezzle_preview_capture",
"arguments": {
"order_uuid": "order-uuid",
"amount": { "amount_in_cents": 2500, "currency": "USD" }
}
}After reviewing the preview:
{
"tool": "sezzle_capture_order",
"arguments": {
"order_uuid": "order-uuid",
"amount": { "amount_in_cents": 2500, "currency": "USD" },
"preview_id": "preview-from-first-call",
"confirm": true
}
}Successful execution is reported only after a successful Sezzle API response. Reauthorization additionally requires authorization.approved === true; HTTP 200 alone is not treated as approval.
Supported Tools
The generated tool inventory currently verifies 55 tools, 6 resources, and 5 prompts. The active permission profile and read-only setting determine which tools are registered.
Authentication, sessions, and orders
sezzle_authenticate_merchantsezzle_get_merchant_contextsezzle_create_payment_sessionsezzle_get_payment_sessionsezzle_cancel_active_checkoutsezzle_get_ordersezzle_update_order_referencesezzle_preview_capturesezzle_capture_ordersezzle_preview_refundsezzle_refund_ordersezzle_preview_release_authorizationsezzle_release_authorizationsezzle_reauthorize_order
Settlements, reports, and reconciliation
sezzle_list_settlement_summariessezzle_get_settlement_detailssezzle_get_order_reportsezzle_get_interest_balancesezzle_get_interest_activitysezzle_reconcile_settlementsezzle_find_unmatched_orderssezzle_detect_refund_mismatchessezzle_detect_capture_mismatchessezzle_detect_fee_anomaliessezzle_explain_payout_differencesezzle_generate_finance_daily_brief
Webhooks
sezzle_list_webhookssezzle_create_webhooksezzle_update_webhooksezzle_delete_webhooksezzle_send_test_webhooksezzle_verify_webhook_signaturesezzle_ingest_webhook_eventsezzle_list_webhook_eventssezzle_get_webhook_eventsezzle_inspect_webhook_healthsezzle_find_missing_order_eventssezzle_detect_out_of_order_eventssezzle_detect_duplicate_webhook_events
Integration Doctor
sezzle_diagnose_integrationsezzle_validate_session_payloadsezzle_validate_redirect_urlssezzle_audit_auth_capture_flowsezzle_detect_stuck_authorizationssezzle_detect_uncaptured_orderssezzle_detect_duplicate_refundssezzle_test_webhook_configurationsezzle_generate_go_live_checklist
Support and audit
sezzle_explain_order_status_for_supportsezzle_classify_support_requestsezzle_draft_customer_responsesezzle_determine_safe_support_routesezzle_identify_required_escalationsezzle_list_audit_eventssezzle_get_audit_event
Permission Profiles
Set SEZZLE_PERMISSION_PROFILE to one profile:
Profile | Registered capabilities |
| Auth context, sessions, orders, settlements, reports, and Integration Doctor |
| Read capabilities plus capture/refund/release/session/order previews, reconciliation, and write tools when enabled |
| Subscription management, signature verification, ingestion, timelines, and health |
| Five isolated support tools; raw order read tools are not registered |
| All capabilities and audit inspection |
read is the default. Read-only mode independently removes every mutation tool from any profile.
Installation
Requirements:
Node.js 20 or later
npm
A Sezzle sandbox merchant account for API-backed testing
git clone https://github.com/onatozmenn/sezzle-merchant-mcp.git
cd sezzle-merchant-mcp
npm ci
npm run build
npm run inspect-toolsAvailable scripts:
npm run dev
npm run build
npm run start
npm run test
npm run test:watch
npm run test:coverage
npm run lint
npm run typecheck
npm run format
npm run format:check
npm run inspect-tools
npm run docker:build
npm run docker:runSandbox Setup
Create or obtain a Sezzle sandbox merchant account.
Generate sandbox API keys in the sandbox Merchant Dashboard.
Copy
.env.exampleto.env.Keep
SEZZLE_ENV=sandbox,SEZZLE_READ_ONLY=true, andSEZZLE_PERMISSION_PROFILE=readinitially.Set
SEZZLE_MERCHANT_UUID,SEZZLE_API_KEY, andSEZZLE_API_SECRET.Build and connect an MCP client.
Validate authentication, read tools, Integration Doctor, and previews before enabling writes.
The default base URL is https://sandbox.gateway.sezzle.com. A custom loopback HTTP base URL is accepted only for mock integration tests.
Production Setup
Production is fail-closed. It requires all of:
SEZZLE_ENV=production
SEZZLE_API_BASE_URL=https://gateway.sezzle.com
SEZZLE_MERCHANT_UUID=your-production-merchant-uuid
SEZZLE_API_KEY=your-production-public-key
SEZZLE_API_SECRET=your-production-private-key
SEZZLE_READ_ONLY=true
SEZZLE_REQUIRE_CONFIRMATION=trueThe authenticated merchant UUID must match SEZZLE_MERCHANT_UUID. Run the go-live checklist in read-only mode first. Enable an appropriate permission profile, then set SEZZLE_READ_ONLY=false only after review. Unsafe write mode with SEZZLE_REQUIRE_CONFIRMATION=false is rejected at startup.
Use a secret manager, encrypted SQLite storage, TLS termination, transport authentication, restrictive host/origin allowlists, monitoring, and backup/retention controls. Do not place production secrets in MCP client JSON committed to source control.
Claude Desktop
Build the server, then add it to the Claude Desktop MCP configuration. Use an absolute path:
{
"mcpServers": {
"sezzle-ops": {
"command": "node",
"args": ["C:\\absolute\\path\\to\\sezzle-merchant-mcp\\dist\\index.js"],
"env": {
"SEZZLE_ENV": "sandbox",
"SEZZLE_READ_ONLY": "true",
"SEZZLE_PERMISSION_PROFILE": "read"
}
}
}
}Inject credentials through the operating system or a secret-aware launcher rather than checking them into configuration files.
Claude Code
Create a project-local .mcp.json that is excluded from source control when it contains credentials:
{
"mcpServers": {
"sezzle-ops": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/sezzle-merchant-mcp/dist/index.js"],
"env": {
"SEZZLE_ENV": "sandbox",
"SEZZLE_READ_ONLY": "true",
"SEZZLE_PERMISSION_PROFILE": "read"
}
}
}
}Restart the MCP session after changing environment variables.
Cursor
Add the same stdio definition to Cursor's MCP configuration:
{
"mcpServers": {
"sezzle-ops": {
"command": "node",
"args": ["/absolute/path/to/sezzle-merchant-mcp/dist/index.js"],
"env": {
"SEZZLE_ENV": "sandbox",
"SEZZLE_READ_ONLY": "true",
"SEZZLE_PERMISSION_PROFILE": "read"
}
}
}
}For VS Code, add the same stdio definition to your local user or workspace MCP settings after npm run build. Editor-local .vscode/ configuration is intentionally excluded from the public repository.
HTTP Transport
Enable stateless Streamable HTTP:
MCP_TRANSPORT=http
MCP_HTTP_HOST=127.0.0.1
MCP_HTTP_PORT=3000The MCP endpoint is http://127.0.0.1:3000/mcp; health is GET /health. Browser origins are rejected unless loopback or listed in MCP_HTTP_ALLOWED_ORIGINS.
Every non-loopback bind requires both:
MCP_HTTP_AUTH_TOKEN=a-long-random-transport-token
MCP_HTTP_ALLOWED_HOSTS=mcp.example.com
MCP_HTTP_ALLOWED_ORIGINS=https://trusted-client.exampleTerminate TLS at a trusted reverse proxy and send Authorization: Bearer <token>. /health is intentionally unauthenticated and contains no merchant state. HTTP request bodies are limited to 1 MB; webhook ingestion tool inputs are additionally schema-limited.
Docker
Build and run stdio:
npm run docker:build
npm run docker:runFor HTTP plus persistent SQLite, set MCP_HTTP_AUTH_TOKEN in .env and run:
docker compose up --buildCompose uses a non-root image, read-only root filesystem, dropped capabilities, a dedicated SQLite volume, and a health check.
Example Workflows
Daily operations review
Read
sezzle://config,sezzle://permissions, andsezzle://capabilities.Authenticate and verify the merchant/environment.
Fetch scoped order/report evidence.
Run
sezzle_detect_uncaptured_orders, reconciliation, and webhook health checks.Prepare capture/refund/release previews.
Present audit IDs, warnings, and expected financial impact.
Stop without executing unless the user separately approves a specific preview.
Refund workflow
Call
sezzle_preview_refundwith an integer minor-unit amount.Confirm the current captured, refunded, and remaining-refundable amounts.
Resolve warnings or validation failures.
Call
sezzle_refund_orderwith the unchanged request,preview_id, andconfirm: true.Treat the returned transaction UUID and request ID as API evidence.
Webhook Setup
Sezzle documents HMAC-SHA256 over the exact raw webhook body using the merchant signing secret. Configure the value separately:
SEZZLE_WEBHOOK_SECRET=your-signing-secretUse sezzle_create_webhook in write-enabled webhooks or admin mode. It previews URL/event-set changes before confirmation.
For ingestion:
Preserve the exact request bytes as a UTF-8 string.
Pass the exact raw body and
Sezzle-Signaturevalue tosezzle_verify_webhook_signature.Call
sezzle_ingest_webhook_eventwith literalconfirm: trueonly after verification policy allows storage.Invalid signatures are rejected before JSON parsing.
Event UUID and payload hash deduplicate repeated delivery.
Timelines order by
occurredAt, not receipt order.
Public event tools return metadata and correlation IDs, not raw bodies. SQLite preserves verified raw bodies because correlation and forensic requirements depend on them; protect and retain that database as merchant-sensitive data.
Reconciliation Example
Reconciliation accepts merchant orders and normalized settlement line items as structured input. Amounts are integer cents:
{
"input": {
"currency": "USD",
"merchant_orders": [
{
"record_id": "merchant-1001",
"order_reference": "order_1001",
"sezzle_order_uuid": "sezzle-order-uuid",
"currency": "USD",
"order_amount_in_cents": 10000,
"captured_amount_in_cents": 8000,
"refunded_amount_in_cents": 1000,
"expected_fee_in_cents": 480
}
],
"sezzle_records": [
{
"record_id": "capture-row-1",
"type": "CAPTURE",
"order_uuid": "sezzle-order-uuid",
"external_reference_id": "order_1001",
"amount_in_cents": 8000,
"currency": "USD"
}
],
"actual_settlement": { "amount_in_cents": 6520, "currency": "USD" },
"fee_tolerance_in_cents": 0
}
}Every result includes summary, matched, unmatchedMerchantRecords, unmatchedSezzleRecords, amountMismatches, feeAnomalies, confidence, and evidence. Duplicate rows are excluded before payout arithmetic. Currency conversion is never inferred.
Integration Doctor Example
{
"input": {
"now": "2026-07-16T12:00:00Z",
"configured_environment": "sandbox",
"credential_environment": "sandbox",
"api_base_url": "https://sandbox.gateway.sezzle.com",
"orders": [],
"webhooks": {
"subscribed_events": ["order.authorized"],
"required_events": ["order.authorized", "order.captured"],
"invalid_signature_count": 0,
"missing_events": [],
"out_of_order_count": 0
}
}
}Findings contain stable code, severity, title, explanation, evidence, recommendedAction, and safeToAutomate: false. The engine reports evidence; it does not execute repairs.
MCP Resources
sezzle://configsezzle://permissionssezzle://capabilitiessezzle://diagnostic-codessezzle://audit-summary(adminonly)sezzle://webhook-health(webhooksoradmin)
Resources never expose API keys, secrets, bearer tokens, signatures, raw webhook bodies, or customer records.
MCP Prompts
sezzle_daily_operations_reviewsezzle_settlement_reconciliationsezzle_integration_go_live_reviewsezzle_webhook_incident_investigationsezzle_support_case_review
Prompts are profile-aware and direct the model to collect evidence before interpretation, use deterministic arithmetic, distinguish facts from recommendations, prepare previews, and avoid unsupported success claims.
Security Considerations
Never log or commit API keys, bearer tokens, webhook signatures, raw payloads, customer PII, or payment details.
Tokens remain in memory and are refreshed before the documented expiry. A 401 triggers one reacquisition; a mutation is replayed only when it carries documented idempotency.
Safe GETs respect timeouts, exponential backoff,
Retry-After, and concurrency limits.Webhook subscription/session/reference mutations are not retried automatically because their endpoints do not document idempotency.
Settlement JSON decimals use a lossless parser. CSV decimals are converted from text directly to scaled integers.
Support order access requires authenticated merchant access and a matching merchant reference. Returned order projections exclude customer fields.
SQLite preserves raw verified webhook bodies. Use encrypted storage, strict access, backups, and retention controls.
Remote HTTP requires transport authentication, allowed hosts, TLS termination, and network controls.
Review SECURITY.md before production deployment.
Known Limitations
GET /v2/orders/reportis available by request only and supports a maximum seven-day range.Interest endpoints require enrollment in Sezzle's interest account program.
Settlement details are CSV; schema changes by Sezzle may require adapter updates.
The Sezzle documentation currently links to
https://gateway.sezzle.com/v2api.yaml, which returns 404. This project uses the publishedhttps://docs.sezzle.com/openapi.yaml.Authorization event examples and their component schema use two documented shapes; the adapter supports those two shapes only.
The upcharge API is marked in development and not available for production, so it is intentionally not exposed.
No documented endpoint lists arbitrary current merchant orders. Integration Doctor and reconciliation accept scoped structured records rather than scraping a dashboard.
The order report API includes customer fields; Sezzle Merchant MCP removes them from its normalized response.
Streamable HTTP is stateless. Durable workflow state belongs in SQLite; multi-node shared storage is not implemented.
SQLite data is not application-level encrypted. Use encrypted disks/volumes and platform access controls.
OAuth is not bundled. Remote deployments use a configured bearer token and should sit behind a production identity-aware reverse proxy.
Support drafting is deterministic policy templating, not an embedded LLM. The MCP client may use the returned facts/policy to assist drafting.
Roadmap
Shared transactional storage for multi-node HTTP deployments.
Pluggable secret-manager and encrypted-record integrations.
Configurable webhook retention and deletion policies.
OAuth/OIDC deployment adapter for remote MCP clients.
OpenAPI contract drift automation against published Sezzle specifications.
Additional reconciliation import adapters that preserve deterministic core types.
Source of Truth
Sezzle documentation index: https://docs.sezzle.com/llms.txt
Sezzle OpenAPI specification: https://docs.sezzle.com/openapi.yaml
MCP TypeScript SDK v1 documentation: https://ts.sdk.modelcontextprotocol.io/
MCP TypeScript SDK v1 source: https://github.com/modelcontextprotocol/typescript-sdk/tree/v1.x
No endpoint absent from the published Sezzle OpenAPI specification is intentionally exposed.
License
MIT. See LICENSE.
Available Tools
18 toolssezzle_audit_auth_capture_flowCRead-onlyIdempotent
Audit supplied authorization, capture, refund, reference, and currency state for deterministic flow defects.
| Name | Required | Description | Default |
|---|---|---|---|
| now | Yes | ||
| orders | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. However, the description adds no behavioral context beyond that: it does not disclose what the tool returns, what constitutes a 'deterministic flow defect,' or how results are presented. With no output schema, the description carries a heavier burden and fails to provide necessary runtime behavior details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler or redundancy. It takes minimal space to convey the general purpose, which is appropriate for a high-level summary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the complex input schema with numerous order fields and the absence of an output schema, the description offers no information about the audit rules, return format, or edge-case behavior. It is far too sparse to fully support correct invocation and result interpretation for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description only mentions 'authorization, capture, refund, reference, and currency state' without mapping to the actual parameters 'orders' and 'now'. The 'now' parameter (likely a reference timestamp) is entirely unexplained. The description adds minimal semantic value beyond inferable field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Audit') and a resource ('supplied authorization, capture, refund, reference, and currency state'), clearly indicating the tool's scope. It does not explicitly differentiate from sibling detect tools like sezzle_detect_stuck_authorizations, but the broader 'deterministic flow defects' framing implies a comprehensive audit rather than a single-issue detector.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as the specific detect tools or validation tools. There is no mention of prerequisites, exclusions, or recommended scenarios; the description simply states what the tool does without explaining when it is the best choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sezzle_authenticate_merchantAuthenticate Sezzle MerchantARead-onlyIdempotent
Acquire or refresh a merchant bearer token from configured environment credentials. Secrets are never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Force token reacquisition. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover safety (readOnlyHint, idempotentHint, destructiveHint). The description adds valuable context that secrets are never returned, which is a key behavioral trait for an authentication tool. However, it does not mention side effects like token lifecycle details, but the annotation coverage lowers the bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. It front-loads the action and includes the necessary security caveat without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema), the description provides the core purpose and a critical security guarantee. The sibling list confirms that no other tool handles authentication, so the context is complete enough for agent selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage and the `force` parameter already includes a description. The main description does not add any additional meaning or context beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('acquire or refresh') and a clear resource ('merchant bearer token'), immediately distinguishing this tool from the sibling validation and diagnostic tools. It unambiguously identifies its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool: whenever a merchant bearer token is needed. It does not explicitly mention alternatives, but none of the sibling tools serve the same purpose, so the context is clear without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sezzle_detect_duplicate_refundsARead-onlyIdempotent
Detect duplicate refund IDs or repeated amount/time fingerprints in supplied order evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| orders | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which covers the safety profile. The description adds specific detection criteria (duplicate refund IDs or amount/time fingerprints) but does not mention return format, pagination, or edge-case behavior. With annotations providing the safety context, a score of 3 is appropriate for the additional but limited behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action verb 'Detect' and conveys the core purpose without any wasted or redundant words. It is appropriately sized for the tool's scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite strong annotations, the tool has a complex input schema (nested arrays of objects) and no output schema. The description is too brief to explain what the tool returns or how the agent should interpret results. Given the complexity, a more complete description would be necessary for an agent to fully understand the tool's behavior and outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a single 'orders' parameter with no descriptions (0% coverage). The description refers to 'supplied order evidence,' offering a high-level label, but it does not explain the required structure or highlight relevant fields like refund_attempts, which are critical for duplicate detection. The description insufficiently compensates for the lack of schema-level documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Detect') and resource ('duplicate refund IDs or repeated amount/time fingerprints') in the context of supplied order evidence. This distinguishes it from sibling tools like detect_stuck_authorizations and detect_uncaptured_orders, which target different issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when duplicate refunds are suspected in order data, but it does not explicitly state when to use this tool over alternatives or provide exclusions. The purpose is clear enough to infer usage, but no proactive guidance is given for tool selection among the sibling detection tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sezzle_detect_stuck_authorizationsBRead-onlyIdempotent
Find approved uncaptured authorizations that have not progressed within a threshold.
| Name | Required | Description | Default |
|---|---|---|---|
| now | Yes | ||
| orders | Yes | ||
| threshold_minutes | No |
TDQS
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 covered. The description adds the filtering criteria of approved+uncaptured and a time threshold, but fails to define what 'progressed' means (e.g., capture, refund) or what the tool actually returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly worded sentence with no filler. It is front-loaded and gets directly to the point, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With three parameters, no output schema, and a non-trivial detection logic, the description is far too sparse. It doesn't mention that orders is an input list, doesn't clarify how 'progressed' is evaluated, and doesn't describe the return value. This leaves a knowledgeable agent guessing about invocation details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain any of the three parameters (orders, now, threshold_minutes). The word 'threshold' only vaguely hints at threshold_minutes, and orders/now are completely absent, leaving the agent without the needed input semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (Find) and a specific resource (approved uncaptured authorizations) with a clarifying condition (not progressed within a threshold). This clearly delineates it from sibling tools like sezzle_detect_uncaptured_orders, which target a broader set of uncaptured orders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as sezzle_detect_uncaptured_orders or sezzle_audit_auth_capture_flow. The description gives no contexts, exclusions, or selection criteria beyond the inherent purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sezzle_detect_uncaptured_ordersARead-onlyIdempotent
Find approved orders whose captured amount remains below authorization.
| Name | Required | Description | Default |
|---|---|---|---|
| now | Yes | ||
| orders | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering safety. The description adds the core filtering logic, but it does not disclose the role of the required 'now' parameter, whether authorization expiry is considered, or what the function returns. This missing behavioral detail lowers the score despite 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no filler. It front-loads the action and condition, earning full credit for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only filter, the description is adequate but incomplete. It does not explain the function's output (no output schema present) or the necessity of 'now', which is a required parameter. The behavior is narrow, but these gaps prevent a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not compensate. It references 'authorization' and 'captured amount', which correspond to fields in the 'orders' array items, giving a hint about that parameter. However, the 'now' parameter is completely unexplained, and there is no explicit mapping of parameter names to roles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Find approved orders whose captured amount remains below authorization' states a specific action (find) and a clear resource (approved orders) with a precise condition. This distinguishes it from sibling tools like detect_stuck_authorizations, which likely target different conditions (e.g., no capture at all).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing to identify approved orders with incomplete capture, but it provides no explicit guidance on when to use this tool versus alternatives like sezzle_detect_stuck_authorizations or sezzle_audit_auth_capture_flow. No exclusions 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.
sezzle_diagnose_integrationBRead-onlyIdempotent
Run deterministic Integration Doctor checks over supplied configuration, order, webhook, and reconciliation evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds the behavioral trait 'deterministic,' which is useful context beyond the annotations. However, it does not disclose what the output/report looks like or any other behavioral details, though the annotations cover the safety profile adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no redundant wording. It front-loads the key action ('Run deterministic Integration Doctor checks') and is appropriately sized for its broad purpose, even though it could include more detail without padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity of the input schema, the absence of an output schema, and the large set of sibling diagnostic tools, the description is incomplete. It does not describe what the results/checks contain, how to interpret them, or how this tool relates to the targeted validators. An agent would lack critical context for proper invocation and result interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and only one complex nested parameter ('input'). The description provides a high-level categorical hint ('configuration, order, webhook, and reconciliation evidence') that maps loosely to the sub-parameters, but it does not explain the required fields, defaults, or how each piece of evidence is used. This is insufficient for an agent to construct a valid 'input' object on its own.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Run deterministic Integration Doctor checks') and the resource ('supplied configuration, order, webhook, and reconciliation evidence'). It accurately conveys what the tool does, but it does not explicitly differentiate itself from the many targeted sibling diagnostic tools, so it misses the highest level of clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this comprehensive diagnostic tool versus the more specific sibling tools (e.g., sezzle_detect_stuck_authorizations, sezzle_audit_auth_capture_flow). No prerequisites, exclusions, or alternative scenarios are mentioned, leaving the usage context entirely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sezzle_generate_go_live_checklistARead-onlyIdempotent
Generate a deterministic production-readiness checklist and blocking findings from supplied evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds 'deterministic,' which is a meaningful behavioral trait beyond annotations, and clarifies that the output includes blocking findings. This is sufficient given 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It communicates the primary action, resource, and key output characteristics efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a very complex input object with nested structures and no output schema, yet the description gives no detail about the checklist structure, findings format, or how evidence maps to results. It is more of a headline than a complete description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description only says 'supplied evidence,' adding no meaning to the input object's fields such as `now`, `configured_environment`, `api_base_url`, orders arrays, webhooks, or thresholds. The description fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Generate') and a clear resource ('production-readiness checklist'), while adding 'deterministic' and 'blocking findings' to clarify output. It distinguishes itself from sibling audit/detect/validate tools by being an aggregator that produces a checklist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from supplied evidence' implies the tool is used after diagnostic evidence is available, but there is no explicit when-to-use or alternative comparison. It does not state exclusions or mention sibling tools, so context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sezzle_get_interest_activityARead-onlyIdempotent
Get and parse interest-account activity at four-decimal scale. Enrollment is required by Sezzle.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| currency | No | USD | |
| end_date | Yes | ||
| start_date | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds meaningful context: enrollment is a prerequisite, and the data is parsed and scaled to four decimal places. These are behavioral traits not captured in annotations, and they do not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose. Every word serves a purpose: the first sentence states what it does and at what scale, the second notes the prerequisite. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is terse and mentions the key prerequisites and precision, but it leaves out what the activity data looks like or how pagination works via the offset parameter. Since there is no output schema, the agent must infer return structure from the tool name alone. This is minimally viable but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no explanation for any of the four parameters (start_date, end_date, currency, offset). Although the parameter names are somewhat self-explanatory, the description fails to compensate for the complete lack of parameter documentation in the prose, thereby missing the opportunity to clarify usage nuances.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets and parses interest-account activity, which is a specific verb+resource. It distinguishes from sibling tools like sezzle_get_interest_balance by focusing on activity rather than balance. The four-decimal scale detail adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that enrollment is required by Sezzle, which is a precondition for use, but it does not explain when to choose this tool over alternatives like sezzle_get_interest_balance or settlement tools. No alternatives are named or excluded, so usage guidance is largely absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sezzle_get_interest_balanceARead-onlyIdempotent
Get interest-account balance losslessly at four-decimal scale. Enrollment is required by Sezzle.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | USD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral details beyond annotations: 'losslessly at four-decimal scale' indicates precision preservation, and 'Enrollment is required' warns of a prerequisite. The annotations already indicate a safe read operation, but the description adds useful context about precision and enrollment.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundant information. The core purpose is front-loaded in the first sentence, and the second sentence adds a key prerequisite. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with strong annotations, the description adequately covers the purpose and a key precondition. However, it does not explain the single parameter's usage or mention potential error states, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention the 'currency' parameter at all. Schema description coverage is 0%, and the description fails to compensate by explaining how the currency affects the balance. The parameter is left entirely to the schema's enum and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and clearly identifies the resource 'interest-account balance', with a precise qualifier 'losslessly at four-decimal scale'. This distinguishes it from the sibling 'sezzle_get_interest_activity', which covers activity rather than balance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. It mentions the prerequisite that enrollment is required, but does not state conditions for use or contrast with sibling tools like sezzle_get_interest_activity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sezzle_get_merchant_contextGet Sezzle Merchant ContextARead-onlyIdempotent
Return non-secret environment, merchant, safety, and permission context for this server process.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds value by specifying the return payload is non-secret and covers environment, merchant, safety, and permission categories, which is beyond the annotations. It clarifies the tool returns contextual information without exposing secrets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action ('Return') and immediately clarifies the scope. Every word contributes to understanding the tool's purpose, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is the sole source of information about return values. It lists high-level categories but does not detail the structure or meaning of 'safety' or 'permission' context. For a simple context tool, this is adequate but leaves some ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty with zero parameters, so the description does not need to explain parameter semantics. Baseline for zero parameters is 4; the description adds no parameter-specific details, but none are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Return' and clearly identifies the resource as 'non-secret environment, merchant, safety, and permission context' for the server process. It distinguishes itself from sibling tools like sezzle_get_order or sezzle_get_settlement_details by focusing on the process context rather than a specific business record.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use when general context about the server process is needed, but it does not explicitly state when to use it over alternatives or provide exclusions. No mention of sibling tools or scenarios where another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sezzle_get_orderGet Sezzle OrderARead-onlyIdempotent
Read a documented Sezzle v2 order and return a minimized financial projection without customer PII.
| Name | Required | Description | Default |
|---|---|---|---|
| order_uuid | Yes | Sezzle order UUID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds meaningful context by specifying that the output is a minimized financial projection and specifically excludes customer PII, which goes beyond the structured hints. No contradiction with annotations was found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It efficiently communicates the action, resource, and output characteristics without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and no output schema, the description adequately covers the purpose and the essential nature of the return value. It could be improved by mentioning error cases or explicitly contrasting with sibling tools, but the existing annotations and schema handle safety and parameter details, making it sufficiently complete for most use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter `order_uuid` is fully described in the schema (100% coverage) as 'Sezzle order UUID.' The description does not add any extra parameter details such as format, requirements, or relationships, so it does not enhance the schema's already sufficient explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read'), identifies the resource ('documented Sezzle v2 order'), and specifies the output ('minimized financial projection without customer PII'). This clearly distinguishes it from sibling tools like sezzle_get_order_report by focusing on a single order and emphasizing PII removal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for reading a single documented order by UUID but does not explicitly state when to use this tool over alternatives such as sezzle_get_order_report or sezzle_get_settlement_details. No exclusions or comparative guidance is provided, leaving the agent to infer the appropriate context from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sezzle_get_order_reportARead-onlyIdempotent
Get the allowlisted Sezzle order report for a maximum seven-day range, excluding customer PII.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | ||
| start_date | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover read-only, idempotent, open-world, and non-destructive behavior, so the description doesn't need to repeat those. It adds useful behavioral context by specifying the seven-day maximum range, the exclusion of customer PII, and the 'allowlisted' access restriction. These details go beyond the structured annotations and give the agent meaningful constraints for invoking the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. Every phrase—'allowlisted,' 'order report,' 'maximum seven-day range,' 'excluding customer PII'—carries meaningful, non-obvious information. It is as concise as possible while still conveying the core purpose and key constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main behavior and important constraints, but it lacks any mention of return format, pagination, or possible errors, and there is no output schema to fill that gap. For a tool with only two date parameters and strong safety annotations, it is adequate but not fully complete. The 'allowlisted' aspect also remains unexplained, leaving uncertainty about access prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no descriptions for start_date and end_date, and the tool description also fails to explain their semantics beyond the obvious names. The only parameter-related hint is the 'maximum seven-day range,' but that does not clarify how the dates should be formatted, which is start vs. end, or how they interact. With 0% schema coverage, the description was expected to compensate, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and identifies the resource as the Sezzle order report, clearly distinguishing it from sibling tools like sezzle_get_order, which likely fetches a single order. The qualifier 'allowlisted' adds a scope boundary, and the 'maximum seven-day range' specifies the report's time span. This is clear, specific, and differentiates the tool from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through the phrase 'order report' and the seven-day range constraint, but it does not explicitly state when to choose this tool over siblings such as sezzle_get_order or sezzle_get_settlement_details. There are no exclusions or alternative comparisons. The context is present but not made actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sezzle_get_payment_sessionGet Sezzle Payment SessionARead-onlyIdempotent
Read a documented Sezzle v2 payment session by UUID.
| Name | Required | Description | Default |
|---|---|---|---|
| session_uuid | Yes | Sezzle session UUID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, fully covering the safety profile. The description's 'Read' is consistent and adds a minor qualifier ('documented'), but it discloses no additional behavioral details such as error handling or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence of ten words that starts with the action verb. Every word contributes to understanding the tool's core function, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with strong annotations and complete schema coverage, the description is sufficient. It does not explicitly state the return format, but the getter semantics and lack of output schema make this an acceptable inference given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage with a clear description for session_uuid ('Sezzle session UUID.'). The description's 'by UUID' adds no extra meaning beyond reinforcing the schema's parameter purpose, so it meets the baseline but does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific action ('Read') and resource ('documented Sezzle v2 payment session') along with the key identifier ('by UUID'). This clearly differentiates it from sibling tools that validate, audit, detect, or generate data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing to read a payment session by UUID, but it provides no explicit guidance on when to prefer this over other getter tools like get_order or get_settlement_details. No exclusions 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.
sezzle_get_settlement_detailsARead-onlyIdempotent
Get and parse a documented settlement detail CSV by payout UUID.
| Name | Required | Description | Default |
|---|---|---|---|
| metadata | No | ||
| payout_uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive. The description adds 'parse' behavior, but does not explain what parsing entails or the return format. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero waste. It clearly communicates the action and key input.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and the description does not mention return values. The metadata parameter is still unexplained. Given the annotations cover safety, the description is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description explains payout_uuid but leaves the metadata parameter completely undocumented. Only partial compensation for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets and parses a settlement detail CSV using a payout UUID, making it distinct from siblings like sezzle_list_settlement_summaries which handle summaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: call this when you have a payout UUID and need detailed settlement data. It does not explicitly mention alternatives or exclusions, 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.
sezzle_list_settlement_summariesBRead-onlyIdempotent
List documented settlement payout summaries with lossless minor-unit amounts.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| currency | No | USD | |
| end_date | Yes | ||
| start_date | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, covering safety and idempotency. The description adds that amounts are 'lossless minor-unit' numbers and that only 'documented' summaries are listed, providing some extra context. However, it does not disclose pagination behavior, ordering, or the meaning of 'documented'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that begins with the verb 'List' and omits unnecessary words. It conveys the essential purpose directly and efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too minimal to be fully complete given no output schema and four parameters. It does not mention the required date range, optional currency/offset, or what a 'summary' contains—information an agent would need to correctly invoke the tool. While annotations provide safety context, the description lacks operational completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description offers no information about the tool's parameters. With schema description coverage at 0%, it does not compensate by explaining that start_date and end_date define the range, currency selects the denomination, or offset controls pagination. This is a significant gap for effective invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('List') and resource ('settlement payout summaries'), adding precision with 'lossless minor-unit amounts'. This distinguishes it from sibling tools like sezzle_get_settlement_details, which likely retrieve individual details rather than summaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for listing summary records, but it does not explicitly state when to use it versus alternatives such as sezzle_get_settlement_details. No when-not conditions or alternative tool names are given, leaving the usage context somewhat inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sezzle_test_webhook_configurationBRead-onlyIdempotent
Evaluate webhook subscriptions, invalid signatures, missing events, and out-of-order evidence without sending a test event.
| Name | Required | Description | Default |
|---|---|---|---|
| webhooks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds one key behavioral detail: it does not send a test event, which is consistent with the read-only/idempotent nature. However, it does not disclose operational details such as whether authentication is required, whether it makes network calls, or what the output looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is efficient and front-loaded with the main action. It has no redundant filler. The structure is acceptable, though separating the 'no test event' caveat could improve readability slightly. It earns points for being concise without losing key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a nested object parameter with five sub-fields and no output schema. The description is too sparse for this complexity. It does not explain the parameter semantics, the evaluation criteria in detail, or what the tool returns. Given the absence of schema descriptions and an output schema, the tool is under-described and an agent will likely struggle to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully explain the input structure. It mentions 'invalid signatures, missing events, and out-of-order evidence' which loosely map to the properties invalid_signature_count, missing_events, and out_of_order_count, but it does not explain the 'webhooks' container object, what each field means, or how they are used. The agent gets almost no guidance on constructing the required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Evaluate') and identifies the resource (webhook subscriptions, invalid signatures, missing events, out-of-order evidence). It clearly distinguishes itself from siblings by noting it does 'without sending a test event.' However, the phrase 'out-of-order evidence' is somewhat unclear, and it could be more explicit that this evaluates webhook configuration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without sending a test event' implies this tool is for when you want to validate webhook behavior without the side effect of sending a test event. This gives a clear context, but there are no explicit alternatives, exclusions, or 'use when' / 'do not use when' statements. It relies on the reader to infer when this is the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sezzle_validate_redirect_urlsARead-onlyIdempotent
Validate cancel and complete redirects against HTTPS and supplied merchant hosts.
| Name | Required | Description | Default |
|---|---|---|---|
| redirects | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a read-only, idempotent, non-destructive operation, which the description aligns with by saying 'validate.' The description adds useful context about the validation criteria (HTTPS and merchant hosts), beyond what annotations provide. However, it does not disclose return behavior or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the primary action and constraints. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a nested parameter and no output schema. The description explains what is validated but does not specify what the tool returns (e.g., boolean, list of failures), which is important for an agent to interpret results. Given the simplicity, this is a moderate gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no descriptions for the 'redirects' object or its properties. The description partially compensates by mentioning 'cancel and complete redirects' and 'supplied merchant hosts,' which map to the input properties. However, it does not explain the expected format of allowed_hosts or the structure of the redirects object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: to validate cancel and complete redirect URLs against HTTPS and merchant-provided hosts. It uses a specific verb and resource, and distinguishes itself from sibling validation tools by targeting redirects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when redirect URLs need to be checked, but it does not state when to prefer it over alternatives or any prerequisites. No exclusions or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sezzle_validate_session_payloadARead-onlyIdempotent
Validate a proposed Sezzle session payload deterministically without sending customer or order data to Sezzle.
| Name | Required | Description | Default |
|---|---|---|---|
| session_payload | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description's job is lighter. It adds valuable behavioral context: 'deterministically' reinforces idempotency, and 'without sending customer or order data' discloses that the tool performs no network I/O. This goes beyond what annotations provide, though it does not explain return format or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the primary action and then adds two key qualifiers. Every word earns its place; there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description is adequate but incomplete. It does not state what 'validate' returns (e.g., a boolean, a list of errors) or what constitutes a valid payload. Since there is no output schema, the description should clarify the outcome of the validation to fully prepare the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has only one parameter with zero description coverage, so the description must compensate. It only refers to 'proposed Sezzle session payload' without explaining the expected structure, required fields, or format. The description adds no meaning beyond the parameter name itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Validate') and resource ('proposed Sezzle session payload'), and distinguishes this from sibling tools like sezzle_validate_redirect_urls by specifying that it validates the session payload specifically. It also adds a distinguishing qualifier ('deterministically without sending data') that separates it from a general validation call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without sending customer or order data to Sezzle' implicitly tells the agent when to use this tool: when a local, deterministic validation is needed before any external API call. It does not explicitly name alternatives or exclusions, but the context is clear enough to guide selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, but detect_stuck_authorizations and detect_uncaptured_orders are closely related, and validate_session_payload overlaps somewhat with diagnose_integration. Descriptions help clarify the differences, but an agent might occasionally misselect.
All tools follow a consistent sezzle_<verb>_<noun> pattern in snake_case. Verbs like validate, detect, get, list, generate are used predictably, and collection vs. single-item retrieval follows standard get/list conventions.
With 18 tools, the server is on the heavier side but still within a reasonable range for a comprehensive operations and diagnostics toolkit. Each tool addresses a specific need, and the count feels justified by the breadth of Sezzle integration concerns.
The toolset covers validation, diagnostics, monitoring, settlement, authentication, and reporting, which is solid for an ops-focused server. Minor gaps exist, such as no list_payment_sessions or list_orders endpoint, but the order report and existing getters mitigate these gaps.
Maintenance
Related MCP Connectors
Remote MCP for Universal Cart merchant readiness MCP, structured receipts, audit logs, and reviewer-
Manage websites, help documents and customer-support conversations with safe, scoped tools.
Create and manage checkout pages, event ticketing, forms, customers, payments and subscriptions.
Query and manage Mercoa AP/AR bill-pay: entities, invoices, transactions and payment methods.
Related MCP Servers
- FlicenseCqualityDmaintenanceEnables interaction with the BeezUP Merchant API for reading and writing BeezUP data, including store management and configuration.100
- FlicenseAqualityCmaintenanceSecurity-focused MCP server for Shopify Admin GraphQL with read-only queries by default and mutations requiring preview and one-time confirmation. It manages short-lived tokens internally and enforces strict scope and approval controls.420
- AlicenseNot gradedqualityBmaintenanceSafe-write Shopify operations MCP server with plan-before-execute writes, out-of-band approval, and tamper-evident audit trail.560MIT
- AlicenseAqualityCmaintenanceEnables MCP hosts like Claude, VS Code, Cursor, and others to discover payment methods, create payment links, verify payments, inspect invoices, and manage refunds through focused tools, with a guided safe payment workflow and a restricted generic API escape hatch.7MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/onatozmenn/sezzle-merchant-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server