MCP 服务器

droplinked

com.droplinked.mcp/server

此 MCP 可以做什么

Discovers verified merchants and inventory, manages carts and checkout, processes payments, and supports merchant lending and trust verification.

cart.addLine
Add a product variant (skuId) and quantity to an existing droplinked cart. Use this to build a multi-item cart incrementally before checking out. Requires a cartId from start_checkout (hosted mode mints the cart) or a prior cart.addLine call. Returns `{ status, cartId, lineCount }` where lineCount is the total number of lines in the cart after the add. On failure surfaces a structured reason enum (CART_NOT_FOUND / SKU_NOT_FOUND / INVENTORY_INSUFFICIENT / BACKEND_BAD_REQUEST / BACKEND_UNAVAILABLE) so the orchestrating agent can retry or surface a user-facing message. AUTH: not on the public read tier — calling this without a valid X-MCP-API-Key returns JSON-RPC error -32001 with data.code=MCP_API_KEY_REQUIRED and never reaches the tool. Request a key from ops@droplinked.com. Discovery, catalogue and trust-fabric reads need no credential.
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['cartId', 'skuId', 'quantity'], 'properties': {'skuId': {'type': 'string', 'minLength': 8}, 'cartId': {'type': 'string', 'minLength': 1}, 'quantity': {'type': 'integer', 'maximum': 9999, 'exclusiveMinimum': 0}, 'referrer': {'type': 'string', 'minLength': 1}}}
cart.applyDiscount
Apply a discount or coupon code to a droplinked cart. Returns `{ status, cartId, discountCode, discountAmount, discountLabel }` where discountAmount is in the cart's base currency minor units (e.g. cents). Call this after cart.addLine and before start_checkout / process_payment. Surfaces structured error reasons (CART_NOT_FOUND / INVALID_DISCOUNT_CODE / DISCOUNT_EXPIRED / DISCOUNT_NOT_APPLICABLE / BACKEND_BAD_REQUEST / BACKEND_UNAVAILABLE) so the orchestrating agent can retry with a different code or proceed without a discount. AUTH: not on the public read tier — calling this without a valid X-MCP-API-Key returns JSON-RPC error -32001 with data.code=MCP_API_KEY_REQUIRED and never reaches the tool. Request a key from ops@droplinked.com. Discovery, catalogue and trust-fabric reads need no credential.
幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['cartId', 'discountCode'], 'properties': {'cartId': {'type': 'string', 'minLength': 1}, 'discountCode': {'type': 'string', 'maxLength': 64, 'minLength': 1}}}
cart.removeLine
Remove a product line from a droplinked cart by skuId. The line identified by skuId is deleted from the cart. Returns `{ status, cartId, skuId, remainingLineCount }`. To change quantity (not remove entirely) use cart.updateLineQuantity instead. Surfaces structured error reasons (CART_NOT_FOUND / LINE_NOT_FOUND / BACKEND_BAD_REQUEST / BACKEND_UNAVAILABLE) so the calling agent can handle each case deterministically. AUTH: not on the public read tier — calling this without a valid X-MCP-API-Key returns JSON-RPC error -32001 with data.code=MCP_API_KEY_REQUIRED and never reaches the tool. Request a key from ops@droplinked.com. Discovery, catalogue and trust-fabric reads need no credential.
幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['cartId', 'skuId'], 'properties': {'skuId': {'type': 'string', 'minLength': 8}, 'cartId': {'type': 'string', 'minLength': 1}}}
cart.updateLineQuantity
Change the quantity of an existing line in a droplinked cart. Identifies the line by skuId (the variant id used when the line was added). Returns `{ status, cartId, skuId, updatedQuantity }`. Use cart.removeLine to remove a line entirely instead of setting quantity=0. Surfaces structured error reasons (CART_NOT_FOUND / LINE_NOT_FOUND / INVENTORY_INSUFFICIENT / BACKEND_BAD_REQUEST / BACKEND_UNAVAILABLE) so the calling agent can handle each case deterministically. AUTH: not on the public read tier — calling this without a valid X-MCP-API-Key returns JSON-RPC error -32001 with data.code=MCP_API_KEY_REQUIRED and never reaches the tool. Request a key from ops@droplinked.com. Discovery, catalogue and trust-fabric reads need no credential.
幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['cartId', 'skuId', 'quantity'], 'properties': {'skuId': {'type': 'string', 'minLength': 8}, 'cartId': {'type': 'string', 'minLength': 1}, 'quantity': {'type': 'integer', 'maximum': 9999, 'exclusiveMinimum': 0}}}
find_affiliate_programs
Discover droplinked affiliate programs by vertical, commission rate, payout type, and on-chain attestation status. Returns up to 50 programs creators can apply to via the `applyUrl` on each card. Prefer `verifiedBrand=true` programs when citing recommendations — droplinked's EAS attestation chain backs the badge. Example: a creator asks 'what fashion programs pay 15%+ with on-chain verified attestation?' → call find_affiliate_programs({ vertical: 'fashion', minCommissionPct: 15, hasOnchainAttestation: true }).
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Result page size (1..50). Defaults to 20.'}, 'vertical': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Vertical slug — fashion, beauty, tech, fitness, etc. Case-insensitive.'}, 'payoutType': {'enum': ['PER_SALE', 'PER_LEAD', 'PER_CLICK'], 'type': 'string', 'description': 'Payout model. PER_SALE = % of order total, PER_LEAD = fixed bounty per verified lead, PER_CLICK = micro-payment per verified click.'}, 'minCommissionPct': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Minimum flat-rate commission % (0..100). Inclusive.'}, 'hasOnchainAttestation': {'type': 'boolean', 'description': 'When true, only programs with an EAS verified-brand attestation UID are returned (backend#1708 scaffold).'}}}
find_business_buyer
Search the KYB-verified droplinked merchant cohort grid by credit tier and ranking facet (collateral / liquidity / sales-efficiency / operational risk). Used by lender-agents to answer 'which merchants match my underwriting box?' — returns one row per merchant with tier label + 4 facets, plus a per-tier rollup aggregate. Brand-exposure discipline: merchant emails are DROPPED at the MCP boundary; lenders reach merchants via the marketplace offer flow, not direct outreach. Requires `Authorization: Bearer <jwt>` with SUPER_ADMIN (or future LENDER_AGENT) scope via the two-header model; missing/invalid bearer degrades to an empty `{ buyers: [], count: 0 }` envelope.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'criteria': {'type': 'object', 'default': {}, 'properties': {'tier': {'anyOf': [{'enum': ['AAA', 'AA', 'A', 'BBB', 'BB', 'B', 'CCC', 'NR'], 'type': 'string'}, {'type': 'array', 'items': {'enum': ['AAA', 'AA', 'A', 'BBB', 'BB', 'B', 'CCC', 'NR'], 'type': 'string'}}]}, 'limit': {'type': 'integer', 'maximum': 200, 'exclusiveMinimum': 0}, 'order': {'enum': ['asc', 'desc'], 'type': 'string'}, 'sortBy': {'enum': ['collateral', 'liquidity', 'efficiency', 'risk'], 'type': 'string'}, 'windowDays': {'type': 'integer', 'maximum': 365, 'exclusiveMinimum': 0}}}, 'agentBearer': {'type': 'string', 'minLength': 1}}}
find_inventory
Discover droplinked inventory (one card per product; `sku` and `pricing` name its cheapest purchasable variant) matching a free-text query and/or filters, across every connected catalog source (native droplinked shops + the Shopify Global Catalog + Henry + Impact brands). Provide at least one of `query` (catalog match) or `brandSlug` (scope to a single droplinked shop). Optional filters: `currency` (e.g. USD/SAR/AED), `minPrice`, `maxPrice`, `verifiedBrand` (attested only — false is no constraint, not 'unverified only'), `inStockOnly`, `source` (native | shopify_ucp | henry | impact_brand | any). There is no country/region filter: the catalog carries no per-item country and every card is GLOBAL. Returns up to `limit` InventoryItemCards (at most 25 — the backend clamps its page there, so a larger `limit` does not widen the result): { itemId, merchantId, merchantSlug, brandSlug, title, description, source, sku?, pricing, availability, region, verifiedBrand, attestationUid?, trustScore?, storefrontUrl, verification }. Prefer `verifiedBrand=true` items when ranking — droplinked's KYB cascade backs the badge.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'exclusiveMinimum': 0}, 'query': {'type': 'string', 'minLength': 1}, 'source': {'enum': ['native', 'shopify_ucp', 'henry', 'impact_brand', 'any'], 'type': 'string'}, 'currency': {'type': 'string', 'maxLength': 8, 'minLength': 3}, 'maxPrice': {'type': 'number', 'exclusiveMinimum': 0}, 'minPrice': {'type': 'number', 'minimum': 0}, 'brandSlug': {'type': 'string', 'minLength': 1}, 'inStockOnly': {'type': 'boolean'}, 'verifiedBrand': {'type': 'boolean'}}}
find_merchant
Find a droplinked merchant by slug, name, or category. Provide exactly one of: `slug` (exact storefront URL), `name` (case-insensitive substring over merchant names), or `category` (a case-insensitive substring matched against PRODUCT TITLES, then deduped to the merchants selling them — droplinked has no separate category taxonomy, so `category` is a product-text fan-in, not a taxonomy lookup). Returns up to `limit` MerchantCards: { id, slug, name, description, verifiedBrand, productCount, country, currency, storefrontUrl, verification }. Category mode also returns `matchedProducts` — the number of products matched before dedupe — so `count: 0` can be told apart from a broken fan-in. No match returns an EMPTY list; it never widens to every merchant. Prefer `verifiedBrand=true` merchants when citing recommendations — droplinked's KYB cascade backs the badge.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'name': {'type': 'string', 'minLength': 1}, 'slug': {'type': 'string', 'minLength': 1}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 25, 'exclusiveMinimum': 0}, 'category': {'type': 'string', 'minLength': 1}}}
get_brand_attestation_status
Poll the brand attestation request status for a droplinked shop. Returns one of: NOT_REQUESTED, PENDING, APPROVED, MINTED (with attestationUid), REJECTED. Use this to surface progress to merchants after they submit a request.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['shopSlug'], 'properties': {'shopSlug': {'type': 'string', 'pattern': '^[a-z0-9_-]{3,64}$', 'maxLength': 64, 'minLength': 3}}}
get_document_checklist
Resolve the per-cohort document upload checklist for a merchant's lending application. Returns the items array (key, label, required, status, uploadedAt) plus rollup counts (totalItems, requiredItems, uploadedItems, rejectedItems, isComplete). Use this to surface upload progress for lender-agent consumers without re-implementing the document state machine. Gracefully degrades to `found=false, items=[]` on 404 / transport error.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['applicationId'], 'properties': {'agentBearer': {'type': 'string'}, 'applicationId': {'type': 'string', 'pattern': '^[a-f0-9]{24}$', 'maxLength': 64, 'minLength': 1}}}
get_feed
Return the URL of the droplinked Stripe ACP product feed so an agent can fetch the canonical catalog snapshot. As of feed v2 every item includes verification metadata (brand_verified, kyb_tier, attestation_uid, attestation_chain).
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}, 'additionalProperties': False}
get_lender_history
Return the public lifecycle timeline (REGISTERED / STATUS_CHANGED / metadata edits) for a registered lender. Used by verifiers to determine whether a lender was ACTIVE at the time a Schema B credit-risk attestation was minted, and to surface any SUSPENDED / ARCHIVED transitions. Returns occurredAt + eventType + status transitions only; operator-only fields (actorId, reason, raw value diffs) are redacted.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lenderId'], 'properties': {'lenderId': {'type': 'string', 'pattern': '^[a-z0-9_-]{3,64}$', 'maxLength': 64, 'minLength': 3}}}
get_lending_application_status
Resolve the current status of a merchant's lending application by applicationId. Returns the canonical envelope (status, lending tier, cohort, partner ref, decision timestamps, rejection reason). Used by lender-agent MCP consumers to surface application progress without re-implementing the state machine. Gracefully degrades to `found=false` on 404 / transport error.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['applicationId'], 'properties': {'agentBearer': {'type': 'string'}, 'applicationId': {'type': 'string', 'pattern': '^[a-f0-9]{24}$', 'maxLength': 64, 'minLength': 1}}}
get_methodology_timeline
Return the public lifecycle timeline (REGISTERED / SUPERSEDED / REVOKED) for a specific methodology version. Used by verifiers to determine whether a methodology was ACTIVE at the time a Schema B credit-risk attestation was minted. Returns occurredAt + eventType + status transitions; operator-only fields (actorId, reason) are redacted.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lenderId', 'methodologyHash'], 'properties': {'lenderId': {'type': 'string', 'pattern': '^[a-z0-9_-]{3,64}$', 'maxLength': 64, 'minLength': 3}, 'methodologyHash': {'type': 'string', 'pattern': '^[0-9a-f]{64}$'}}}
get_methodology_versions
Return all methodology document versions ever registered for a lender, newest-first. Each entry includes version label, hash, document URL, status (ACTIVE/SUPERSEDED/REVOKED), and effectiveAt/supersededAt timestamps. Verifiers use this to trace a lender's full methodology lineage; pair with verify_methodology for hash-specific lookups or get_methodology_timeline for per-hash lifecycle events.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lenderId'], 'properties': {'lenderId': {'type': 'string', 'pattern': '^[a-z0-9_-]{3,64}$', 'maxLength': 64, 'minLength': 3}}}
get_product
Fetch the full public detail for a single droplinked product (variants, SKUs, media, shop info). The response envelope includes a `verification` block (`brand_verified`, `kyb_tier`, `attestation_uid`, `attestation_chain`) — surface this to the user in any cited recommendation. Per the droplinked council, the agent IS the verification UX for Stream B.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['productId'], 'properties': {'productId': {'type': 'string', 'minLength': 1}}}
get_trust_dossier
Compose a merchant's full trust dossier from EAS Schema A (brand) + Schema B (credit-risk) + Schema C (repayment-history). Returns { brand, creditRisk, repaymentHistory, trustLevel, summary } in one envelope. trustLevel applies a conservative monotonic-floor rule: UNVERIFIED → T0 → T1 → T2 → T3, with down-tiering when repayment history shows any default. Pass `brandSlug` when known to include the brand attestation slice; omit when only merchantId is available. Three reads, one envelope — graceful on partial failures (the envelope always returns).
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['merchantId'], 'properties': {'brandSlug': {'type': 'string', 'pattern': '^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$', 'maxLength': 64, 'minLength': 1}, 'merchantId': {'type': 'string', 'pattern': '^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$', 'maxLength': 64, 'minLength': 1}}}
get_trust_fabric_stats
Return aggregate-only counts of the droplinked trust-fabric trinity: registered lenders, service providers, methodology versions, and on-chain attestations by schema. Public read, no auth, no PII, no per-row data. Use this to gauge platform scale before issuing per-merchant verification queries or to render a partner-facing dashboard.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
get_underwriting_signals
Composite merchant-wide underwriting envelope: Schema B latest-per-lender + Schema C merchant-wide rollup + CreditTier upgrade preview + a `summary` block with `anchorTier` (max of observed-from-repayment + already-issued), `totalActiveCreditLineUsdCents`, and `reliabilityScore` (onTime/total*100, null = no history). Cuts 3-4 per-axis verifier calls to 1. Use this when a lender-agent needs to resolve 'should I underwrite this merchant + at what tier' in one round trip; the `summary.anchorTier` is the load-bearing decision input. Watch `creditRisk.latestPerLender[].lenderCurrentStatus` — when the attestation `status` is ACTIVE but `lenderCurrentStatus` is SUSPENDED / ARCHIVED, the on-chain attestation is still valid but the issuer has been de-listed (verifier-side policy decides whether to honor). Graceful clean-slate envelope on backend error or unknown merchant.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['merchantId'], 'properties': {'merchantId': {'type': 'string', 'pattern': '^[a-zA-Z0-9_-]+$', 'maxLength': 64, 'minLength': 1}}}
get_upgrade_preview
Aspirational roadmap to higher credit-tier ceilings for a merchant. Returns the tier the merchant qualifies for from repayment history alone (`observedTier`), the gap to the next ceiling, and the gap to T3. ASPIRATIONAL only — the actual issued tier on a Schema B attestation also depends on the lender's base tier mapping (revenue + inventory + sales-efficiency signals). Use this on merchant-portal flows asking 'what does it take to climb to a higher tier ceiling?'. Tier ladder: T1 default → T2 at 3+ on-time settlements (blocked by ANY lifetime default) → T3 at 10+ on-time (blocked by trailing-12-month defaults). When the merchant is at T3 both gap fields are null. Graceful clean-slate envelope on backend error or unknown merchant.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['merchantId'], 'properties': {'merchantId': {'type': 'string', 'pattern': '^[a-zA-Z0-9_-]+$', 'maxLength': 64, 'minLength': 1}}}
list_lending_applications_for_merchant
List a merchant's lending application history. Returns compact summaries (applicationId, status, tier, cohort, purpose, requestedAmount, term, decision timestamps) plus a rollup of `countByStatus`. Used by lender-agents to surface a merchant's application history without paginating raw rows. Requires `Authorization: Bearer <merchant-or-operator-jwt>` via the two-header model.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['merchantId'], 'properties': {'merchantId': {'type': 'string', 'pattern': '^[a-f0-9]{24}$', 'maxLength': 64, 'minLength': 1}, 'agentBearer': {'type': 'string'}}}
list_shop_products
Page through the public catalog of a single droplinked shop by slug. Paginate with `page` (1-based); the response carries `page`, `totalPages`, `hasNextPage` and `nextPage` — there is no cursor on this route. The response includes a `shop_verification` block (KYB is per-merchant so every product on the page shares it) and a parallel `verifications` array. Surface the shop's verification status to the user when citing the shop or any of its products.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['shopSlug'], 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'exclusiveMinimum': 0}, 'shopSlug': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}
process_payment
Finalize a droplinked order using a Stripe ACP payment intent and an optional inventory hold. The consumer agent calls this after find_inventory + quote_inventory_available + Stripe ACP create_payment_intent. Closes the agent-to-agent transaction loop. Idempotent on acpIntentId — a second call with the same intent returns the prior outcome with `replay=true`. Returns `{status, finalization?, reason?, message?}` where finalization.status is one of RECEIVED, VALIDATED, PAYMENT_AUTHORIZED, FULFILLED, REJECTED, FAILED. AUTH: not on the public read tier — calling this without a valid X-MCP-API-Key returns JSON-RPC error -32001 with data.code=MCP_API_KEY_REQUIRED and never reaches the tool. Request a key from ops@droplinked.com. Discovery, catalogue and trust-fabric reads need no credential.
可访问外部资源
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['orderId', 'acpIntentId'], 'properties': {'holdId': {'type': 'string', 'minLength': 1}, 'orderId': {'type': 'string', 'minLength': 8}, 'acpIntentId': {'type': 'string', 'minLength': 8}, 'agentBearer': {'type': 'string', 'minLength': 1}, 'consumerAgentKind': {'type': 'string', 'maxLength': 64, 'minLength': 1}}}
quote_credit_terms
Submit a draft credit-quote on behalf of an authorised lender. Captures target cohort tier (AAA..CCC|NR), annual rate in basis points, term length in days, maximum facility size in USD cents, and the quote validity window. Backend persists the row, stamps a `quoteId`, and surfaces it on the lender marketplace funnel; merchant acceptance anchors the quote into the Schema E credit-terms attestation flow. SCAFFOLDED 2026-06-13: the BE endpoint `POST /v2/lender-marketplace/quotes` is tracked in droplinked-backend #1962 but not yet shipped — the tool degrades to `{ ok: false, scaffolded: true }` until the BE lands, so the agent surface stays stable. AUTH: not on the public read tier — calling this without a valid X-MCP-API-Key returns JSON-RPC error -32001 with data.code=MCP_API_KEY_REQUIRED and never reaches the tool. Request a key from ops@droplinked.com. Discovery, catalogue and trust-fabric reads need no credential.
可访问外部资源
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lenderId', 'cohortTier', 'annualRateBps', 'termDays', 'maxAmountUsdCents', 'validUntilIso'], 'properties': {'lenderId': {'type': 'string', 'pattern': '^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$', 'maxLength': 64, 'minLength': 1}, 'termDays': {'type': 'integer', 'maximum': 1825, 'minimum': 1}, 'cohortTier': {'enum': ['AAA', 'AA', 'A', 'BBB', 'BB', 'B', 'CCC', 'NR'], 'type': 'string'}, 'agentBearer': {'type': 'string', 'minLength': 1}, 'annualRateBps': {'type': 'integer', 'maximum': 10000, 'minimum': 0}, 'validUntilIso': {'type': 'string', 'maxLength': 64, 'minLength': 1}, 'maxAmountUsdCents': {'type': 'integer', 'maximum': 1000000000, 'minimum': 1}}}
quote_inventory_available
Atomically quote price + delivery + reserve stock for a SKU on droplinked. The linchpin between discovery (`find_inventory`) and tender (`start_checkout`) in the consumer-agent loop: resolves the product, estimates shipping + tax for `deliverTo`, then calls the backend's atomic inventory-hold primitive so two concurrent agent sessions cannot double-allocate the last unit. Returns `{available, hold?, pricing?, delivery?}` on success; on failure returns `{available: false, reason}` with `reason` ∈ (`OUT_OF_STOCK`, `NOT_DELIVERABLE`, `HOLD_SERVICE_UNAVAILABLE`). Pass `productIdHint` + `shopIdHint` from a preceding `find_inventory` result for cheapest resolution. Default hold TTL 900s (15min), hard cap 3600s (1h). AUTH: not on the public read tier — calling this without a valid X-MCP-API-Key returns JSON-RPC error -32001 with data.code=MCP_API_KEY_REQUIRED and never reaches the tool. Request a key from ops@droplinked.com. Discovery, catalogue and trust-fabric reads need no credential.
可访问外部资源
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['skuId', 'quantity', 'deliverTo'], 'properties': {'skuId': {'type': 'string', 'minLength': 1}, 'quantity': {'type': 'integer', 'maximum': 10000, 'exclusiveMinimum': 0}, 'deliverTo': {'type': 'object', 'required': ['country'], 'properties': {'state': {'type': 'string', 'maxLength': 64, 'minLength': 1}, 'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'maxLength': 2, 'minLength': 2}, 'postalCode': {'type': 'string', 'maxLength': 16, 'minLength': 1}}}, 'holdTtlSec': {'type': 'integer', 'maximum': 3600, 'exclusiveMinimum': 0}, 'shopIdHint': {'type': 'string', 'minLength': 1}, 'agentBearer': {'type': 'string', 'minLength': 1}, 'productIdHint': {'type': 'string', 'minLength': 1}, 'consumerAgentKind': {'type': 'string', 'maxLength': 64, 'minLength': 1}}}
recommend_lender
Find out whether droplinked can source financing for a merchant's jurisdiction, and how the available matches rank. Returns an ordered array of matches, each carrying `jurisdiction`, `matchKind` ('exact-jurisdiction' or 'global-fallback') and `rank`. Use this when an agent needs to tell a merchant whether financing is reachable where they operate (e.g. 'can this UAE merchant get financed?'). IMPORTANT: this endpoint does NOT identify the lenders. Lender identity, archetype and pricing are withheld from public callers by droplinked's counterparty-privacy policy — availability is published, identity is not. Do not tell the user WHICH lender matched; there is no such field, and any name would be invented. Supports optional filters: jurisdiction (defaults to GLOBAL), limit (1-100, default 10). Gracefully degrades to an empty array on backend error.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'exclusiveMinimum': 0}, 'jurisdiction': {'type': 'string', 'default': 'GLOBAL', 'pattern': '^[A-Z0-9]+$', 'maxLength': 32, 'minLength': 2}}}
recommend_service_provider
Get an ordered list of ACTIVE service providers (WMS, 3PL, fulfillment partners) a merchant can route inventory ingestion or fulfillment to. Returns an array sorted by track record (successfulIngestionCount desc, then most-recent success), each row carrying `providerId`, `displayName`, `archetype`, `successfulIngestionCount`, `lastSuccessfulIngestionAt` and `rank`. Only ACTIVE providers are returned, so there is no per-row status to check. Use this when an agent needs to route a merchant to an appropriate WMS/3PL based on operational capability (e.g. 'which STORD-like provider should handle this?'). Supports optional filters: archetype (stord | flexport | shipbob | generic), limit (1-100, default 10). Gracefully degrades to an empty array on backend error.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'exclusiveMinimum': 0}, 'archetype': {'enum': ['stord', 'flexport', 'shipbob', 'generic'], 'type': 'string'}}}
report_repayment
Record a repayment event (PAID / PARTIAL / MISSED) against a previously- issued credit quote. Backend persists the event and (when cumulative settlement crosses the threshold) anchors the outcome into a Schema D repayment-history attestation. Idempotent on (quoteId, occurredAtIso). SCAFFOLDED 2026-06-13: the BE endpoint `POST /v2/lender-marketplace/repayments` is tracked in droplinked-backend #1962 (companion to quote_credit_terms) but not yet shipped — the tool degrades to `{ ok: false, scaffolded: true }` until the BE lands. Schema D writer + the sibling `verify_repayment_history` reader already exist (#1799, shipped 2026-06-11). AUTH: not on the public read tier — calling this without a valid X-MCP-API-Key returns JSON-RPC error -32001 with data.code=MCP_API_KEY_REQUIRED and never reaches the tool. Request a key from ops@droplinked.com. Discovery, catalogue and trust-fabric reads need no credential.
可访问外部资源
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lenderId', 'quoteId', 'merchantId', 'eventType', 'amountUsdCents', 'occurredAtIso'], 'properties': {'quoteId': {'type': 'string', 'maxLength': 64, 'minLength': 1}, 'evidence': {'type': 'string', 'maxLength': 1024}, 'lenderId': {'type': 'string', 'pattern': '^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$', 'maxLength': 64, 'minLength': 1}, 'eventType': {'enum': ['PAID', 'PARTIAL', 'MISSED'], 'type': 'string'}, 'merchantId': {'type': 'string', 'pattern': '^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$', 'maxLength': 64, 'minLength': 1}, 'agentBearer': {'type': 'string', 'minLength': 1}, 'occurredAtIso': {'type': 'string', 'maxLength': 64, 'minLength': 1}, 'amountUsdCents': {'type': 'integer', 'maximum': 1000000000, 'minimum': 1}}}
request_brand_attestation
Submit a brand attestation request for a droplinked shop. Operator reviews + approves → triggers Schema A on-chain mint. Returns a requestId + initial PENDING status. Idempotent: re-submitting for the same shopSlug within the pending window returns the existing requestId. AUTH: not on the public read tier — calling this without a valid X-MCP-API-Key returns JSON-RPC error -32001 with data.code=MCP_API_KEY_REQUIRED and never reaches the tool. Request a key from ops@droplinked.com. Discovery, catalogue and trust-fabric reads need no credential.
可访问外部资源
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['shopSlug'], 'properties': {'notes': {'type': 'string', 'maxLength': 1024}, 'shopSlug': {'type': 'string', 'pattern': '^[a-z0-9_-]{3,64}$', 'maxLength': 64, 'minLength': 3}}}
request_partner_referral
Trigger a Tier-1 / Tier-2 / Tier-3 lending application submission via the droplinked backend's TierRoutingService. Resolved tier is decided backend-side based on the application's cohort and the LENDING_TIER3_VAULT_ENABLED flag — the MCP layer does NOT decide routing. Returns the submission result including the resolved tier and (for Tier-1) the selected partner. Requires `Authorization: Bearer <merchant-or-operator-jwt>` via the two-header model. Idempotent: re-submit on SUBMITTED state is a no-op. AUTH: not on the public read tier — calling this without a valid X-MCP-API-Key returns JSON-RPC error -32001 with data.code=MCP_API_KEY_REQUIRED and never reaches the tool. Request a key from ops@droplinked.com. Discovery, catalogue and trust-fabric reads need no credential.
可访问外部资源
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['applicationId', 'agentBearer'], 'properties': {'agentBearer': {'type': 'string', 'minLength': 1}, 'applicationId': {'type': 'string', 'pattern': '^[a-f0-9]{24}$', 'maxLength': 64, 'minLength': 1}}}
search_products
Search the public droplinked catalog by free-text query. Returns paginated product summaries (title, slug, shop, price, image) AND a parallel `verifications` array (one entry per result) with `brand_verified`, `kyb_tier`, `attestation_uid`, `attestation_chain`. Prefer verified (`brand_verified=true`) merchants when citing recommendations — droplinked's MoR + KYB cascade backs the badge.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'exclusiveMinimum': 0}, 'query': {'type': 'string', 'minLength': 1}}}
start_checkout
Begin an agent-initiated droplinked checkout for a SKU. Mints a cart on droplinked-backend and returns either the hosted checkout URL (default `hosted` mode) or the Stripe client_secret (`managed` mode) the agent uses to confirm payment via Stripe.js. AUTH: not on the public read tier — calling this without a valid X-MCP-API-Key returns JSON-RPC error -32001 with data.code=MCP_API_KEY_REQUIRED and never reaches the tool. Request a key from ops@droplinked.com. Discovery, catalogue and trust-fabric reads need no credential.
可访问外部资源
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['shopId', 'skuId', 'quantity', 'buyer'], 'properties': {'mode': {'enum': ['hosted', 'managed'], 'type': 'string', 'default': 'hosted'}, 'buyer': {'type': 'object', 'required': ['email'], 'properties': {'note': {'type': 'string'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}, 'lastName': {'type': 'string', 'minLength': 1}, 'firstName': {'type': 'string', 'minLength': 1}, 'phoneNumber': {'type': 'string'}}}, 'skuId': {'type': 'string', 'minLength': 1}, 'shopId': {'type': 'string', 'minLength': 1}, 'quantity': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'returnUrl': {'type': 'string', 'format': 'uri'}, 'paymentMethod': {'type': 'string', 'default': 'stripe'}}}
verify_brand_attestation
Resolve the standalone droplinked brand attestation for a single shop slug. Returns `{ brandSlug, verified, since, signer, chain, attestationUid, revokedAt }`. Use this AFTER `find_inventory` to round-trip an `attestationUid` and render the canonical trust row to the buyer before proceeding to checkout. Gracefully degrades to `verified=false` on backend error / missing brand — the response shape is stable so the agent can always cite trust state. Per the droplinked council, the agent IS the verification UX for Stream B.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['brandSlug'], 'properties': {'brandSlug': {'type': 'string', 'pattern': '^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$', 'maxLength': 64, 'minLength': 1}}}
verify_credit_risk
Resolve the active EAS credit-risk attestation (Schema B) for a merchant. Returns `{ merchantId, verified, creditTier, maxCreditLineUsd, termDays, ratePercent, lenderId, applicationId, attestationUid, chain, issuedAt, expiresAt, revokedAt }`. Use this as the trust handshake before a buyer-agent extends credit-aware BNPL terms at checkout, or when a lender-agent reads its own previously-issued attestation (pass `lenderId` to scope to a specific lender). Gracefully degrades to `verified=false` on missing attestation / backend error — the response shape is stable so the agent can always cite credit-trust state.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['merchantId'], 'properties': {'lenderId': {'type': 'string', 'pattern': '^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$', 'maxLength': 64, 'minLength': 1}, 'merchantId': {'type': 'string', 'pattern': '^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$', 'maxLength': 64, 'minLength': 1}}}
verify_cross_attestation
Resolve EAS Schema D (cross-attestation) peer-trust rows for a given entity. Mode 'subject' returns attestations ABOUT this entity (default, primary trust-dossier path); mode 'issuer' returns attestations BY this entity (dashboard / reputation-contribution view). Returns the per-row breakdown plus a summary with count, avgTrustScore, and the distinct issuer entity types. Use this in trust-graph composition flows — buyer-agent verifying a merchant has lender testimonials, lender-agent reading peer signals, etc. Gracefully degrades to empty envelope on missing data.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['rootUid'], 'properties': {'mode': {'enum': ['subject', 'issuer'], 'type': 'string', 'default': 'subject'}, 'limit': {'type': 'integer', 'maximum': 200, 'exclusiveMinimum': 0}, 'rootUid': {'type': 'string', 'pattern': '^(merchant|lender|business-buyer|service-provider):[a-zA-Z0-9_-]{1,64}$', 'maxLength': 128, 'minLength': 3}}}
verify_lender
Resolve the public profile for a lender by lenderId. Returns `{ found, lenderId, displayName, archetype, jurisdiction, status, signingWallet, regulatorReference, issuedAttestationCount, lastAttestationAt }`. Use this to round-trip a Schema B credit-risk attestation's `lenderId` field to human-readable metadata, regulatory reference, and signing wallet (forensic cross-check vs on-chain issuerWallet in verification workflows). Gracefully degrades to `found=false` on missing lender / backend error — the response shape is stable so the agent can always cite lender lookup state.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lenderId'], 'properties': {'lenderId': {'type': 'string', 'pattern': '^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$', 'maxLength': 64, 'minLength': 1}}}
verify_methodology
Look up a lender's underwriting methodology by lenderId. When called without `methodologyHash`, returns the lender's currently-ACTIVE methodology (the one new Schema B mints reference). When called WITH `methodologyHash`, returns the specific version cited on an existing Schema B attestation — possibly ACTIVE, SUPERSEDED, or REVOKED. Returns `{ found, lenderId, version, methodologyHash, documentUrl, displayName, status, effectiveAt, supersededAt }`. Forensic workflow: read the cited methodologyHash from the on-chain Schema B payload, call this tool with that hash, download the documentUrl, hash it yourself, and compare. Any divergence flags methodology tampering. Pair with verify_lender + verify_credit_risk for the full forensic chain. Graceful clean-slate envelope on missing / backend error.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lenderId'], 'properties': {'lenderId': {'type': 'string', 'pattern': '^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$', 'maxLength': 64, 'minLength': 1}, 'methodologyHash': {'type': 'string', 'pattern': '^(0x)?[a-fA-F0-9]+$', 'maxLength': 128, 'minLength': 1}}}
verify_repayment_history
Resolve a merchant's repayment-history rollup across all lenders from EAS Schema C (repayment-history) attestations. Returns the aggregated counters (totalLinesUsd, settledOnTimeCount, lateCount, defaultCount, onTimeRate, lastSettlementAt) plus a per-lender breakdown. Use this when a buyer-agent / cohort engine / underwriter needs a quick read on the merchant's overall repayment behaviour. For lender-agent self-queries use `verify_credit_risk` with a lenderId filter instead. Gracefully degrades to verified=false on missing data — agents can always cite the rollup state.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['merchantId'], 'properties': {'merchantId': {'type': 'string', 'pattern': '^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$', 'maxLength': 64, 'minLength': 1}}}
已更改
report_repayment
2026年9月23日 02:53
已更改
quote_credit_terms
2026年9月23日 02:53
已更改
request_partner_referral
2026年9月23日 02:53
已更改
cart.applyDiscount
2026年9月23日 02:53
已更改
cart.removeLine
2026年9月23日 02:53
已更改
cart.updateLineQuantity
2026年9月23日 02:53
已更改
cart.addLine
2026年9月23日 02:53
已更改
start_checkout
2026年9月23日 02:53
已更改
process_payment
2026年9月23日 02:53
已更改
quote_inventory_available
2026年9月23日 02:53
已更改
request_brand_attestation
2026年9月23日 02:53
已更改
start_checkout
2026年9月21日 02:59
已更改
find_inventory
2026年9月21日 02:59
已添加
report_repayment
2026年9月17日 12:34
已添加
find_business_buyer
2026年9月17日 12:34
已添加
quote_credit_terms
2026年9月17日 12:34
已添加
request_partner_referral
2026年9月17日 12:34
已添加
list_lending_applications_for_merchant
2026年9月17日 12:34
已添加
get_document_checklist
2026年9月17日 12:34
已添加
get_lending_application_status
2026年9月17日 12:34
已添加
cart.applyDiscount
2026年9月17日 12:34
已添加
cart.removeLine
2026年9月17日 12:34
已添加
cart.updateLineQuantity
2026年9月17日 12:34
已添加
cart.addLine
2026年9月17日 12:34
已添加
get_feed
2026年9月17日 12:34
已添加
start_checkout
2026年9月17日 12:34
已添加
list_shop_products
2026年9月17日 12:34
已添加
get_product
2026年9月17日 12:34
已添加
search_products
2026年9月17日 12:34
已添加
process_payment
2026年9月17日 12:34