droplinked

Agentic commerce + trust MCP: discover, verify, and transact across droplinked's merchant network.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
76%
Calidad de los nombres
91%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (5)

  • LOWTool 'cart.addLine' doesn't follow camelCase/snake_caseen cart.addLine
  • LOWTool 'cart.updateLineQuantity' doesn't follow camelCase/snake_caseen cart.updateLineQuantity
  • LOWTool 'cart.removeLine' doesn't follow camelCase/snake_caseen cart.removeLine
  • LOWTool 'cart.applyDiscount' doesn't follow camelCase/snake_caseen cart.applyDiscount
  • LOWTool 'list_lending_applications_for_merchant' name length outside 3-30 rangeen list_lending_applications_for_merchant

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~10,686Tokens (definiciones de herramientas)
~1001 BTamaño de respuesta típico
Impacto significativo en la atención (8.35% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "server": {
      "url": "https://mcp.droplinked.com/mcp"
    }
  }
}

Puntos de conexión remotos

https://mcp.droplinked.com/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (38)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢find_merchant(slug, name, category, limit)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1
    },
    "name": {
      "type": "string",
      "minLength": 1
    },
    "category": {
      "type": "string",
      "minLength": 1
    },
    "limit": {
      "default": 10,
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 25
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_inventory(query, brandSlug, currency, minPrice, maxPrice, ...)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1
    },
    "brandSlug": {
      "type": "string",
      "minLength": 1
    },
    "currency": {
      "type": "string",
      "minLength": 3,
      "maxLength": 8
    },
    "minPrice": {
      "type": "number",
      "minimum": 0
    },
    "maxPrice": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "verifiedBrand": {
      "type": "boolean"
    },
    "inStockOnly": {
      "type": "boolean"
    },
    "source": {
      "type": "string",
      "enum": [
        "native",
        "shopify_ucp",
        "henry",
        "impact_brand",
        "any"
      ]
    },
    "limit": {
      "default": 10,
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_affiliate_programs(vertical, minCommissionPct, payoutType, hasOnchainAttestation, limit)

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 }).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "vertical": {
      "description": "Vertical slug — fashion, beauty, tech, fitness, etc. Case-insensitive.",
      "type": "string",
      "minLength": 1,
      "maxLength": 64
    },
    "minCommissionPct": {
      "description": "Minimum flat-rate commission % (0..100). Inclusive.",
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "payoutType": {
      "description": "Payout model. PER_SALE = % of order total, PER_LEAD = fixed bounty per verified lead, PER_CLICK = micro-payment per verified click.",
      "type": "string",
      "enum": [
        "PER_SALE",
        "PER_LEAD",
        "PER_CLICK"
      ]
    },
    "hasOnchainAttestation": {
      "description": "When true, only programs with an EAS verified-brand attestation UID are returned (backend#1708 scaffold).",
      "type": "boolean"
    },
    "limit": {
      "default": 20,
      "description": "Result page size (1..50). Defaults to 20.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢verify_brand_attestation(brandSlug)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "brandSlug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$"
    }
  },
  "required": [
    "brandSlug"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡request_brand_attestation(shopSlug, notes)

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 [email protected]. Discovery, catalogue and trust-fabric reads need no credential.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "shopSlug": {
      "type": "string",
      "minLength": 3,
      "maxLength": 64,
      "pattern": "^[a-z0-9_-]{3,64}$"
    },
    "notes": {
      "type": "string",
      "maxLength": 1024
    }
  },
  "required": [
    "shopSlug"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_brand_attestation_status(shopSlug)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "shopSlug": {
      "type": "string",
      "minLength": 3,
      "maxLength": 64,
      "pattern": "^[a-z0-9_-]{3,64}$"
    }
  },
  "required": [
    "shopSlug"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢verify_credit_risk(merchantId, lenderId)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "merchantId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$"
    },
    "lenderId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$"
    }
  },
  "required": [
    "merchantId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢verify_repayment_history(merchantId)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "merchantId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$"
    }
  },
  "required": [
    "merchantId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢verify_cross_attestation(rootUid, mode, limit)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "rootUid": {
      "type": "string",
      "minLength": 3,
      "maxLength": 128,
      "pattern": "^(merchant|lender|business-buyer|service-provider):[a-zA-Z0-9_-]{1,64}$"
    },
    "mode": {
      "default": "subject",
      "type": "string",
      "enum": [
        "subject",
        "issuer"
      ]
    },
    "limit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 200
    }
  },
  "required": [
    "rootUid"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢verify_lender(lenderId)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "lenderId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$"
    }
  },
  "required": [
    "lenderId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_lender_history(lenderId)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "lenderId": {
      "type": "string",
      "minLength": 3,
      "maxLength": 64,
      "pattern": "^[a-z0-9_-]{3,64}$"
    }
  },
  "required": [
    "lenderId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢verify_methodology(lenderId, methodologyHash)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "lenderId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$"
    },
    "methodologyHash": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^(0x)?[a-fA-F0-9]+$"
    }
  },
  "required": [
    "lenderId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_methodology_timeline(lenderId, methodologyHash)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "lenderId": {
      "type": "string",
      "minLength": 3,
      "maxLength": 64,
      "pattern": "^[a-z0-9_-]{3,64}$"
    },
    "methodologyHash": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$"
    }
  },
  "required": [
    "lenderId",
    "methodologyHash"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_methodology_versions(lenderId)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "lenderId": {
      "type": "string",
      "minLength": 3,
      "maxLength": 64,
      "pattern": "^[a-z0-9_-]{3,64}$"
    }
  },
  "required": [
    "lenderId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_trust_dossier(merchantId, brandSlug)

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).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "merchantId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$"
    },
    "brandSlug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$"
    }
  },
  "required": [
    "merchantId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢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.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_underwriting_signals(merchantId)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "merchantId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-zA-Z0-9_-]+$"
    }
  },
  "required": [
    "merchantId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_upgrade_preview(merchantId)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "merchantId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-zA-Z0-9_-]+$"
    }
  },
  "required": [
    "merchantId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢recommend_lender(jurisdiction, limit)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "jurisdiction": {
      "default": "GLOBAL",
      "type": "string",
      "minLength": 2,
      "maxLength": 32,
      "pattern": "^[A-Z0-9]+$"
    },
    "limit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢recommend_service_provider(archetype, limit)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "archetype": {
      "type": "string",
      "enum": [
        "stord",
        "flexport",
        "shipbob",
        "generic"
      ]
    },
    "limit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢quote_inventory_available(skuId, quantity, deliverTo, holdTtlSec, consumerAgentKind, ...)

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 [email protected]. Discovery, catalogue and trust-fabric reads need no credential.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "skuId": {
      "type": "string",
      "minLength": 1
    },
    "quantity": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 10000
    },
    "deliverTo": {
      "type": "object",
      "properties": {
        "country": {
          "type": "string",
          "minLength": 2,
          "maxLength": 2,
          "pattern": "^[A-Za-z]{2}$"
        },
        "state": {
          "type": "string",
          "minLength": 1,
          "maxLength": 64
        },
        "postalCode": {
          "type": "string",
          "minLength": 1,
          "maxLength": 16
        }
      },
      "required": [
        "country"
      ]
    },
    "holdTtlSec": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 3600
    },
    "consumerAgentKind": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64
    },
    "productIdHint": {
      "type": "string",
      "minLength": 1
    },
    "shopIdHint": {
      "type": "string",
      "minLength": 1
    },
    "agentBearer": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "skuId",
    "quantity",
    "deliverTo"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡process_payment(orderId, acpIntentId, holdId, consumerAgentKind, agentBearer)

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 [email protected]. Discovery, catalogue and trust-fabric reads need no credential.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "minLength": 8
    },
    "acpIntentId": {
      "type": "string",
      "minLength": 8
    },
    "holdId": {
      "type": "string",
      "minLength": 1
    },
    "consumerAgentKind": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64
    },
    "agentBearer": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "orderId",
    "acpIntentId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_products(query, limit)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1
    },
    "limit": {
      "default": 10,
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_product(productId)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "productId": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "productId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_shop_products(shopSlug, page, limit)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "shopSlug": {
      "type": "string",
      "minLength": 1
    },
    "page": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "default": 20,
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50
    }
  },
  "required": [
    "shopSlug"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢start_checkout(shopId, skuId, quantity, mode, buyer, ...)

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 [email protected]. Discovery, catalogue and trust-fabric reads need no credential.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "shopId": {
      "type": "string",
      "minLength": 1
    },
    "skuId": {
      "type": "string",
      "minLength": 1
    },
    "quantity": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "mode": {
      "default": "hosted",
      "type": "string",
      "enum": [
        "hosted",
        "managed"
      ]
    },
    "buyer": {
      "type": "object",
      "properties": {
        "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,}$"
        },
        "firstName": {
          "type": "string",
          "minLength": 1
        },
        "lastName": {
          "type": "string",
          "minLength": 1
        },
        "phoneNumber": {
          "type": "string"
        },
        "note": {
          "type": "string"
        }
      },
      "required": [
        "email"
      ]
    },
    "returnUrl": {
      "type": "string",
      "format": "uri"
    },
    "paymentMethod": {
      "default": "stripe",
      "type": "string"
    }
  },
  "required": [
    "shopId",
    "skuId",
    "quantity",
    "buyer"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢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).

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟡cart.addLine(cartId, skuId, quantity, referrer)

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 [email protected]. Discovery, catalogue and trust-fabric reads need no credential.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "cartId": {
      "type": "string",
      "minLength": 1
    },
    "skuId": {
      "type": "string",
      "minLength": 8
    },
    "quantity": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9999
    },
    "referrer": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "cartId",
    "skuId",
    "quantity"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴cart.updateLineQuantity(cartId, skuId, quantity)

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 [email protected]. Discovery, catalogue and trust-fabric reads need no credential.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "cartId": {
      "type": "string",
      "minLength": 1
    },
    "skuId": {
      "type": "string",
      "minLength": 8
    },
    "quantity": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9999
    }
  },
  "required": [
    "cartId",
    "skuId",
    "quantity"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴cart.removeLine(cartId, skuId)

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 [email protected]. Discovery, catalogue and trust-fabric reads need no credential.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "cartId": {
      "type": "string",
      "minLength": 1
    },
    "skuId": {
      "type": "string",
      "minLength": 8
    }
  },
  "required": [
    "cartId",
    "skuId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢cart.applyDiscount(cartId, discountCode)

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 [email protected]. Discovery, catalogue and trust-fabric reads need no credential.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "cartId": {
      "type": "string",
      "minLength": 1
    },
    "discountCode": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64
    }
  },
  "required": [
    "cartId",
    "discountCode"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_lending_application_status(applicationId, agentBearer)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "applicationId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-f0-9]{24}$"
    },
    "agentBearer": {
      "type": "string"
    }
  },
  "required": [
    "applicationId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_document_checklist(applicationId, agentBearer)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "applicationId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-f0-9]{24}$"
    },
    "agentBearer": {
      "type": "string"
    }
  },
  "required": [
    "applicationId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_lending_applications_for_merchant(merchantId, agentBearer)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "merchantId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-f0-9]{24}$"
    },
    "agentBearer": {
      "type": "string"
    }
  },
  "required": [
    "merchantId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡request_partner_referral(applicationId, agentBearer)

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 [email protected]. Discovery, catalogue and trust-fabric reads need no credential.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "applicationId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-f0-9]{24}$"
    },
    "agentBearer": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "applicationId",
    "agentBearer"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡quote_credit_terms(lenderId, cohortTier, annualRateBps, termDays, maxAmountUsdCents, ...)

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 [email protected]. Discovery, catalogue and trust-fabric reads need no credential.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "lenderId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$"
    },
    "cohortTier": {
      "type": "string",
      "enum": [
        "AAA",
        "AA",
        "A",
        "BBB",
        "BB",
        "B",
        "CCC",
        "NR"
      ]
    },
    "annualRateBps": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000
    },
    "termDays": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1825
    },
    "maxAmountUsdCents": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000000
    },
    "validUntilIso": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64
    },
    "agentBearer": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "lenderId",
    "cohortTier",
    "annualRateBps",
    "termDays",
    "maxAmountUsdCents",
    "validUntilIso"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_business_buyer(criteria, agentBearer)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "criteria": {
      "default": {},
      "type": "object",
      "properties": {
        "sortBy": {
          "type": "string",
          "enum": [
            "collateral",
            "liquidity",
            "efficiency",
            "risk"
          ]
        },
        "order": {
          "type": "string",
          "enum": [
            "asc",
            "desc"
          ]
        },
        "windowDays": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 365
        },
        "tier": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "AAA",
                "AA",
                "A",
                "BBB",
                "BB",
                "B",
                "CCC",
                "NR"
              ]
            },
            {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "AAA",
                  "AA",
                  "A",
                  "BBB",
                  "BB",
                  "B",
                  "CCC",
                  "NR"
                ]
              }
            }
          ]
        },
        "limit": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 200
        }
      }
    },
    "agentBearer": {
      "type": "string",
      "minLength": 1
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢report_repayment(lenderId, quoteId, merchantId, eventType, amountUsdCents, ...)

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 [email protected]. Discovery, catalogue and trust-fabric reads need no credential.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "lenderId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$"
    },
    "quoteId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64
    },
    "merchantId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9_-]{0,62}[a-zA-Z0-9])?$"
    },
    "eventType": {
      "type": "string",
      "enum": [
        "PAID",
        "PARTIAL",
        "MISSED"
      ]
    },
    "amountUsdCents": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000000
    },
    "occurredAtIso": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64
    },
    "evidence": {
      "type": "string",
      "maxLength": 1024
    },
    "agentBearer": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "lenderId",
    "quoteId",
    "merchantId",
    "eventType",
    "amountUsdCents",
    "occurredAtIso"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada38 herramientas
verificadoversión no registrada38 herramientas