{"openapi":"3.1.0","info":{"title":"Tap Payments (BYOK) API","version":"0.1.0","description":"Tap Payments (BYOK) lets an AI assistant read your own Tap Payments data through the Tap Payments API with a key you supply (secret API key (sk_...)). Read-only: 8 tools (list_charges, list_payouts, get_payout, list_customers, get_customer, list_saved_cards, list_intents, get_intent). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-tappayments.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-tappayments/docs"},"termsOfService":"https://connectorbay.com/byok-tappayments/terms"},"servers":[{"url":"https://byok-tappayments.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-tappayments/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/list_charges":{"post":{"operationId":"list_charges","summary":"List charges created in a time period, newest first by default, with status, amount, currency, response code and message","description":"List charges created in a time period, newest first by default, with status, amount, currency, response code and message, references, customer id and payment method. Card numbers are not returned. Use for \"Which Tap charges were captured last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_ms":{"description":"Start of the period as Unix time in milliseconds, for example 1767225600000.","maxLength":200,"title":"From Ms","type":"string"},"to_ms":{"description":"End of the period as Unix time in milliseconds, for example 1769817600000.","maxLength":200,"title":"To Ms","type":"string"},"status":{"anyOf":[{"enum":["INITIATED","IN_PROGRESS","ABANDONED","CANCELLED","FAILED","DECLINED","RESTRICTED","CAPTURED","VOID","TIMEDOUT","UNKNOWN"],"type":"string"},{"type":"null"}],"default":null,"description":"Only charges in this state.","title":"Status"},"currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"Only charges in this currency, for example KWD.","title":"Currency"},"limit":{"anyOf":[{"enum":["10","25","50"],"type":"string"},{"type":"null"}],"default":"25","description":"How many charges to return: 10, 25 (default) or 50.","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Charge id after which to continue, for paging (the last id of the previous page).","title":"Starting After"},"order":{"anyOf":[{"enum":["chronological","reverse_chronological"],"type":"string"},{"type":"null"}],"default":"reverse_chronological","description":"chronological (oldest first) or reverse_chronological (newest first).","title":"Order"}},"required":["from_ms","to_ms"],"title":"list_chargesArguments","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_payouts":{"post":{"operationId":"list_payouts","summary":"List payouts made in a time period with status, date, amount, currency, merchant id and bank reference. Use for \"What pa","description":"List payouts made in a time period with status, date, amount, currency, merchant id and bank reference. Use for \"What payouts did Tap make in December\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_ms":{"description":"Start of the period as Unix time in milliseconds, for example 1767225600000.","maxLength":200,"title":"From Ms","type":"string"},"to_ms":{"description":"End of the period as Unix time in milliseconds, for example 1769817600000.","maxLength":200,"title":"To Ms","type":"string"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many payouts to return (1 to 50, default 25).","title":"Limit"}},"required":["from_ms","to_ms"],"title":"list_payoutsArguments","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_payout":{"post":{"operationId":"get_payout","summary":"Look up one payout by its id with status, date, amount, currency and bank reference. Use for \"Show Tap payout payout_abc","description":"Look up one payout by its id with status, date, amount, currency and bank reference. Use for \"Show Tap payout payout_abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"payout_id":{"description":"Payout id from list_payouts.","maxLength":200,"title":"Payout Id","type":"string"}},"required":["payout_id"],"title":"get_payoutArguments","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_customers":{"post":{"operationId":"list_customers","summary":"List customers created with the API key, with paging. Use for \"Which customers exist in my Tap account\".","description":"List customers created with the API key, with paging. Use for \"Which customers exist in my Tap account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"50","description":"How many customers to return (default 50).","title":"Limit"},"page":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"1","description":"Page number, starting at 1.","title":"Page"},"starting_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Customer id after which to continue.","title":"Starting After"}},"title":"list_customersArguments","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_customer":{"post":{"operationId":"get_customer","summary":"Get one customer by id. Use for \"Show Tap customer cus_TS1234567890\".","description":"Get one customer by id. Use for \"Show Tap customer cus_TS1234567890\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer_id":{"description":"Customer id such as 'cus_TS1234567890'.","maxLength":200,"title":"Customer Id","type":"string"}},"required":["customer_id"],"title":"get_customerArguments","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_saved_cards":{"post":{"operationId":"list_saved_cards","summary":"List the cards saved for a customer (the ten most recent): brand, funding type, last four digits, expiry and cardholder ","description":"List the cards saved for a customer (the ten most recent): brand, funding type, last four digits, expiry and cardholder name. Use for \"Which cards does Tap customer cus_TS1234567890 have saved\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer_id":{"description":"Customer id such as 'cus_TS1234567890'.","maxLength":200,"title":"Customer Id","type":"string"}},"required":["customer_id"],"title":"list_saved_cardsArguments","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_intents":{"post":{"operationId":"list_intents","summary":"List payment intents (point-of-sale initiated payments) with paging and an optional creation-time period. Use for \"Which","description":"List payment intents (point-of-sale initiated payments) with paging and an optional creation-time period. Use for \"Which Tap payment intents were created recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":5,"description":"How many intents to return (default 5).","title":"Limit"}},"title":"list_intentsArguments","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_intent":{"post":{"operationId":"get_intent","summary":"Get one payment intent by id. Use for \"Show Tap intent intent_YYs93326846YKmB21io0s929\".","description":"Get one payment intent by id. Use for \"Show Tap intent intent_YYs93326846YKmB21io0s929\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"intent_id":{"description":"Intent id such as 'intent_YYs93326846YKmB21io0s929'.","maxLength":200,"title":"Intent Id","type":"string"}},"required":["intent_id"],"title":"get_intentArguments","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}}}}