{"openapi":"3.1.0","info":{"title":"Easypay (BYOK) API","version":"0.1.0","description":"Easypay (BYOK) lets an AI assistant read your own Easypay data through the Easypay API with a key you supply (Easypay account id). Read-only: 12 tools (check_connection, get_account_config, list_single_payments, get_single_payment, list_subscription_payments, list_captures, list_refunds, list_settlements, list_chargebacks, list_ledger_entries, list_payment_links, list_terminals). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-easypay.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-easypay/docs"},"termsOfService":"https://connectorbay.com/byok-easypay/terms"},"servers":[{"url":"https://byok-easypay.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-easypay/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/check_connection":{"post":{"operationId":"check_connection","summary":"Check that the account id and API key are accepted and show which environment answered. Use for \"Are my Easypay credenti","description":"Check that the account id and API key are accepted and show which environment answered. Use for \"Are my Easypay credentials valid\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"check_connectionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_account_config":{"post":{"operationId":"get_account_config","summary":"Show the account configuration: Easypay client id, the account id and the payment methods enabled. Use for \"Which paymen","description":"Show the account configuration: Easypay client id, the account id and the payment methods enabled. Use for \"Which payment methods are enabled on my Easypay account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_account_configArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_single_payments":{"post":{"operationId":"list_single_payments","summary":"List single payments of the account, newest page first, with status, amount, method and creation time (customer details ","description":"List single payments of the account, newest page first, with status, amount, method and creation time (customer details are not returned). Use for \"What single payments did my Easypay account receive recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"records_per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Records per page (default 20; the documented maximum is 100 for subscriptions).","title":"Records Per Page"},"type":{"anyOf":[{"enum":["sale","authorisation"],"type":"string"},{"type":"null"}],"default":null,"description":"Operation type: sale or authorisation.","title":"Type"},"method":{"anyOf":[{"enum":["CC","VI","DD","MB","MBW","AP","GP"],"type":"string"},{"type":"null"}],"default":null,"description":"Payment method code: CC card, VI Visa, DD direct debit, MB Multibanco, MBW MB WAY, AP Apple Pay, GP Google Pay.","title":"Method"},"created_at":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created in this UTC window of at most 30 days, written interval(2026-01-01 00:00,2026-01-15 00:00).","title":"Created At"},"key":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Your own payment key (the reference you set when creating the payment) to filter by.","title":"Key"}},"title":"list_single_paymentsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_single_payment":{"post":{"operationId":"get_single_payment","summary":"Get one single payment by id with its status, amount, currency, method type and the captures made against it. Use for \"S","description":"Get one single payment by id with its status, amount, currency, method type and the captures made against it. Use for \"Show the details of Easypay single payment c6056234-a3f9-42de-b944-3ed793fcb6bb\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Single payment id (UUID) from list_single_payments.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_single_paymentArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_subscription_payments":{"post":{"operationId":"list_subscription_payments","summary":"List subscription payments with frequency, value, number of captures allowed and the payment method type (customer detai","description":"List subscription payments with frequency, value, number of captures allowed and the payment method type (customer details are not returned). Use for \"Which subscriptions are set up on my Easypay account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"records_per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Records per page (default 20; the documented maximum is 100 for subscriptions).","title":"Records Per Page"},"status":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by subscription status.","title":"Status"},"key":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by your subscription key.","title":"Key"},"created_at":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created in this UTC window of at most 30 days, written interval(2026-01-01 00:00,2026-01-15 00:00).","title":"Created At"}},"title":"list_subscription_paymentsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_captures":{"post":{"operationId":"list_captures","summary":"List captures (money collected for payments) with status, amount, payment type and capture date, newest first. Use for \"","description":"List captures (money collected for payments) with status, amount, payment type and capture date, newest first. Use for \"What captures did Easypay record this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"number"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's metadata.next_cursor to fetch the next page; leave empty for the first page.","title":"Cursor"},"created_at":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created in this UTC window of at most 30 days, written interval(2026-01-01 00:00,2026-01-15 00:00).","title":"Created At"}},"title":"list_capturesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_refunds":{"post":{"operationId":"list_refunds","summary":"List refunds with status, amount and the capture they belong to (bank account and contact details are not returned). Use","description":"List refunds with status, amount and the capture they belong to (bank account and contact details are not returned). Use for \"Which refunds were issued on my Easypay account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"number"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's metadata.next_cursor to fetch the next page; leave empty for the first page.","title":"Cursor"},"created_at":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created in this UTC window of at most 30 days, written interval(2026-01-01 00:00,2026-01-15 00:00).","title":"Created At"}},"title":"list_refundsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_settlements":{"post":{"operationId":"list_settlements","summary":"List settlements (bank transfers grouping paid-out transactions) with status, total amount and number of items. Use for ","description":"List settlements (bank transfers grouping paid-out transactions) with status, total amount and number of items. Use for \"What settlements has Easypay paid out to me\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"number"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's metadata.next_cursor to fetch the next page; leave empty for the first page.","title":"Cursor"},"created_at":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created in this UTC window of at most 30 days, written interval(2026-01-01 00:00,2026-01-15 00:00).","title":"Created At"},"status":{"anyOf":[{"enum":["IN_TRANSIT","SUCCEEDED","FAILED"],"type":"string"},{"type":"null"}],"default":null,"description":"Settlement status: IN_TRANSIT, SUCCEEDED or FAILED (sent as status[]).","title":"Status"}},"title":"list_settlementsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_chargebacks":{"post":{"operationId":"list_chargebacks","summary":"List chargebacks (reversals started by a customer's bank) with reason code, amount and the capture they reverse. Use for","description":"List chargebacks (reversals started by a customer's bank) with reason code, amount and the capture they reverse. Use for \"Did I get any chargebacks on Easypay\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"number"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's metadata.next_cursor to fetch the next page; leave empty for the first page.","title":"Cursor"},"created_at":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created in this UTC window of at most 30 days, written interval(2026-01-01 00:00,2026-01-15 00:00).","title":"Created At"},"capture_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only chargebacks of this capture id.","title":"Capture Id"}},"title":"list_chargebacksArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_ledger_entries":{"post":{"operationId":"list_ledger_entries","summary":"List reconciliation ledger entries (captures, refunds, fees, transfers) with type, amount and transfer batch. Use for \"S","description":"List reconciliation ledger entries (captures, refunds, fees, transfers) with type, amount and transfer batch. Use for \"Show my Easypay ledger entries for the last two weeks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"number"},{"type":"null"}],"default":100,"description":"How many entries to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's metadata.next_cursor to fetch the next page; leave empty for the first page.","title":"Cursor"},"created_at":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only records created in this UTC window of at most 30 days, written interval(2026-01-01 00:00,2026-01-15 00:00).","title":"Created At"},"transaction_type":{"anyOf":[{"enum":["CP","RF","RV","FEE","SP","MAN","TB","OT","CB","OP","TF","RW","RR","RX"],"type":"string"},{"type":"null"}],"default":null,"description":"Ledger entry type code, for example CP capture, RF refund, FEE fee, TF transfer.","title":"Transaction Type"},"transfer_batch":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only entries of this transfer batch number.","title":"Transfer Batch"}},"title":"list_ledger_entriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_payment_links":{"post":{"operationId":"list_payment_links","summary":"List Pay By Link payment links with type, status, expiry and the public link URL (customer details are not returned). Us","description":"List Pay By Link payment links with type, status, expiry and the public link URL (customer details are not returned). Use for \"Which Easypay payment links are still active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"number"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's metadata.next_cursor to fetch the next page; leave empty for the first page.","title":"Cursor"},"status":{"anyOf":[{"enum":["ACTIVE","EXPIRED","FINALIZED","CANCELLED"],"type":"string"},{"type":"null"}],"default":null,"description":"Link status: ACTIVE, EXPIRED, FINALIZED or CANCELLED (sent as status[]).","title":"Status"},"created_at":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Creation date as one RFC 3339 time or a range interval(2026-01-01T00:00:00Z,2026-01-31T23:59:59Z).","title":"Created At"}},"title":"list_payment_linksArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_terminals":{"post":{"operationId":"list_terminals","summary":"List the card payment terminals registered on the account with model, status and last transaction time. Use for \"Which E","description":"List the card payment terminals registered on the account with model, status and last transaction time. Use for \"Which Easypay card terminals do I have and are they active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"number"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's metadata.next_cursor to fetch the next page; leave empty for the first page.","title":"Cursor"},"status":{"anyOf":[{"enum":["ACTIVE","INACTIVE"],"type":"string"},{"type":"null"}],"default":null,"description":"Terminal status: ACTIVE or INACTIVE.","title":"Status"},"model":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by terminal model, for example V240m.","title":"Model"}},"title":"list_terminalsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}