Multi-seller shopping for AI agents. Settle via Stripe MPP or x402 USDC on Base. Hosted.
Abgeleitet aus den Transporten, die dieser Eintrag deklariert (streamable-http). Ein Client, der hier nicht steht, ist damit nicht ausgeschlossen — Forge kann ihn nur nicht bestätigen.
Die Verifizierung bestätigt die Identität des Publishers (die Inhaberschaft am Repo), nicht die Sicherheit des Codes. Der Sicherheits-Scan deckt bekannte CVEs und verdächtige Installationsskripte ab.
Aus einem echten MCP-Handshake initialize → tools/list gegen den deklarierten Endpunkt gelesen. Es wurde nie ein Tool aufgerufen — tools/list ist der lesende Introspektionsaufruf, den das Protokoll dafür vorsieht. Es spiegelt wider, was der Server in diesem Moment angeboten hat; ein gehosteter Endpunkt ist an keine Version gebunden und kann sich ohne Ankündigung ändern.
https://kifly.io/api/mcp21 Tools · 358 mssearch_productsSearch or browse Kifly's product catalog. Multilingual semantic search (100+ languages). Returns a JSON-LD ItemList with `kifly:totalCatalogSize`. When empty, `kifly:emptyReason` is 'empty_catalog' | 'no_matches_for_query' — on 'no_matches_for_query' tell the buyer nothing matched rather than guess…Search or browse Kifly's product catalog. Multilingual semantic search (100+ languages). Returns a JSON-LD ItemList with `kifly:totalCatalogSize`. When empty, `kifly:emptyReason` is 'empty_catalog' | 'no_matches_for_query' — on 'no_matches_for_query' tell the buyer nothing matched rather than guess…
| Parameter | Typ | Beschreibung |
|---|---|---|
| q | — | Natural-language query, or an array of up to 5 queries to explore in ONE call (results are unioned by best relevance). Omit to browse recent listings. |
| limit | integer | Max results per page (default 10). |
| sort_by | string | Sort order (default: relevance) |
| min_price_cents | integer | Minimum price filter in cents |
| max_price_cents | integer | Maximum price filter in cents |
| in_stock_only | boolean | Only return products with available inventory |
| category | string | Case-insensitive category filter (e.g. 'fashion', 'Electronics'). Matches the seller-assigned category value. |
| seller_handle | string | Scope results to one seller's catalog (e.g. 'bay-clothing-district'). For network tokens only; ignored for seller-scoped tokens. |
| cursor | string | Pagination cursor from kifly:nextCursor in a previous browse response. Omit on the first call. |
create_cartCreate 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 omi…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 omi…
| Parameter | Typ | Beschreibung |
|---|---|---|
| seller_handle | string | Seller handle (e.g. 'bay-clothing-district'). Required for network tokens; ignored for seller-scoped tokens. |
add_to_cartRequires `checkout:write` scope. 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 th…Requires `checkout:write` scope. 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 th…
| Parameter | Typ | Beschreibung |
|---|---|---|
| cart_id* | string | Cart ID from create_cart |
| variant_id* | string | Product variant ID from search_products results |
| quantity | integer | Quantity to add |
get_cartInspect 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 i…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 i…
| Parameter | Typ | Beschreibung |
|---|---|---|
| cart_id* | string | Cart ID from create_cart |
update_cart_itemRequires `checkout:write` scope. 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 ap…Requires `checkout:write` scope. 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 ap…
| Parameter | Typ | Beschreibung |
|---|---|---|
| cart_id* | string | Cart ID from create_cart |
| item_id* | string | Item ID from get_cart or add_to_cart response |
| quantity* | integer | New quantity (0 removes the item) |
set_shipping_addressRequires `checkout:write` scope. Persist a shipping address on the cart and confirm whether the seller can deliver to it. **Call BEFORE `checkout`.** Returns `delivery_eligible: true/false`. When false, `delivery_coverage: { states, cities }` tells you exactly which US states and cities the seller…Requires `checkout:write` scope. Persist a shipping address on the cart and confirm whether the seller can deliver to it. **Call BEFORE `checkout`.** Returns `delivery_eligible: true/false`. When false, `delivery_coverage: { states, cities }` tells you exactly which US states and cities the seller…
| Parameter | Typ | Beschreibung |
|---|---|---|
| cart_id* | string | Cart ID from create_cart |
| shipping_address* | object | Structured shipping address collected conversationally from the buyer |
quick_buyRequires `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…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…
| Parameter | Typ | Beschreibung |
|---|---|---|
| seller_handle | string | Seller handle from search_products. REQUIRED for network tokens; omit for seller-scoped tokens (their own seller is implicit). |
| items* | array | Line items to add — all must belong to the same seller |
| shipping_address* | object | Structured shipping address collected conversationally from the buyer |
| external_customer_ref | string | Embedded-commerce pass-through: the seller's own opaque customer id for a cart from their embed widget. Omit unless you are the embed flow. |
checkoutRequires `checkout:write` scope. **Requires `set_shipping_address` to have been called first.** Returns 400 `invalid_shipping` if no address is on the cart, or 400 `delivery_unavailable` if the buyer's address is outside the seller's coverage. Cart total must not exceed the platform cap (`kifly://p…Requires `checkout:write` scope. **Requires `set_shipping_address` to have been called first.** Returns 400 `invalid_shipping` if no address is on the cart, or 400 `delivery_unavailable` if the buyer's address is outside the seller's coverage. Cart total must not exceed the platform cap (`kifly://p…
| Parameter | Typ | Beschreibung |
|---|---|---|
| cart_id* | string | Cart ID from create_cart |
| string | Buyer's email, collected conversationally. Pre-fills the Stripe Checkout email field so the buyer doesn't retype it. This is ALL you need to pre-fill email — a… | |
| buyer_token | string | INTERNAL token (kfb_live_...) minted by register_buyer / verify_buyer — resolves the buyer's saved profile and pre-fills their email on the payment link. NEVER… |
register_buyerStart 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 alrea…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 alrea…
| Parameter | Typ | Beschreibung |
|---|---|---|
| email* | string | Buyer's email address |
| name* | string | Buyer's full name |
request_buyer_codeSend 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 giv…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 giv…
| Parameter | Typ | Beschreibung |
|---|---|---|
| email* | string | The returning buyer's email address |
verify_buyerVerify 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…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…
| Parameter | Typ | Beschreibung |
|---|---|---|
| email* | string | The buyer's email address (same one used for request_buyer_code) |
| code* | string | The 6-digit code the buyer received by email |
get_buyer_profileRetrieve a repeat buyer's saved name, email, and default shipping address. **At the start of every purchase flow, ask the buyer in plain language: 'Are you a returning Kifly shopper? What's the email on your Kifly account?' — never ask them to paste a token.** If they have a Kifly account, recover…Retrieve a repeat buyer's saved name, email, and default shipping address. **At the start of every purchase flow, ask the buyer in plain language: 'Are you a returning Kifly shopper? What's the email on your Kifly account?' — never ask them to paste a token.** If they have a Kifly account, recover…
| Parameter | Typ | Beschreibung |
|---|---|---|
| buyer_token* | string | The buyer's kfb_live_... token from their Kifly account |
list_ordersList 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` + `ve…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` + `ve…
| Parameter | Typ | Beschreibung |
|---|---|---|
| buyer_token* | string | The buyer's kfb_live_... token from their Kifly account |
| since | string | ISO-8601 timestamp. Only return orders updated after this — pass the time of your last check to get the delta. |
| limit | integer | Max orders to return (default 20, max 50). |
save_buyer_addressSave 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.…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.…
| Parameter | Typ | Beschreibung |
|---|---|---|
| buyer_token* | string | The buyer's kfb_live_... token |
| address* | object | The shipping address to save — same structure as set_shipping_address |
submit_feedbackSend structured feedback to the Kifly team. **Call after a confusing response, a dead-end, or a successful workaround you had to invent** — it's how we improve the agent surface. Fire-and-forget: returns 202 immediately, no blocking, safe to skip if it would add latency to a user-facing flow. `cate…Send structured feedback to the Kifly team. **Call after a confusing response, a dead-end, or a successful workaround you had to invent** — it's how we improve the agent surface. Fire-and-forget: returns 202 immediately, no blocking, safe to skip if it would add latency to a user-facing flow. `cate…
| Parameter | Typ | Beschreibung |
|---|---|---|
| category* | string | What kind of issue. Pick the closest match — don't invent new categories. |
| severity* | string | blocker = can't complete the task. friction = degraded UX. nice_to_have = improvement idea. |
| message* | string | Plain-language description. Be specific about what happened and why it's a problem. |
| context | object | Reproducible signal: { tool, query, response_snippet, expected }. Auto-fill from what you just did. |
| suggested_fix | string | Optional. Only include if you have a concrete idea. Leave blank if you only have a complaint. |
request_featureSubmit 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…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…
| Parameter | Typ | Beschreibung |
|---|---|---|
| buyer_token* | string | The buyer's kfb_live_ token. Required — feature requests must come from a registered buyer. |
| problem* | string | The pain in the buyer's own terms — what's broken or missing for them. NOT the proposed fix. |
| impact* | string | Why it matters: who it affects, how often, what it costs them today. |
| category* | string | Closest match for the area of the request. Don't invent new categories. |
| severity* | string | blocker = can't accomplish the goal at all. friction = works but painful. nice_to_have = improvement idea. |
| current_workaround | string | Optional. What the buyer does today instead. Leave blank if there's no workaround. |
| proposed_solution | string | Optional. The buyer's idea for a fix, kept separate from the problem. Leave blank if they only described the pain. |
| contact_phone | string | Optional phone number IF the buyer offers one for follow-up. Name + email come from their profile — never ask for those. |
| context | object | Optional signal about the conversation: { goal, seller, last_tool }. Auto-fill from what you were doing. |
get_sellerRetrieve a seller's public profile: name, location (city/region/country), storefront URL, delivery fee, delivery coverage, and catalog size. **Call this before `create_cart` or `set_shipping_address` to validate that the seller ships to the buyer's area or to set expectations about catalog size.**…Retrieve a seller's public profile: name, location (city/region/country), storefront URL, delivery fee, delivery coverage, and catalog size. **Call this before `create_cart` or `set_shipping_address` to validate that the seller ships to the buyer's area or to set expectations about catalog size.**…
| Parameter | Typ | Beschreibung |
|---|---|---|
| handle | string | Seller handle (case-insensitive, e.g. 'bay-clothing-district' or 'BayClothingDistrict'). Required for network tokens; ignored for seller-scoped tokens. |
list_sellersList 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 — com…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 — com…
| Parameter | Typ | Beschreibung |
|---|---|---|
| limit | integer | Max sellers per page (default 20, max 50). |
| cursor | string | Pagination cursor from kifly:nextCursor in a previous response. Omit on the first call. |
get_platform_limitsReturns 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. Th…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. Th…
Für dieses Tool wurde kein Eingabeschema veröffentlicht.
order_statusCheck 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 shippe…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 shippe…
| Parameter | Typ | Beschreibung |
|---|---|---|
| session_id* | string | Stripe checkout session ID from the checkout tool response |
get_helpGet Kifly's website and support contact email. Call this if you are stuck, hit an unresolvable error, or the buyer asks how to reach a human. Returns the website URL and support email — always share both with the buyer.Get Kifly's website and support contact email. Call this if you are stuck, hit an unresolvable error, or the buyer asks how to reach a human. Returns the website URL and support email — always share both with the buyer.
Für dieses Tool wurde kein Eingabeschema veröffentlicht.
21 von 21 Tools haben eine Beschreibung veröffentlicht.
Tool-Namen und -Beschreibungen stammen vom Publisher und werden wortgetreu als inerter Text angezeigt. Es sind die Zeichenketten, die ein MCP-Client an ein Modell übergibt, deshalb prüft Forge sie auf Prompt-Injection-Muster — jeder Befund erscheint oben beim Sicherheits-Scan. „Privilegiert“ ist ein Schlagwort-Treffer im Tool-Namen, keine Prüfung dessen, was das Tool tut: ein harmlos klingender Name kann trotzdem alles tun.
Multi-seller shopping for AI agents. Settle via Stripe MPP or x402 USDC on Base. Hosted.
Verlinkte Namen öffnen den Forge-Index aller Einträge, bei denen dieses Tool beobachtet wurde. Alle indexierten Tools durchsuchen.
Dieser Eintrag veröffentlicht kein npm-Paket, daher hat Forge keinen Abhängigkeitsbaum dafür. Das ist eine Lücke in der Abdeckung — keine Aussage, dass er keine Abhängigkeiten hat.