Kifly — Agentic Commerce & Payments

ai.kifly由 kifly.ai 發布官方發布者v1.2.0更新於 Oct 24, 2026

Multi-seller shopping for AI agents. Settle via Stripe MPP or x402 USDC on Base. Hosted.

已驗證Streamable HTTP可網頁執行金融商業與電商

概覽

AI 產生的概覽

Kifly 是託管的 MCP 伺服器,讓助理在多賣家商品目錄中搜尋、建立購物車,並把 Stripe 結帳連結交給買家確認。

可以做什麼
  • 以多語言語意搜尋、篩選面向與賣家查詢來搜尋和瀏覽網路商品目錄
  • 建立與管理購物車:加入規格、調整數量、移除商品、設定並驗證收件地址,或以一次呼叫完成快速購買
  • 發起結帳並回傳由買家開啟確認的付款連結,之後輪詢訂單狀態
  • 註冊買家並以電子郵件 6 位數驗證碼驗證,讀取已儲存的資料與地址,列出歷史訂單
  • 查看賣家資料、配送範圍與已公布的退貨、配送和保固政策,以及平台購物車上限
  • 向 Kifly 團隊送出意見回饋或功能請求,並取得支援聯絡方式
適用情境
適合買家希望助理在多個 Kifly 賣家之間選購的情境:尋找商品、建立購物車、確認能否配送並了解政策,最後透過需人工確認的付款連結完成下單。也適合回購買家沿用已儲存的地址與查詢訂單狀態。
執行需求
需要連線到 kifly.ai 的遠端 streamable HTTP 端點並具備網路存取。須在 Authorization 標頭提供 bearer 權杖,即由 Kifly 賣家後台核發的代理 API 金鑰;每個賣家或每個跨賣家網路一把金鑰,決定目錄範圍。跨賣家列表需要網路權杖。部分工具在送出代理資料時不需金鑰。
安裝前請注意
Authorization 中的 bearer 金鑰是決定目錄範圍的即時憑證,須妥善保管。結帳只回傳需買家自行開啟確認的付款連結,買家確認後會實際扣款,送出前應先報出含運費的總額。購物車、地址、買家資料與意見回饋會寫入 Kifly 伺服器,並涉及買家電子郵件與驗證碼。結算方式依描述為 Stripe MPP 或 Base 上的 x402 USDC。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Kifly — Agentic Commerce & Payments,將其新增到工作區。
  2. 連接 Authorization token 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/ai.kifly%2Fmcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "kifly-agentic-commerce-payments": {
      "type": "http",
      "url": "https://kifly.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

工具

22

search_products

Search Catalog

Search or browse Kifly's product catalog across every seller on the network. Multilingual semantic search (100+ languages); omit `q` to browse recent listings. Pass `q` as an array (up to 5) to try several phrasings in ONE call instead of N searches. Too many hits? Ask once with `facets: true`, then narrow with `delivers_to`, price, `category` or `seller_handle`; page with `cursor` when `kifly:hasMore`. Returns a JSON-LD ItemList. **Rules that matter before you read the response:** - Cart every product the buyer wants: checkout hands them to pay with the cart ready. `kifly:purchasable: false` is still buyable, paid on the seller's own site. `availability` is STOCK; `kifly:purchasable` is WHERE they pay. - On `availability:OutOfStock`, still show it if asked, say it is sold out, and never cart it (`add_to_cart` returns 409). - When a product has several size/style variants, ask the buyer ONE option axis at a time (`kifly:productOptions` gives the axes in the seller's order). Never recite the combination matrix. - On an empty result, read `kifly:emptyReason`: say nothing matched rather than guessing, then offer `kifly:suggestions` (related, NOT matches). Items with `kifly:offNetwork` are outside retailers': relay `kifly:affiliateDisclosure`, cart as usual. **Full field reference: resource `kifly://docs/search-response`** (seller map, delivery coverage, variants, capped fields, every `kifly:` extension). Fetch it once for field-level detail.

輸入參數qmetalimitcursorfacetssort_bycategorydelivers_toin_stock_onlyseller_handlemax_price_centsmin_price_cents

create_cart

Create Cart

Create a new shopping cart on Kifly. **For network (cross-seller) tokens you MUST pass `seller_handle`** — each cart is bound to exactly one seller. Get the handle from search_products results (every item's `kifly:seller` IS the handle in network results) or get_seller. Seller-scoped tokens may omit the handle — their own seller is implicit. Returns a cart_id to use with add_to_cart and checkout. The response's `seller.kifly_purchasable` (and `seller.fulfillment`) tells you upfront where the buyer pays — `false`/`"external"` means the buyer pays on the seller's own site: build the cart as usual; checkout hands them there with a link per product. Never say the order is placed. The same flag rides every add_to_cart/get_cart response.

輸入參數metaseller_handleidempotency_key

add_to_cart

Add to Cart

Requires `cart:write`, or no key: send `meta.ucp-agent.profile`. Add a product variant to an existing cart. Use the variant_id from search_products results. Returns full cart state including item_ids you can use with update_cart_item. **Max quantity per item and max cart total are enforced — call `get_platform_limits` to check the current limits before building a large cart.** Exceeding the per-item limit returns 400 `QUANTITY_EXCEEDS_LIMIT`; exceeding the cart total returns 400 `CART_TOTAL_EXCEEDS_LIMIT` at checkout. `cart.kifly_purchasable` (and `cart.fulfillment`) carries the same signal as create_cart's `seller` field.

輸入參數metacart_id必填quantityvariant_id必填idempotency_key

get_cart

Get Cart

Inspect the current state of a cart — line items, quantities, prices, and shipping address. Each item includes an `item_id` you can pass to `update_cart_item` to change quantity or remove the item. Call this after `add_to_cart` to review the cart before checkout, or any time the buyer asks what's in the cart. `kifly_purchasable: false` (`fulfillment: "external"`) means checkout on this cart hands the buyer to the seller's own site to pay: say so, so the buyer knows where they will pay.

輸入參數metacart_id必填

update_cart_item

Update Cart Item

Requires `cart:write`, or no key: send `meta.ucp-agent.profile`. Change the quantity of a line item in an open cart, or remove it entirely. Set `quantity` to 0 to remove the item. Get the `item_id` from `get_cart` or the `cart` field in the `add_to_cart` response. Returns the updated cart state. **The per-item quantity ceiling applies here too — call `get_platform_limits` to check the current limit.** Exceeding it returns 400 `QUANTITY_EXCEEDS_LIMIT`.

輸入參數metacart_id必填item_id必填quantity必填idempotency_key

set_shipping_address

Set Shipping Address

Requires `cart:write`, or no key: send `meta.ucp-agent.profile`. Persist a shipping address on the cart and confirm the seller can deliver to it. **Call BEFORE `checkout`.** Returns `delivery_eligible`. When true it also returns `cart_total_with_delivery_cents` — quote that full price before sending the buyer to pay, unless `shipping_priced_at` is `merchant_checkout`: then fee and total are null because the seller's own checkout prices shipping; say so, never call shipping free. When false, no address is saved and `delivery_coverage` says where the seller does cover, so you can retry with a covered address. Coverage semantics: `kifly://docs/delivery`.

輸入參數metacart_id必填idempotency_keyshipping_address必填

quick_buy

Quick Buy

Requires `cart:write` scope. Create a cart, add items, and set the shipping address in ONE call — the fast path when you already know the seller, the exact variant(s), and the buyer's address (e.g. a reorder, or a buyer who has decided). Prefer this over the create_cart → add_to_cart → set_shipping_address sequence to save round trips; those granular tools stay available for exploratory, multi-step carts. **You must call `search_products` first** so Kifly knows each variant's seller (quick_buy returns 422 `VARIANT_SNAPSHOT_MISSING` otherwise). One cart = one seller: every item must belong to the same seller (409 `CART_SELLER_MISMATCH` otherwise) — for a network token, pass that seller's `seller_handle`. Returns `{ cart_id, items_added, seller, delivery }`. `delivery` is exactly what `set_shipping_address` returns — **quote `cart_total_with_delivery_cents` before sending the buyer to pay**; on `delivery_eligible: false` no address is saved, so you can call again with a covered address. Field detail and the three coverage cases: `kifly://docs/delivery`. **quick_buy never charges — it stops at the cart. The buyer still pays via `checkout`**, which returns the payment link they open themselves. On a 5xx/'temporarily unavailable' error, retry once with the same arguments.

輸入參數metaitems必填seller_handleidempotency_keyshipping_address必填external_customer_ref

checkout

Checkout

Requires `checkout:write` or `checkout:link`, or no key: send `meta.ucp-agent.profile` for the same payment link. **Checkout is always human-in-the-loop: it returns a link the buyer opens and confirms — it never charges a card or completes an order on its own.** **Call `set_shipping_address` first unless `fulfillment` is `"external"` (the seller's site collects the address).** Cart total must not exceed the platform cap (`kifly://platform/limits`). **To pre-fill the buyer's email on the payment page, pass `email` — ask the buyer for it in plain language ('what email should the receipt go to?'). Never ask the buyer to paste a token.** Read `payment_rail` on the response BEFORE telling the buyer anything: `'stripe-checkout'` is paid through Kifly, `'directory-handoff'` hands the buyer to the seller's own site to pay, with a tracked link per product and no Kifly payment link, and `'shopify-native'` sends the buyer to the seller's own checkout. **Full response field reference, including every refusal code: read the `kifly://docs/checkout-response` resource.**

輸入參數emailcart_id必填buyer_tokenidempotency_key

register_buyer

Register Buyer

Start registering a buyer so they can be recognized across future purchases without re-entering their details. Takes the buyer's email and name and always emails a 6-digit verification code — the response is `{ verification_required: true, buyer_profile_id }` whether the email is brand new or already has an account (so this call alone never reveals which). Ask the buyer to read you the code from their inbox, then call `verify_buyer` with the same email + code to get a `buyer_token` (`kfb_live_...`). **Store that token and pass it to `checkout` on every future order** — it pre-fills the buyer's email on the secure Stripe payment link. Safe to call for a buyer you believe is new; if they already have an account, verify_buyer still recovers it.

輸入參數name必填email必填

request_buyer_code

Request Buyer Verification Code

Send a 6-digit verification code to a **returning** buyer's email so they can prove the account is theirs and recover their saved name + shipping address on this connection — without pasting any token or re-entering their name. Call this when the buyer says they've shopped with Kifly before and gives you their email; then ask them to read you the code from their inbox and call `verify_buyer`. Always returns `{ sent: true }`, whether or not the email has a Kifly account. If the buyer never receives a code, they likely don't have an account yet: call `register_buyer` instead, which creates one and emails a code either way. Requires the `buyer:write` capability (marketplace/network keys).

輸入參數email必填

verify_buyer

Verify Buyer

Verify the 6-digit code a returning buyer received by email (from `request_buyer_code`). On success returns `{ buyer_token, buyer_profile_id }` — pass the `buyer_token` to `get_buyer_profile` to auto-fill their saved name + shipping address, and to `checkout` to pre-fill their email on the payment link. Fails with `invalid_otp` if the code is wrong or expired (ask them to re-check, or call `request_buyer_code` again). Requires the `buyer:write` capability.

輸入參數code必填email必填

get_buyer_profile

Get Buyer Profile

Retrieve a repeat buyer's saved name, email, and default shipping address, given their `buyer_token`. Use them to auto-fill `set_shipping_address`, and pass the token to `checkout` so Stripe pre-fills their email. `default_shipping_address` may be null — then collect it normally and call `save_buyer_address` so it is pre-filled next time. **Ask in plain language ('are you a returning Kifly shopper? what email is on your account?') — never ask a buyer to paste a token.** **How to get the token: read `kifly://docs/buyer-identity`** — the email-code sequence, the one-click sign-in alternative, and what to do for a new buyer.

輸入參數buyer_token必填

list_orders

List Orders

List a returning buyer's recent orders and their current fulfillment status — use this in a NEW session to answer 'did my order ship?' / 'where's my package?' when you don't have the original `session_id` from `checkout`. Requires the buyer's `buyer_token` (recover it via `request_buyer_code` + `verify_buyer` if you don't have one). Returns `{ orders, count }`, newest first; each order has `status` (`paid` | `shipped` | `delivered`), `items`, `amount_cents`, `placed_at`, and — once shipped — `tracking_number`, `carrier`, and a public `tracking_url`. **Pass `since` (an ISO-8601 timestamp from a previous check) to get only orders that changed since then** — surface those proactively ('your last order just shipped'). `order_id` identifies the order; `session_id` cross-references `order_status` for a single live checkout.

輸入參數limitsincebuyer_token必填

save_buyer_address

Save Buyer Address

Save a shipping address to the buyer's Kifly profile so it auto-fills on future purchases. **Call this after a successful checkout if `get_buyer_profile` returned `default_shipping_address: null`.** The address is persisted server-side against the buyer token — the buyer never needs to re-enter it. Use the same address that was passed to `set_shipping_address` for this order.

輸入參數address必填buyer_token必填

submit_feedback

Submit Feedback

Send structured feedback to the Kifly team. **No API key required** — send `meta.ucp-agent.profile` and this works with no credential at all. **Call after a confusing response, a dead-end, or a successful workaround you had to invent** — it's how we improve the agent surface, and a report from the moment you were stuck is worth more to us than a working purchase. Fire-and-forget: returns 202 immediately, no blocking, safe to skip if it would add latency to a user-facing flow. `category` and `severity` are required enums (don't free-form them). Include `context` with what you were doing (tool called, query used, response shape, what you expected). Add `suggested_fix` only if you have a concrete idea. Rate-limited.

輸入參數metacontactcontextmessage必填category必填severity必填agent_namesuggested_fix

request_feature

Request Feature

Submit the buyer's **product/feature request** to the Kifly team. Use this when the buyer wishes Kifly *itself* did something it doesn't — a missing capability, a rough flow, an idea to improve the platform. **This is NOT `submit_feedback`** (that's for reporting a broken/confusing API response you hit). Requires the buyer's `kfb_live_` token — only registered buyers can file requests. Help the buyer articulate a real problem: ask OPEN, non-leading questions ('what were you trying to do? what got in the way? how do you handle it today?') — never 'would feature X help?'. Pre-fill the fields from the conversation and ask only for the gaps; keep it short. Separate the `problem` (the pain) from any `proposed_solution` (the fix). Name and email are taken from the buyer profile automatically — do not ask for them. Returns 202: it's logged for review. **Do NOT promise the user anything will be built** — just confirm it was recorded.

輸入參數impact必填contextproblem必填category必填severity必填buyer_token必填contact_phoneproposed_solutioncurrent_workaround

get_seller

Get Seller

**Call first when the user names a store or its website**: it says whether Kifly carries it before you open a browser. Returns the seller's public profile: location, storefront URL, delivery fee and coverage, catalog size, `verified_domains` (domains it proved it controls; trust signal, not identity), and `fulfillment` (buy here, or hand off to the seller's site). **Call before `create_cart` or `set_shipping_address` to check it ships to the buyer.** `cities` is never capped here. **`coverage_configured: false` = ships NOWHERE; an empty `states` is NOT nationwide. `merchant_managed: true` = shipping is set at the seller's own checkout; never report it as not shipping.** Details: `kifly://docs/delivery`. Name the seller by ONE of `handle`, `domain` (any URL works) or `name`. A miss is `SELLER_NOT_FOUND` with `details.did_you_mean`: ask the user, never pick. `SELLER_AMBIGUOUS` = several share that name; ask which. Seller-scoped tokens may omit all three.

輸入參數metanamedomainhandle

get_policies

Get Store Policies

The seller's published returns, shipping and warranty policy, in their own words. **Call before telling a buyer what happens after purchase** — if it is not here, say so; never infer a typical policy. `available: false` is the normal case for most sellers and is not an error. `get_seller`'s `policies.available` tells you whether this call is worth making. Network tokens pass `handle`; seller-scoped tokens may omit it.

輸入參數metahandle

list_sellers

List Sellers

List all active sellers on the Kifly network. **Requires a network token (kfn_live_…).** Returns each seller's handle, name, city, region, delivery coverage (`nationwide:true` or a `states` list), delivery fee, and catalog size. `delivery_coverage.cities` may be capped to a handful of entries — compare `cities.length` against `city_count`; if fewer, call `get_seller` for that seller's full city list. Use this to discover which sellers are available and which ship to a buyer's location before calling `get_seller` or `search_products`. **Pagination:** when `kifly:hasMore` is true, pass `kifly:nextCursor` as `cursor` to fetch the next page. Default page size is 20, max 50.

輸入參數metalimitcursor

get_platform_limits

Get Platform Limits

Returns the current platform-enforced cart limits: `max_item_quantity` (per-line-item ceiling), `max_cart_total_cents`, and `max_cart_total_usd`. Call this once at session start before building a large cart so you can quote limits to the buyer proactively rather than discovering them via errors. Always read them at runtime rather than hardcoding.

輸入參數meta

order_status

Order Status

No key needed for your own session: send the profile you checked out with. Check the status of a Stripe checkout session. Poll every 5 seconds after checkout until status is 'paid', 'shipped', or 'failed'. Returns order details (order_id, amount, items) when paid. When the seller marks the order as shipped, status becomes 'shipped' and tracking_number, carrier, and shipped_at are included — share these with the buyer.

輸入參數session_id必填

get_help

Get Help

Get unstuck. Returns Kifly's website and support email for the BUYER, plus how to report the problem to Kifly's engineers yourself. Call this if you are stuck, hit an unresolvable error, or the buyer asks how to reach a human. Share the website and email with the buyer; use `submit_feedback` (no API key needed) to tell us what blocked you — that is the fastest way to get it fixed.

輸入參數meta

版本歷史

1
  1. v1.2.0最新Sep 16, 2026

評分

已滿足適用檢查項的 83%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分

    請宣告包含 README 的 GitHub 儲存庫,或在 OAuth 受保護資源後設資料中提供 resource_documentation。

  • 授權條款不適用

    託管服務按其提供方的條款使用,因此這裡不要求授權條款。此檢查項不計入百分比。