Skip to main content
Glama

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 bigint arithmetic; 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=stdio

Mutation 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:

  1. Call the preview tool, or call a combined mutation tool with confirm: false.

  2. Review current state, requested change, financial impact, validation, warnings, expiry, and audit ID.

  3. Repeat the unchanged request with the returned preview_id and literal confirm: 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_merchant

  • sezzle_get_merchant_context

  • sezzle_create_payment_session

  • sezzle_get_payment_session

  • sezzle_cancel_active_checkout

  • sezzle_get_order

  • sezzle_update_order_reference

  • sezzle_preview_capture

  • sezzle_capture_order

  • sezzle_preview_refund

  • sezzle_refund_order

  • sezzle_preview_release_authorization

  • sezzle_release_authorization

  • sezzle_reauthorize_order

Settlements, reports, and reconciliation

  • sezzle_list_settlement_summaries

  • sezzle_get_settlement_details

  • sezzle_get_order_report

  • sezzle_get_interest_balance

  • sezzle_get_interest_activity

  • sezzle_reconcile_settlement

  • sezzle_find_unmatched_orders

  • sezzle_detect_refund_mismatches

  • sezzle_detect_capture_mismatches

  • sezzle_detect_fee_anomalies

  • sezzle_explain_payout_difference

  • sezzle_generate_finance_daily_brief

Webhooks

  • sezzle_list_webhooks

  • sezzle_create_webhook

  • sezzle_update_webhook

  • sezzle_delete_webhook

  • sezzle_send_test_webhook

  • sezzle_verify_webhook_signature

  • sezzle_ingest_webhook_event

  • sezzle_list_webhook_events

  • sezzle_get_webhook_event

  • sezzle_inspect_webhook_health

  • sezzle_find_missing_order_events

  • sezzle_detect_out_of_order_events

  • sezzle_detect_duplicate_webhook_events

Integration Doctor

  • sezzle_diagnose_integration

  • sezzle_validate_session_payload

  • sezzle_validate_redirect_urls

  • sezzle_audit_auth_capture_flow

  • sezzle_detect_stuck_authorizations

  • sezzle_detect_uncaptured_orders

  • sezzle_detect_duplicate_refunds

  • sezzle_test_webhook_configuration

  • sezzle_generate_go_live_checklist

Support and audit

  • sezzle_explain_order_status_for_support

  • sezzle_classify_support_request

  • sezzle_draft_customer_response

  • sezzle_determine_safe_support_route

  • sezzle_identify_required_escalation

  • sezzle_list_audit_events

  • sezzle_get_audit_event

Permission Profiles

Set SEZZLE_PERMISSION_PROFILE to one profile:

Profile

Registered capabilities

read

Auth context, sessions, orders, settlements, reports, and Integration Doctor

finance

Read capabilities plus capture/refund/release/session/order previews, reconciliation, and write tools when enabled

webhooks

Subscription management, signature verification, ingestion, timelines, and health

support

Five isolated support tools; raw order read tools are not registered

admin

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-tools

Available 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:run

Sandbox Setup

  1. Create or obtain a Sezzle sandbox merchant account.

  2. Generate sandbox API keys in the sandbox Merchant Dashboard.

  3. Copy .env.example to .env.

  4. Keep SEZZLE_ENV=sandbox, SEZZLE_READ_ONLY=true, and SEZZLE_PERMISSION_PROFILE=read initially.

  5. Set SEZZLE_MERCHANT_UUID, SEZZLE_API_KEY, and SEZZLE_API_SECRET.

  6. Build and connect an MCP client.

  7. 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=true

The 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=3000

The 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.example

Terminate 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:run

For HTTP plus persistent SQLite, set MCP_HTTP_AUTH_TOKEN in .env and run:

docker compose up --build

Compose uses a non-root image, read-only root filesystem, dropped capabilities, a dedicated SQLite volume, and a health check.

Example Workflows

Daily operations review

  1. Read sezzle://config, sezzle://permissions, and sezzle://capabilities.

  2. Authenticate and verify the merchant/environment.

  3. Fetch scoped order/report evidence.

  4. Run sezzle_detect_uncaptured_orders, reconciliation, and webhook health checks.

  5. Prepare capture/refund/release previews.

  6. Present audit IDs, warnings, and expected financial impact.

  7. Stop without executing unless the user separately approves a specific preview.

Refund workflow

  1. Call sezzle_preview_refund with an integer minor-unit amount.

  2. Confirm the current captured, refunded, and remaining-refundable amounts.

  3. Resolve warnings or validation failures.

  4. Call sezzle_refund_order with the unchanged request, preview_id, and confirm: true.

  5. 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-secret

Use sezzle_create_webhook in write-enabled webhooks or admin mode. It previews URL/event-set changes before confirmation.

For ingestion:

  1. Preserve the exact request bytes as a UTF-8 string.

  2. Pass the exact raw body and Sezzle-Signature value to sezzle_verify_webhook_signature.

  3. Call sezzle_ingest_webhook_event with literal confirm: true only after verification policy allows storage.

  4. Invalid signatures are rejected before JSON parsing.

  5. Event UUID and payload hash deduplicate repeated delivery.

  6. 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://config

  • sezzle://permissions

  • sezzle://capabilities

  • sezzle://diagnostic-codes

  • sezzle://audit-summary (admin only)

  • sezzle://webhook-health (webhooks or admin)

Resources never expose API keys, secrets, bearer tokens, signatures, raw webhook bodies, or customer records.

MCP Prompts

  • sezzle_daily_operations_review

  • sezzle_settlement_reconciliation

  • sezzle_integration_go_live_review

  • sezzle_webhook_incident_investigation

  • sezzle_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/report is 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 published https://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

No endpoint absent from the published Sezzle OpenAPI specification is intentionally exposed.

License

MIT. See LICENSE.

Available Tools

18 tools
sezzle_audit_auth_capture_flowC
Read-onlyIdempotent

Audit supplied authorization, capture, refund, reference, and currency state for deterministic flow defects.

ParametersJSON Schema
NameRequiredDescriptionDefault
nowYes
ordersYes

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

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 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 MerchantA
Read-onlyIdempotent

Acquire or refresh a merchant bearer token from configured environment credentials. Secrets are never returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoForce token reacquisition.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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

The description is a single sentence with no filler. It front-loads the 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.

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 (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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

The description clearly implies when to use this tool: whenever 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_refundsA
Read-onlyIdempotent

Detect duplicate refund IDs or repeated amount/time fingerprints in supplied order evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
ordersYes

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, 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

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 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.

Usage Guidelines3/5

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_authorizationsB
Read-onlyIdempotent

Find approved uncaptured authorizations that have not progressed within a threshold.

ParametersJSON Schema
NameRequiredDescriptionDefault
nowYes
ordersYes
threshold_minutesNo

TDQS

B3.1/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 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_ordersA
Read-onlyIdempotent

Find approved orders whose captured amount remains below authorization.

ParametersJSON Schema
NameRequiredDescriptionDefault
nowYes
ordersYes

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 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_integrationB
Read-onlyIdempotent

Run deterministic Integration Doctor checks over supplied configuration, order, webhook, and reconciliation evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

TDQS

B3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

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 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_checklistA
Read-onlyIdempotent

Generate a deterministic production-readiness checklist and blocking findings from supplied evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness5/5

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

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

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_activityA
Read-onlyIdempotent

Get and parse interest-account activity at four-decimal scale. Enrollment is required by Sezzle.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNo
currencyNoUSD
end_dateYes
start_dateYes

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_balanceA
Read-onlyIdempotent

Get interest-account balance losslessly at four-decimal scale. Enrollment is required by Sezzle.

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoUSD

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

For a simple one-parameter read 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.

Parameters2/5

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.

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 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.

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 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 ContextA
Read-onlyIdempotent

Return non-secret environment, merchant, safety, and permission context for this server process.

ParametersJSON Schema
NameRequiredDescriptionDefault

No 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, 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.

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the action ('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.

Completeness3/5

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

With no output schema, the description 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 OrderA
Read-onlyIdempotent

Read a documented Sezzle v2 order and return a minimized financial projection without customer PII.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_uuidYesSezzle order UUID.

TDQS

A4/5.0
Behavior4/5

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.

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. 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.

Completeness4/5

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

For a simple read tool with 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_reportA
Read-onlyIdempotent

Get the allowlisted Sezzle order report for a maximum seven-day range, excluding customer PII.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYes
start_dateYes

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters1/5

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.

Purpose5/5

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

The description uses a specific verb 'Get' and identifies the resource 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.

Usage Guidelines3/5

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 SessionA
Read-onlyIdempotent

Read a documented Sezzle v2 payment session by UUID.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_uuidYesSezzle session UUID.

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, 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.

Conciseness5/5

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.

Completeness4/5

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

For a simple one-parameter read 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_detailsA
Read-onlyIdempotent

Get and parse a documented settlement detail CSV by payout UUID.

ParametersJSON Schema
NameRequiredDescriptionDefault
metadataNo
payout_uuidYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

The description implies usage: call this when you 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_summariesB
Read-onlyIdempotent

List documented settlement payout summaries with lossless minor-unit amounts.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNo
currencyNoUSD
end_dateYes
start_dateYes

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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

The description clearly states a specific action ('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.

Usage Guidelines3/5

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_configurationB
Read-onlyIdempotent

Evaluate webhook subscriptions, invalid signatures, missing events, and out-of-order evidence without sending a test event.

ParametersJSON Schema
NameRequiredDescriptionDefault
webhooksYes

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_urlsA
Read-onlyIdempotent

Validate cancel and complete redirects against HTTPS and supplied merchant hosts.

ParametersJSON Schema
NameRequiredDescriptionDefault
redirectsYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

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: 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.

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 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_payloadA
Read-onlyIdempotent

Validate a proposed Sezzle session payload deterministically without sending customer or order data to Sezzle.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_payloadYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

A3.6/5.0
Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivitySlowing
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    C
    maintenance
    Security-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.
    4
    20
  • A
    license
    Not graded
    quality
    B
    maintenance
    Safe-write Shopify operations MCP server with plan-before-execute writes, out-of-band approval, and tamper-evident audit trail.
    560
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables 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.
    7
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/onatozmenn/sezzle-merchant-mcp'

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