Docs
API 2026-05-27.dahlia Dashboard

Build with AI agents

Every Fluveo MCP tool, and what an agent key may do on each API operation.

Fluveo MCP lists the tools below, and an agent reaches the API operations further down through them. A tool call sends the tool's name and an arguments object that matches its input. Fluveo MCP shows how to add the server to a client, and Authentication covers agent keys.

Tools#

The server lists its tools by name, in this order. A key sees only the tools its permissions allow, so a key without Read on Account gets no get_account_info in its list.

ToolGroupWhat it doesKey needs
cancel_paymentStore dataCancels a payment that is not paid or captured yet, such as one in requires_capture, and releases the amount held on the buyer's card. It writes. Its operation needs approval for an agent key: a person approves each cancellation in the Dashboard, within 15 minutes.rak_payment_intent_write
capture_paymentStore dataTakes the amount a payment holds on the buyer's card, so the store is paid: all of it, or amount_to_capture, and the rest of the hold is released. It works on a PaymentIntent in requires_capture, one made with capture_method manual. It writes. Its operation needs approval for an agent key: a person approves each capture in the Dashboard, within 15 minutes.rak_payment_intent_write
create_checkout_sessionCheckoutCreates a Fluveo payment page for one purchase. The buyer opens the session's url and pays there with a method the store accepts, and types any card data on that page, never in the call. It writes. Its operation is allowed for an agent key, so it runs at once, with no approval.rak_checkout_session_write
create_customerCustomersCreates a customer of the store, to keep a buyer's contact details and link their payments, checkout sessions and refunds. It writes. Its operation is allowed for an agent key, so it runs at once, with no approval.rak_customer_write
create_payment_linkCheckoutCreates a link anyone can open to pay for the same items on a Fluveo payment page, as many times as the link stays active. It writes. Its operation is allowed for an agent key, so it runs at once, with no approval.rak_payment_links_write
create_refundStore dataGives the buyer back all or part of a payment that succeeded, by its PaymentIntent or its charge. It writes and moves money, so a person approves each refund in the Dashboard before it runs, within 15 minutes. Before it asks for that approval, it reads the payment's charges with the agent's key. When that read answers, it refuses at once, with no refund sent and no approval made, if the payment has nothing captured, if the amount is above what is left to refund, or if no amount is given and nothing is left. A read that fails, or that the key may not make, refuses nothing. That read only helps the agent: the API decides every refund. A Boleto payment cannot be refunded, and the API answers an error.rak_charge_write
fetch_fluveo_docDocsReturns one page of these docs as Markdown, by its path or by its address on the docs site.Nothing
fluveo_api_detailsAPIDescribes one API operation by the id that fluveo_api_search returned. It reads the server's own copy of the API contract and calls no API.Nothing
fluveo_api_readAPIRuns one GET operation of the API with the agent's own key and returns the store's data. It runs only a GET operation whose available is true.Nothing
fluveo_api_searchAPIFinds API operations from what the agent wants to do and the resource it acts on. It reads the server's own copy of the API contract and calls no API.Nothing
fluveo_api_writeAPIRuns one POST or DELETE operation of the API with the agent's own key, such as creating a customer or a refund. It runs only an operation whose available is true. An operation that needs approval runs only after a person approves it in the Dashboard.Nothing
get_account_infoAccountReturns the store behind the key and what the key may do on each resource. Call it first, to know which store the agent acts on.rak_account_read
get_balanceStore dataReturns the store's balance in test mode: what is available to pay out and what is still pending, per currency. It only reads.rak_balance_read
list_customersCustomersLists the store's customers, newest first, at most 25 per call. It only reads.rak_customer_read
list_disputesStore dataLists the store's disputes, newest first, at most 25 per call. A dispute is a buyer contesting a payment with their bank. It only reads.rak_dispute_read
list_eventsStore dataLists what happened on the store in the last 30 days, newest first, at most 25 per call. Each event names its type, such as charge.succeeded, and carries the object as it was then. It only reads.rak_event_read
list_paymentsStore dataLists the store's payments, newest first, at most 25 per call. Each is a PaymentIntent, one per payment a buyer makes or tries, with its amount, currency, status and payment method. It only reads.rak_payment_intent_read
list_refundsStore dataLists the store's refunds, newest first, at most 25 per call, each with its amount, currency, status and the payment it belongs to. It only reads.rak_charge_read
list_webhook_endpointsStore dataLists the URLs the store sends its events to, with the event types each receives and whether it is enabled, at most 25 per call. It only reads.rak_webhook_read
retrieve_customerCustomersReturns one customer by its id, with its name, email, phone, address and metadata. It only reads.rak_customer_read
retrieve_disputeStore dataReturns one dispute by its id: its amount, reason and status, the charge it contests, the deadline for evidence and the evidence sent so far. It only reads.rak_dispute_read
retrieve_eventStore dataReturns one event by its id: its type, when it happened, and the object as it was then, with the fields that changed in previous_attributes. It only reads.rak_event_read
retrieve_paymentStore dataReturns one payment by its PaymentIntent id: its amount, the amount still held and the amount received, its currency, status, customer, payment method, latest charge and metadata. It only reads.rak_payment_intent_read
retrieve_refundStore dataReturns one refund by its id: its amount, currency, status, reason and the payment it belongs to. It only reads.rak_charge_read
retrieve_webhook_endpointStore dataReturns one webhook endpoint by its id: its URL, the event types it receives and whether it is enabled. It only reads.rak_webhook_read
search_fluveo_docsDocsFinds the pages of these docs, guides and API reference both, that best answer a question.Nothing
search_paymentsStore dataFinds the store's payments that match a query, newest first, at most 25 per call. A query joins clauses of field:'value' with AND, or with OR, never both. The fields are status, amount, currency, customer, created and metadata['key'], and amount and created also take >, >=, < and <=. It only reads.rak_payment_intent_read
update_customerCustomersChanges the fields given of one customer and keeps the rest. It writes. Its operation is allowed for an agent key, so it runs at once, with no approval.rak_customer_write

cancel_payment#

Cancels a payment that is not paid or captured yet, such as one in requires_capture, and releases the amount held on the buyer's card. It writes. Its operation needs approval for an agent key: a person approves each cancellation in the Dashboard, within 15 minutes.

Input
  • payment_intentstringRequired

    The PaymentIntent's id, pi_..., from list_payments or search_payments.

  • cancellation_reasonstringOptional

    Why it is cancelled, kept on the PaymentIntent: duplicate, fraudulent, requested_by_customer or abandoned.

  • human_confirmationobjectOptional

    Leave it out on the first call. When an answer gives human_confirmation, send it back unchanged on the next call, with the same arguments. It holds one field, approval_token.

Call
{
  "name": "cancel_payment",
  "arguments": {
    "payment_intent": "pi_...",
    "cancellation_reason": "requested_by_customer"
  }
}

It answers like fluveo_api_write. The first call cancels nothing: the answer gives approval with status required, the approval_request id, the approval_url of the Dashboard and expires_at, then human_confirmation and an instruction. Once a person approves, call cancel_payment again with the same arguments and that human_confirmation: it answers the operation_id post-v1-payment-intents-intent-cancel, the API's HTTP status and request_id, and the PaymentIntent, now canceled, inside untrusted_data. When the person denies it, nothing is cancelled.

capture_payment#

Takes the amount a payment holds on the buyer's card, so the store is paid: all of it, or amount_to_capture, and the rest of the hold is released. It works on a PaymentIntent in requires_capture, one made with capture_method manual. It writes. Its operation needs approval for an agent key: a person approves each capture in the Dashboard, within 15 minutes.

Input
  • payment_intentstringRequired

    The PaymentIntent's id, pi_..., in status requires_capture, from list_payments or search_payments.

  • amount_to_captureintegerOptional

    How much to capture, a whole number in the currency's smallest unit, so 2000 is 20.00, at most the amount the payment holds. Left out, all of it.

  • human_confirmationobjectOptional

    Leave it out on the first call. When an answer gives human_confirmation, send it back unchanged on the next call, with the same arguments. It holds one field, approval_token.

Call
{
  "name": "capture_payment",
  "arguments": {
    "payment_intent": "pi_...",
    "amount_to_capture": 2000
  }
}

It answers like fluveo_api_write. The first call captures nothing: the answer gives approval with status required, the approval_request id, the approval_url of the Dashboard and expires_at, then human_confirmation and an instruction. Once a person approves, call capture_payment again with the same arguments and that human_confirmation: it answers the operation_id post-v1-payment-intents-intent-capture, the API's HTTP status and request_id, and the PaymentIntent, now succeeded, inside untrusted_data. A further retry answers the same capture, never a second one. When the person denies it, nothing is captured and the payment stays in requires_capture.

create_checkout_session#

Creates a Fluveo payment page for one purchase. The buyer opens the session's url and pays there with a method the store accepts, and types any card data on that page, never in the call. It writes. Its operation is allowed for an agent key, so it runs at once, with no approval.

Input
  • modestringOptional

    payment takes a payment now, and setup saves a payment method for later without charging. Left out, it is payment.

  • line_itemsarrayOptional

    What the buyer pays for, in mode payment: a list of {quantity, price}, with a price id, or {quantity, price_data: {currency, unit_amount, product_data: {name}}}. unit_amount is a whole number in the currency's smallest unit, so 2500 is 25.00.

  • success_urlstringOptional

    Where the page sends the buyer after paying. {CHECKOUT_SESSION_ID} in it is replaced by the session's id.

  • cancel_urlstringOptional

    Where the page sends a buyer who goes back without paying.

  • customerstringOptional

    A customer id of the store, cus_.... Its email fills the page.

  • customer_emailstringOptional

    The buyer's email, filled on the page, when no customer is given.

  • customer_creationstringOptional

    always makes a customer from what the buyer enters, and if_required makes one only when needed.

  • human_confirmationobjectOptional

    Leave it out on the first call. When an answer gives human_confirmation, send it back unchanged on the next call, with the same arguments. It holds one field, approval_token.

Call
{
  "name": "create_checkout_session",
  "arguments": {
    "line_items": [
      {
        "quantity": 1,
        "price_data": {
          "currency": "usd",
          "unit_amount": 2500,
          "product_data": {
            "name": "T-shirt"
          }
        }
      }
    ],
    "success_url": "https://shop.example.com/thanks?session={CHECKOUT_SESSION_ID}"
  }
}

It answers like fluveo_api_write: the operation_id post-v1-checkout-sessions, the API's HTTP status and request_id, and the session, cs_test_..., inside untrusted_data, with its url, the page to send the buyer to. The server sends the request with an Idempotency-Key it draws for the call. When the API gives no usable answer, the tool error api_unavailable gives a human_confirmation: call create_checkout_session again with the same arguments and that human_confirmation, and the same request is sent again, never a second one.

create_customer#

Creates a customer of the store, to keep a buyer's contact details and link their payments, checkout sessions and refunds. It writes. Its operation is allowed for an agent key, so it runs at once, with no approval.

Input
  • namestringOptional

    The customer's full name or business name.

  • emailstringOptional

    The customer's email address.

  • phonestringOptional

    The customer's phone number, with the country code.

  • descriptionstringOptional

    A note about the customer, shown in the Dashboard.

  • addressobjectOptional

    The customer's address: any of line1, line2, city, state, postal_code and country, a two-letter code.

  • metadataobjectOptional

    Key-value pairs of the store's own, such as {"order": "1234"}. Never card data.

  • human_confirmationobjectOptional

    Leave it out on the first call. When an answer gives human_confirmation, send it back unchanged on the next call, with the same arguments. It holds one field, approval_token.

Call
{
  "name": "create_customer",
  "arguments": {
    "name": "Jenny Rosen",
    "email": "jenny@example.com",
    "metadata": {
      "order": "1234"
    }
  }
}

It answers like fluveo_api_write: the operation_id post-v1-customers, the API's HTTP status and request_id, and the new customer, cus_..., inside untrusted_data, with secrets withheld. The server sends the request with an Idempotency-Key it draws for the call. When the API gives no usable answer, the tool error api_unavailable gives a human_confirmation: call create_customer again with the same arguments and that human_confirmation, and the same request is sent again, never a second one.

Creates a link anyone can open to pay for the same items on a Fluveo payment page, as many times as the link stays active. It writes. Its operation is allowed for an agent key, so it runs at once, with no approval.

Input
Call
{
  "name": "create_payment_link",
  "arguments": {
    "line_items": [
      {
        "quantity": 1,
        "price_data": {
          "currency": "usd",
          "unit_amount": 2500,
          "product_data": {
            "name": "T-shirt"
          }
        }
      }
    ]
  }
}

It answers like fluveo_api_write: the operation_id post-v1-payment-links, the API's HTTP status and request_id, and the link, plink_..., inside untrusted_data, with its url to share. The server sends the request with an Idempotency-Key it draws for the call. When the API gives no usable answer, the tool error api_unavailable gives a human_confirmation: call create_payment_link again with the same arguments and that human_confirmation, and the same request is sent again, never a second one.

create_refund#

Gives the buyer back all or part of a payment that succeeded, by its PaymentIntent or its charge. It writes and moves money, so a person approves each refund in the Dashboard before it runs, within 15 minutes. Before it asks for that approval, it reads the payment's charges with the agent's key. When that read answers, it refuses at once, with no refund sent and no approval made, if the payment has nothing captured, if the amount is above what is left to refund, or if no amount is given and nothing is left. A read that fails, or that the key may not make, refuses nothing. That read only helps the agent: the API decides every refund. A Boleto payment cannot be refunded, and the API answers an error.

Input
  • payment_intentstringOptional

    The PaymentIntent of the payment, pi_.... Send either payment_intent or charge, never both.

  • chargestringOptional

    The charge of the payment: ch_... for a card, py_... for a Pix or a Boleto.

  • amountintegerOptional

    How much to give back, a whole number in the currency's smallest unit, so 400 is 4.00. It is at most what was captured less what was already refunded. Left out, all that is left goes back.

  • reasonstringOptional

    Why the payment is refunded: duplicate, fraudulent or requested_by_customer.

  • metadataobjectOptional

    Key-value pairs of the store's own, such as {"order": "1234"}. Never card data.

  • human_confirmationobjectOptional

    Leave it out on the first call. When an answer gives human_confirmation, send it back unchanged on the next call, with the same arguments. It holds one field, approval_token.

Call
{
  "name": "create_refund",
  "arguments": {
    "payment_intent": "pi_...",
    "amount": 400,
    "reason": "requested_by_customer"
  }
}

The first call runs nothing: it answers approval with status required, the approval_request id, the approval_url of the Dashboard and expires_at, then human_confirmation and an instruction. Show the URL to the person, and once they approve it, call create_refund again with the same arguments and that human_confirmation. That call answers like fluveo_api_write: the operation_id post-v1-refunds, the API's HTTP status and request_id, and the refund, re_..., inside untrusted_data. The same call again answers the same refund, never a second one. When the refund cannot fit, the tool error refund_exceeds_refundable says in its message that nothing was captured, or what is left to refund, names in param the amount or the payment's argument when one of them is at fault, and has no status, since no refund request reached the API.

fetch_fluveo_doc#

Returns one page of these docs as Markdown, by its path or by its address on the docs site.

Input
  • pathstringRequired

    A docs path such as /payments/pix, or a page address that search_fluveo_docs returned.

Call
{
  "name": "fetch_fluveo_doc",
  "arguments": {
    "path": "/payments/pix"
  }
}

It answers the page's url and title, its Markdown in content, and truncated, which is true when the page passed 60 KB and was cut there.

fluveo_api_details#

Describes one API operation by the id that fluveo_api_search returned. It reads the server's own copy of the API contract and calls no API.

Input
  • operation_idstringRequired

    An operation id from fluveo_api_search, such as get-v1-customers.

Call
{
  "name": "fluveo_api_details",
  "arguments": {
    "operation_id": "get-v1-customers"
  }
}

It answers the operation's method, path, summary, description, its path, query and body parameters, the response_object, access, permission, policy, window, llm_context, available and the errors_url of the errors page.

fluveo_api_read#

Runs one GET operation of the API with the agent's own key and returns the store's data. It runs only a GET operation whose available is true.

Input
  • operation_idstringRequired

    The id of a GET operation from fluveo_api_search, such as get-v1-customers-customer.

  • parametersobjectOptional

    The operation's parameters by name, as fluveo_api_details lists them: each path parameter, such as customer, and any query parameter, such as limit or starting_after. A limit above 25 is sent as 25. Never card data.

Call
{
  "name": "fluveo_api_read",
  "arguments": {
    "operation_id": "get-v1-customers-customer",
    "parameters": {
      "customer": "cus_..."
    }
  }
}

It answers the operation_id, the API's HTTP status and request_id, limit_capped, and the API's answer inside untrusted_data, with secrets withheld and, in a list, customer names, emails, phones, addresses and tax ids masked. When the key lacks the operation's permission, the tool error carries the API's 403, whose message names the permission.

Finds API operations from what the agent wants to do and the resource it acts on. It reads the server's own copy of the API contract and calls no API.

Input
  • intentstringRequired

    What to do, such as create, list or retrieve. At most 200 characters.

  • resourcestringRequired

    What it acts on, such as refund, customer or payment intent. At most 200 characters.

  • limitintegerOptional

    How many operations to return, from 1 to 20. The default is 5.

Call
{
  "name": "fluveo_api_search",
  "arguments": {
    "intent": "list",
    "resource": "refund",
    "limit": 5
  }
}

It answers the api_version and, in data, the best operations, each with its id, method, path, summary, path_params, access, permission, policy, llm_context and available.

fluveo_api_write#

Runs one POST or DELETE operation of the API with the agent's own key, such as creating a customer or a refund. It runs only an operation whose available is true. An operation that needs approval runs only after a person approves it in the Dashboard.

Input
  • operation_idstringRequired

    The id of a POST or DELETE operation from fluveo_api_search, such as post-v1-customers or post-v1-refunds.

  • parametersobjectOptional

    The operation's path and body parameters together, by name, as fluveo_api_details lists them: the object's id for a path parameter, such as id for /v1/products/{id}, and each body parameter. A nested field is JSON, such as an object for metadata or a list for line_items. Amounts are integers in the currency's smallest unit. An empty object or list is refused, and an empty string clears a field. Never card data.

  • human_confirmationobjectOptional

    Leave it out on the first call. When an answer gives human_confirmation, send it back unchanged on the next call, with the same operation_id and parameters. It holds one field, approval_token.

Call
{
  "name": "fluveo_api_write",
  "arguments": {
    "operation_id": "post-v1-refunds",
    "parameters": {
      "payment_intent": "pi_...",
      "amount": 500
    }
  }
}

It answers the operation_id, the API's HTTP status and request_id, and the API's answer inside untrusted_data, with secrets withheld. When the operation needs a person, nothing runs: the answer gives approval with status required, the approval_request id, the approval_url of the Dashboard and expires_at, then human_confirmation and an instruction. Agent approvals shows the retry. When the API gives no usable answer, the tool error api_unavailable gives a human_confirmation that sends the same request again, never a second one. When the key lacks the operation's permission, the tool error carries the API's 403.

get_account_info#

Returns the store behind the key and what the key may do on each resource. Call it first, to know which store the agent acts on.

It takes no arguments. Send an empty arguments object.

Call
{
  "name": "get_account_info",
  "arguments": {}
}

It answers the store's account_id, livemode (always false), country, default_currency, charges_enabled, payouts_enabled, the key's permissions, the dashboard_api_keys_link and a request_id, with the store's display name inside untrusted_data.

get_balance#

Returns the store's balance in test mode: what is available to pay out and what is still pending, per currency. It only reads.

It takes no arguments. Send an empty arguments object.

Call
{
  "name": "get_balance",
  "arguments": {}
}

It answers like fluveo_api_read: the operation_id get-v1-balance, the API's HTTP status and request_id, and the API's balance object inside untrusted_data.

list_customers#

Lists the store's customers, newest first, at most 25 per call. It only reads.

Input
  • emailstringOptional

    Only the customers with exactly this email.

  • createdobjectOptional

    When the customer was made, in Unix seconds: any of gt, gte, lt and lte, each a whole number.

  • limitintegerOptional

    How many customers to return. Above 25 it is read as 25, and limit_capped says so.

  • starting_afterstringOptional

    The last customer id of a page, cus_...: the list goes on after it.

  • ending_beforestringOptional

    The first customer id of a page, cus_...: the list goes back before it.

Call
{
  "name": "list_customers",
  "arguments": {
    "email": "jenny@example.com",
    "limit": 10
  }
}

It answers like fluveo_api_read: the operation_id get-v1-customers, the API's HTTP status and request_id, limit_capped, and the API's list inside untrusted_data, with has_more for the next page. Each customer's name, email, phone, address, shipping and tax ids are masked in the list, and retrieve_customer shows them. Metadata and descriptions are not masked: they arrive as the store's data, inside untrusted_data.

list_disputes#

Lists the store's disputes, newest first, at most 25 per call. A dispute is a buyer contesting a payment with their bank. It only reads.

Input
  • chargestringOptional

    Only the disputes of this charge id, ch_....

  • payment_intentstringOptional

    Only the disputes of this PaymentIntent id, pi_....

  • createdobjectOptional

    When the dispute opened, in Unix seconds: any of gt, gte, lt and lte, each a whole number.

  • limitintegerOptional

    How many disputes to return. Above 25 it is read as 25, and limit_capped says so.

  • starting_afterstringOptional

    The last dispute id of a page, du_...: the list goes on after it.

  • ending_beforestringOptional

    The first dispute id of a page, du_...: the list goes back before it.

Call
{
  "name": "list_disputes",
  "arguments": {
    "payment_intent": "pi_...",
    "limit": 10
  }
}

It answers like fluveo_api_read: the operation_id get-v1-disputes, the API's HTTP status and request_id, limit_capped, and the API's list inside untrusted_data, with has_more for the next page. Evidence and buyer text arrive as the store's data, inside untrusted_data.

list_events#

Lists what happened on the store in the last 30 days, newest first, at most 25 per call. Each event names its type, such as charge.succeeded, and carries the object as it was then. It only reads.

Input
  • typestringOptional

    Only events of this type, such as charge.succeeded. A * matches the rest of a name, as in charge.*.

  • typesarrayOptional

    Only events of any of these types, up to 20, with no *. Send either type or types.

  • createdobjectOptional

    When the event happened, in Unix seconds: any of gt, gte, lt and lte, each a whole number.

  • delivery_successbooleanOptional

    true for events every webhook endpoint received, false for events with a delivery still failing.

  • limitintegerOptional

    How many events to return. Above 25 it is read as 25, and limit_capped says so.

  • starting_afterstringOptional

    The last event id of a page, evt_...: the list goes on after it.

  • ending_beforestringOptional

    The first event id of a page, evt_...: the list goes back before it.

Call
{
  "name": "list_events",
  "arguments": {
    "type": "charge.*",
    "limit": 10
  }
}

It answers like fluveo_api_read: the operation_id get-v1-events, the API's HTTP status and request_id, limit_capped, and the API's list inside untrusted_data, with has_more for the next page.

list_payments#

Lists the store's payments, newest first, at most 25 per call. Each is a PaymentIntent, one per payment a buyer makes or tries, with its amount, currency, status and payment method. It only reads.

Input
  • customerstringOptional

    Only the payments of this customer id, cus_....

  • createdobjectOptional

    When the payment was made, in Unix seconds: any of gt, gte, lt and lte, each a whole number.

  • limitintegerOptional

    How many payments to return. Above 25 it is read as 25, and limit_capped says so.

  • starting_afterstringOptional

    The last PaymentIntent id of a page, pi_...: the list goes on after it.

  • ending_beforestringOptional

    The first PaymentIntent id of a page, pi_...: the list goes back before it.

Call
{
  "name": "list_payments",
  "arguments": {
    "customer": "cus_...",
    "limit": 10
  }
}

It answers like fluveo_api_read: the operation_id get-v1-payment-intents, the API's HTTP status and request_id, limit_capped, and the API's list inside untrusted_data, with has_more for the next page.

list_refunds#

Lists the store's refunds, newest first, at most 25 per call, each with its amount, currency, status and the payment it belongs to. It only reads.

Input
  • payment_intentstringOptional

    Only the refunds of this PaymentIntent id, pi_....

  • chargestringOptional

    Only the refunds of this charge id, ch_... or py_....

  • createdobjectOptional

    When the refund was made, in Unix seconds: any of gt, gte, lt and lte, each a whole number.

  • limitintegerOptional

    How many refunds to return. Above 25 it is read as 25, and limit_capped says so.

  • starting_afterstringOptional

    The last refund id of a page, re_...: the list goes on after it.

  • ending_beforestringOptional

    The first refund id of a page, re_...: the list goes back before it.

Call
{
  "name": "list_refunds",
  "arguments": {
    "payment_intent": "pi_...",
    "limit": 10
  }
}

It answers like fluveo_api_read: the operation_id get-v1-refunds, the API's HTTP status and request_id, limit_capped, and the API's list inside untrusted_data, with has_more for the next page.

list_webhook_endpoints#

Lists the URLs the store sends its events to, with the event types each receives and whether it is enabled, at most 25 per call. It only reads.

Input
  • limitintegerOptional

    How many endpoints to return. Above 25 it is read as 25, and limit_capped says so.

  • starting_afterstringOptional

    The last endpoint id of a page, we_...: the list goes on after it.

  • ending_beforestringOptional

    The first endpoint id of a page, we_...: the list goes back before it.

Call
{
  "name": "list_webhook_endpoints",
  "arguments": {
    "limit": 10
  }
}

It answers like fluveo_api_read: the operation_id get-v1-webhook-endpoints, the API's HTTP status and request_id, limit_capped, and the API's list inside untrusted_data, with has_more for the next page. Signing secrets are withheld. The Dashboard shows them.

retrieve_customer#

Returns one customer by its id, with its name, email, phone, address and metadata. It only reads.

Input
  • customerstringRequired

    The customer's id, cus_..., from list_customers or create_customer.

Call
{
  "name": "retrieve_customer",
  "arguments": {
    "customer": "cus_..."
  }
}

It answers like fluveo_api_read: the operation_id get-v1-customers-customer, the API's HTTP status and request_id, and the customer inside untrusted_data, unmasked.

retrieve_dispute#

Returns one dispute by its id: its amount, reason and status, the charge it contests, the deadline for evidence and the evidence sent so far. It only reads.

Input
  • disputestringRequired

    The dispute's id, du_..., from list_disputes or an event.

Call
{
  "name": "retrieve_dispute",
  "arguments": {
    "dispute": "du_..."
  }
}

It answers like fluveo_api_read: the operation_id get-v1-disputes-dispute, the API's HTTP status and request_id, and the dispute inside untrusted_data. Evidence and buyer text arrive as the store's data, inside untrusted_data.

retrieve_event#

Returns one event by its id: its type, when it happened, and the object as it was then, with the fields that changed in previous_attributes. It only reads.

Input
  • eventstringRequired

    The event's id, evt_..., from list_events or a webhook delivery.

Call
{
  "name": "retrieve_event",
  "arguments": {
    "event": "evt_..."
  }
}

It answers like fluveo_api_read: the operation_id get-v1-events-id, the API's HTTP status and request_id, and the event inside untrusted_data.

retrieve_payment#

Returns one payment by its PaymentIntent id: its amount, the amount still held and the amount received, its currency, status, customer, payment method, latest charge and metadata. It only reads.

Input
  • payment_intentstringRequired

    The PaymentIntent's id, pi_..., from list_payments, search_payments or an event.

Call
{
  "name": "retrieve_payment",
  "arguments": {
    "payment_intent": "pi_..."
  }
}

It answers like fluveo_api_read: the operation_id get-v1-payment-intents-intent, the API's HTTP status and request_id, and the PaymentIntent inside untrusted_data.

retrieve_refund#

Returns one refund by its id: its amount, currency, status, reason and the payment it belongs to. It only reads.

Input
  • refundstringRequired

    The refund's id, re_..., from create_refund or list_refunds.

Call
{
  "name": "retrieve_refund",
  "arguments": {
    "refund": "re_..."
  }
}

It answers like fluveo_api_read: the operation_id get-v1-refunds-refund, the API's HTTP status and request_id, and the refund inside untrusted_data.

retrieve_webhook_endpoint#

Returns one webhook endpoint by its id: its URL, the event types it receives and whether it is enabled. It only reads.

Input
  • webhook_endpointstringRequired

    The endpoint's id, we_..., from list_webhook_endpoints.

Call
{
  "name": "retrieve_webhook_endpoint",
  "arguments": {
    "webhook_endpoint": "we_..."
  }
}

It answers like fluveo_api_read: the operation_id get-v1-webhook-endpoints-webhook-endpoint, the API's HTTP status and request_id, and the endpoint inside untrusted_data. Its signing secret is withheld. The Dashboard shows it.

search_fluveo_docs#

Finds the pages of these docs, guides and API reference both, that best answer a question.

Input
  • questionstringRequired

    What to find in the docs, such as refund a Pix payment. At most 1,000 characters.

  • limitintegerOptional

    How many pages to return, from 1 to 10. The default is 5.

Call
{
  "name": "search_fluveo_docs",
  "arguments": {
    "question": "refund a Pix payment"
  }
}

It answers the best pages in results, each with its title, url, section, description and the passage that matches best in content.

search_payments#

Finds the store's payments that match a query, newest first, at most 25 per call. A query joins clauses of field:'value' with AND, or with OR, never both. The fields are status, amount, currency, customer, created and metadata['key'], and amount and created also take >, >=, < and <=. It only reads.

Input
  • querystringRequired

    The search query, such as status:'succeeded' AND amount>5000 or metadata['order']:'1234'.

  • limitintegerOptional

    How many payments to return. Above 25 it is read as 25, and limit_capped says so.

  • pagestringOptional

    The next_page of the previous answer: the search goes on from there.

Call
{
  "name": "search_payments",
  "arguments": {
    "query": "status:'requires_capture' AND currency:'brl'",
    "limit": 10
  }
}

It answers like fluveo_api_read: the operation_id get-v1-payment-intents-search, the API's HTTP status and request_id, limit_capped, and the matching payments inside untrusted_data, with has_more and next_page for the next page.

update_customer#

Changes the fields given of one customer and keeps the rest. It writes. Its operation is allowed for an agent key, so it runs at once, with no approval.

Input
  • customerstringRequired

    The customer's id, cus_....

  • namestringOptional

    The customer's new full name or business name. An empty string clears it.

  • emailstringOptional

    The customer's new email address. An empty string clears it.

  • phonestringOptional

    The customer's new phone number, with the country code. An empty string clears it.

  • descriptionstringOptional

    A new note about the customer. An empty string clears it.

  • addressobjectOptional

    The fields of the address to change: any of line1, line2, city, state, postal_code and country, a two-letter code.

  • metadataobjectOptional

    Key-value pairs to set. A key with an empty string removes it. Never card data.

  • human_confirmationobjectOptional

    Leave it out on the first call. When an answer gives human_confirmation, send it back unchanged on the next call, with the same arguments. It holds one field, approval_token.

Call
{
  "name": "update_customer",
  "arguments": {
    "customer": "cus_...",
    "phone": "+15555550123"
  }
}

It answers like fluveo_api_write: the operation_id post-v1-customers-customer, the API's HTTP status and request_id, and the customer as it is now inside untrusted_data, with secrets withheld. When the API gives no usable answer, the tool error api_unavailable gives a human_confirmation: call update_customer again with the same arguments and that human_confirmation, and the same request is sent again.

Operations#

Every operation of the API, with the permission a restricted key needs to call it and the policy for an agent key. The API applies that policy to each call an agent key makes. An allowed operation runs at once. An operation that needs approval runs only after a person approves that one request in the Dashboard, and the approval expires after the time the table gives. A denied operation always answers 403. Through this server, fluveo_api_read runs the allowed GET operations. fluveo_api_write runs the allowed POST and DELETE operations, and those that need approval once a person approves the request. It refuses a denied operation before the request reaches the API. fluveo_api_search and fluveo_api_details list every operation, each with available set to false when this server does not run it. Approvals covers what a person sees and approves.

OperationEndpointPermissionAgent policy
Retrieves the calling store's own Account.GET /v1/accountrak_account_readAllowed
Retrieves the calling store's own Account by its own id. Any other id is refused with 403 account_invalid: an api_error for an id shaped as an account id (acct_ or mch_), else an invalid_request_error.GET /v1/accounts/{account}No restricted key may call it.Denied
Lists the calling store's own bank accounts by its own id. Numbers are masked to the last four digits; the id is the destination POST /v1/payouts takes. Any other id is refused as on GET /v1/accounts/{account}.GET /v1/accounts/{account}/external_accountsNo restricted key may call it.Denied
Retrieves a balance.GET /v1/balancerak_balance_readAllowed
Reads how much the store may pay out right now, or zero with the reason.GET /v1/balance/fluveo_payable_nowrak_balance_readAllowed
Reads the hold that stops a payout now, or null when nothing holds it.GET /v1/balance/fluveo_payout_holdrak_balance_readAllowed
Retrieves the store's balance settings: its payout schedule and the settlement delay.GET /v1/balance_settingsNo restricted key may call it.Denied
Updates the store's payout schedule: manual (a payout on request), or daily, weekly or monthly automatic payouts.POST /v1/balance_settingsNo restricted key may call it.Denied
Lists balance transaction objects, newest first.GET /v1/balance_transactionsrak_balance_readAllowed
Retrieves a balance transaction.GET /v1/balance_transactions/{id}rak_balance_readAllowed
Lists charge objects, newest first.GET /v1/chargesrak_charge_readAllowed
Searches charge objects with a query, newest first.GET /v1/charges/searchrak_charge_readAllowed
Retrieves a charge.GET /v1/charges/{charge}rak_charge_readAllowed
Updates a charge.POST /v1/charges/{charge}rak_charge_writeAllowed
Lists refund objects of the parent object.GET /v1/charges/{charge}/refundsrak_charge_readAllowed
Retrieves a refund.GET /v1/charges/{charge}/refunds/{refund}rak_charge_readAllowed
Lists the store's Checkout Sessions.GET /v1/checkout/sessionsrak_checkout_session_readAllowed
Creates a Checkout Session. Its PaymentIntent is made when the buyer pays; a setup session makes its SetupIntent at once.POST /v1/checkout/sessionsrak_checkout_session_writeAllowed
Retrieves a Checkout Session.GET /v1/checkout/sessions/{session}rak_checkout_session_readAllowed
Updates a Checkout Session's metadata, in any state; no other field can change.POST /v1/checkout/sessions/{session}rak_checkout_session_writeAllowed
Expires an open Checkout Session, so the buyer can no longer pay through it.POST /v1/checkout/sessions/{session}/expirerak_checkout_session_writeNeeds approval (configuration, expires in 24 hours)
Lists a Checkout Session's line items.GET /v1/checkout/sessions/{session}/line_itemsrak_checkout_session_readAllowed
Lists customer objects, newest first.GET /v1/customersrak_customer_readAllowed
Creates a customer.POST /v1/customersrak_customer_writeAllowed
Searches customer objects with a query, newest first.GET /v1/customers/searchrak_customer_readAllowed
Deletes a deleted customer.DELETE /v1/customers/{customer}rak_customer_writeNeeds approval (configuration, expires in 24 hours)
Retrieves a customer.GET /v1/customers/{customer}rak_customer_readAllowed
Updates a customer.POST /v1/customers/{customer}rak_customer_writeAllowed
Lists PaymentMethod objects of the parent object.GET /v1/customers/{customer}/payment_methodsrak_payment_method_readAllowed
Retrieves a PaymentMethod.GET /v1/customers/{customer}/payment_methods/{payment_method}rak_payment_method_readAllowed
Lists tax ID objects of the parent object.GET /v1/customers/{customer}/tax_idsrak_customer_readAllowed
Creates a tax ID.POST /v1/customers/{customer}/tax_idsrak_customer_writeAllowed
Deletes a deleted tax id.DELETE /v1/customers/{customer}/tax_ids/{id}rak_customer_writeNeeds approval (configuration, expires in 24 hours)
Retrieves a tax ID.GET /v1/customers/{customer}/tax_ids/{id}rak_customer_readAllowed
Lists dispute objects, newest first.GET /v1/disputesrak_dispute_readAllowed
Retrieves a dispute.GET /v1/disputes/{dispute}rak_dispute_readAllowed
Updates a dispute.POST /v1/disputes/{dispute}rak_dispute_writeNeeds approval (money movement, expires in 15 minutes)
Closes a dispute.POST /v1/disputes/{dispute}/closerak_dispute_writeNeeds approval (money movement, expires in 15 minutes)
Lists event objects, newest first.GET /v1/eventsrak_event_readAllowed
Retrieves a event.GET /v1/events/{id}rak_event_readAllowed
Lists the store's file links.GET /v1/file_linksrak_file_readAllowed
Creates a link to a file's contents.POST /v1/file_linksrak_file_writeAllowed
Retrieves a file link.GET /v1/file_links/{link}rak_file_readAllowed
Updates a file link's expiry or metadata.POST /v1/file_links/{link}rak_file_writeAllowed
Lists the store's files.GET /v1/filesrak_file_readAllowed
Retrieves a file's details.GET /v1/files/{file}rak_file_readAllowed
Downloads a file's contents with the API key: the file's url, for a purpose that allows downloading. It is served on the host the url names; when the url names a files host, the API host answers 404 not_found.GET /v1/files/{file}/contentsrak_file_readDenied
Lists PaymentIntent objects, newest first.GET /v1/payment_intentsrak_payment_intent_readAllowed
Creates a PaymentIntent.POST /v1/payment_intentsrak_payment_intent_writeDenied
Searches PaymentIntent objects with a query, newest first.GET /v1/payment_intents/searchrak_payment_intent_readAllowed
Retrieves a PaymentIntent.GET /v1/payment_intents/{intent}rak_payment_intent_readAllowed
Updates a PaymentIntent.POST /v1/payment_intents/{intent}rak_payment_intent_writeAllowed
Cancels a PaymentIntent.POST /v1/payment_intents/{intent}/cancelrak_payment_intent_writeNeeds approval (money movement, expires in 15 minutes)
Captures a PaymentIntent.POST /v1/payment_intents/{intent}/capturerak_payment_intent_writeNeeds approval (money movement, expires in 15 minutes)
Confirms a PaymentIntent.POST /v1/payment_intents/{intent}/confirmrak_payment_intent_writeDenied
Lists payment link objects, newest first.GET /v1/payment_linksrak_payment_links_readAllowed
Creates a payment link.POST /v1/payment_linksrak_payment_links_writeAllowed
Retrieves a payment link.GET /v1/payment_links/{payment_link}rak_payment_links_readAllowed
Updates a payment link.POST /v1/payment_links/{payment_link}rak_payment_links_writeAllowed
Lists line item objects of the parent object.GET /v1/payment_links/{payment_link}/line_itemsrak_payment_links_readAllowed
Lists the store's payment method configuration: the one its checkout uses.GET /v1/payment_method_configurationsrak_payment_method_configurations_readAllowed
Retrieves a payment method configuration.GET /v1/payment_method_configurations/{configuration}rak_payment_method_configurations_readAllowed
Updates a payment method configuration.POST /v1/payment_method_configurations/{configuration}rak_payment_method_configurations_writeNeeds approval (configuration, expires in 24 hours)
Lists payment method domain objects, newest first.GET /v1/payment_method_domainsrak_payment_method_domain_readAllowed
Creates a payment method domain.POST /v1/payment_method_domainsrak_payment_method_domain_writeNeeds approval (configuration, expires in 24 hours)
Retrieves a payment method domain.GET /v1/payment_method_domains/{payment_method_domain}rak_payment_method_domain_readAllowed
Turns a domain on or off for Apple Pay and Google Pay, and returns the domain.POST /v1/payment_method_domains/{payment_method_domain}rak_payment_method_domain_writeNeeds approval (configuration, expires in 24 hours)
Asks again whether Apple Pay and Google Pay may show on this domain, and returns the domain with each wallet's status.POST /v1/payment_method_domains/{payment_method_domain}/validaterak_payment_method_domain_writeNeeds approval (configuration, expires in 24 hours)
Lists PaymentMethod objects, newest first.GET /v1/payment_methodsrak_payment_method_readAllowed
Retrieves a PaymentMethod.GET /v1/payment_methods/{payment_method}rak_payment_method_readAllowed
Updates a PaymentMethod.POST /v1/payment_methods/{payment_method}rak_payment_method_writeAllowed
Attaches a PaymentMethod.POST /v1/payment_methods/{payment_method}/attachrak_payment_method_writeAllowed
Detaches a PaymentMethod.POST /v1/payment_methods/{payment_method}/detachrak_payment_method_writeNeeds approval (configuration, expires in 24 hours)
Lists payout objects, newest first.GET /v1/payoutsrak_payout_readAllowed
Creates a payout.POST /v1/payoutsrak_payout_writeDenied
Retrieves a payout.GET /v1/payouts/{payout}rak_payout_readAllowed
Updates a payout.POST /v1/payouts/{payout}rak_payout_writeNeeds approval (money movement, expires in 15 minutes)
Cancels a payout.POST /v1/payouts/{payout}/cancelrak_payout_writeNeeds approval (money movement, expires in 15 minutes)
Lists price objects, newest first.GET /v1/pricesrak_plan_readAllowed
Creates a price.POST /v1/pricesrak_plan_writeAllowed
Searches price objects with a query, newest first.GET /v1/prices/searchrak_plan_readAllowed
Retrieves a price.GET /v1/prices/{price}rak_plan_readAllowed
Updates a price.POST /v1/prices/{price}rak_plan_writeAllowed
Lists product objects, newest first.GET /v1/productsrak_product_readAllowed
Creates a product.POST /v1/productsrak_product_writeAllowed
Searches product objects with a query, newest first.GET /v1/products/searchrak_product_readAllowed
Deletes a product that has no prices.DELETE /v1/products/{id}rak_product_writeNeeds approval (configuration, expires in 24 hours)
Retrieves a product.GET /v1/products/{id}rak_product_readAllowed
Updates a product.POST /v1/products/{id}rak_product_writeAllowed
Lists the store's early fraud warnings, newest first.GET /v1/radar/early_fraud_warningsNo restricted key may call it.Denied
Retrieves one early fraud warning.GET /v1/radar/early_fraud_warnings/{early_fraud_warning}No restricted key may call it.Denied
Lists refund objects, newest first.GET /v1/refundsrak_charge_readAllowed
Creates a refund.POST /v1/refundsrak_charge_writeNeeds approval (money movement, expires in 15 minutes)
Retrieves a refund.GET /v1/refunds/{refund}rak_charge_readAllowed
Updates a refund.POST /v1/refunds/{refund}rak_charge_writeAllowed
Lists the amounts held back under the store's reserve plans, newest first. Filters: reserve_plan, is_releasable, currency, source_charge, reserve_release.GET /v1/reserve/holdsrak_reserve_readAllowed
Retrieves one reserve hold. Expand: reserve_plan, source_charge.GET /v1/reserve/holds/{id}rak_reserve_readAllowed
Lists the reserve plans on the store's account. Filter: status.GET /v1/reserve/plansrak_reserve_readAllowed
Retrieves one reserve plan of the store's account.GET /v1/reserve/plans/{id}rak_reserve_readAllowed
Lists the releases of the store's reserve holds, newest first. Filters: reserve_hold, reserve_plan, currency.GET /v1/reserve/releasesrak_reserve_readAllowed
Retrieves one reserve release. Expand: reserve_plan, reserve_hold.GET /v1/reserve/releases/{id}rak_reserve_readAllowed
Lists a SetupIntent's confirm attempts, newest first.GET /v1/setup_attemptsNo restricted key may call it.Denied
Lists the store's SetupIntents, newest first.GET /v1/setup_intentsrak_setup_intent_readAllowed
Creates a SetupIntent, and confirms it at once with confirm=true.POST /v1/setup_intentsrak_setup_intent_writeAllowed
Retrieves a SetupIntent. One that waits on the buyer's 3D Secure is read again from the card network first.GET /v1/setup_intents/{intent}rak_setup_intent_readAllowed
Updates a SetupIntent's customer, payment method, description, metadata or 3D Secure request.POST /v1/setup_intents/{intent}rak_setup_intent_writeAllowed
Cancels a SetupIntent that has not succeeded.POST /v1/setup_intents/{intent}/cancelrak_setup_intent_writeNeeds approval (configuration, expires in 24 hours)
Confirms a SetupIntent: the card is set up, or the buyer is sent to 3D Secure through next_action.POST /v1/setup_intents/{intent}/confirmrak_setup_intent_writeAllowed
Creates a token.POST /v1/tokensNo restricted key may call it.Denied
Retrieves a token.GET /v1/tokens/{token}No restricted key may call it.Denied
Lists the store's webhook endpoints.GET /v1/webhook_endpointsrak_webhook_readAllowed
Creates a webhook endpoint. The answer is the only one that carries the full signing secret.POST /v1/webhook_endpointsrak_webhook_writeNeeds approval (configuration, expires in 24 hours)
Deletes a webhook endpoint; no more events go to it.DELETE /v1/webhook_endpoints/{webhook_endpoint}rak_webhook_writeNeeds approval (configuration, expires in 24 hours)
Retrieves a webhook endpoint.GET /v1/webhook_endpoints/{webhook_endpoint}rak_webhook_readAllowed
Updates a webhook endpoint's url, event types, description, metadata or disabled flag.POST /v1/webhook_endpoints/{webhook_endpoint}rak_webhook_writeNeeds approval (configuration, expires in 24 hours)