Conduit Agentic Commerce
Search multi-merchant supply, checkout, and track orders via MCP.
사용해야 할까요
품질 및 안전성
발견 사항 (2)
- LOWorder_track에서
- LOWorder_dispute에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"conduit": {
"url": "https://mcp.aiconduit.app/mcp"
}
}
}원격 엔드포인트
https://mcp.aiconduit.app/mcpstreamable-http할 수 있는 일
도구 목록
도구 (25)
🟡agent_create(public_key, handle, payment_rails, default_destination, business_profile, ...)
Register an agent (ES256 P-256 public JWK JSON string + optional payment rails + destination). BEFORE: list ~/.conduit identity files — if any exist, reuse agent_id (do NOT register again unless the human asked for a new agent). AFTER: write persist.path (version, agent_id, public_key, private_key as JWKs; also handle, friendly_name, role_description, human_description; chmod 0600; write ~/.conduit/active). Then agent_update with default_destination+postcode before supply_search. Optional friendly_name / human_description / role_description / avatar only if the human stated them — never invent; omit avatar and the server assigns a random invader+gradient. Omit handle to auto-generate (e.g. parcel-watcher-12).
입력 스키마
{
"type": "object",
"properties": {
"public_key": {
"type": "string",
"description": "ES256 P-256 public JWK as a JSON string (kty=EC, crv=P-256, x, y). Not PEM, hex, or base64url-wrapped JSON. Keep the matching private JWK only in ~/.conduit/{handle}.credentials.json."
},
"handle": {
"description": "Optional display handle (lowercase kebab); omit to auto-generate e.g. parcel-watcher-12",
"type": "string"
},
"payment_rails": {
"description": "Optional rail keys to seed, e.g. [\"x402\"]",
"type": "array",
"items": {
"type": "string"
}
},
"default_destination": {
"description": "Where orders ship. postcode + country is enough for supply_search and delivery estimates; add address, locality and region so checkout links arrive prefilled.",
"type": "object",
"properties": {
"country": {
"description": "ISO country code, e.g. US",
"type": "string"
},
"postcode": {
"description": "Postal / ZIP code. Enough for search and delivery estimates",
"type": "string"
},
"postal_code": {
"description": "Alias of postcode",
"type": "string"
},
"address": {
"description": "Street address. Needed for checkout to prefill",
"type": "string"
},
"street_address": {
"description": "Alias of address",
"type": "string"
},
"locality": {
"description": "City. Needed for checkout to prefill",
"type": "string"
},
"city": {
"description": "Alias of locality",
"type": "string"
},
"region": {
"description": "State / province",
"type": "string"
},
"state": {
"description": "Alias of region",
"type": "string"
},
"name": {
"description": "Recipient name; many merchants require it to fulfil",
"type": "string"
},
"email": {
"description": "Buyer contact email for the merchant order",
"type": "string"
},
"phone": {
"description": "Buyer phone in E.164, e.g. +12125550188",
"type": "string"
}
},
"additionalProperties": {}
},
"business_profile": {
"description": "Optional business profile metadata object"
},
"preferences": {
"description": "Optional agent preference bag"
},
"friendly_name": {
"description": "Human-facing label (≠ handle), e.g. EU Restock Bot",
"type": "string"
},
"human_description": {
"description": "Description shown to humans on the org dashboard",
"type": "string"
},
"role_description": {
"description": "Self-instruction for this agent only, e.g. manage EU supplies",
"type": "string"
},
"avatar": {
"description": "Identity mark. Omit unless the human chose it — server assigns a random invader+gradient. { kind:\"glyph\", glyph:\"invader\"|emoji, tint?:invader color, gradient } or { kind:\"image\", src }. Tint only for invader. Do not store in the credentials file."
}
},
"required": [
"public_key"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"agent_id": {
"type": "string"
},
"handle": {
"type": "string"
},
"friendly_name": {
"type": "string"
},
"human_description": {
"type": "string"
},
"role_description": {
"type": "string"
},
"avatar": {},
"reputation": {},
"payment_rails": {
"type": "array",
"items": {
"type": "string"
}
},
"default_destination": {},
"effective_destination": {},
"destination_source": {
"type": "string"
},
"organization_id": {
"type": "string"
},
"organization": {},
"open_orders": {},
"persist": {},
"permissions": {
"type": "array",
"items": {
"type": "string"
}
},
"public_key": {
"type": "string"
},
"business_profile": {},
"preferences": {},
"created_at": {
"type": "string"
},
"total_orders": {},
"mandates": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"challenge": {
"type": "string"
},
"nonce": {
"type": "string"
},
"terminal": {
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟡agent_authenticate(agent_id, nonce, signature)
Two-step re-auth. Call with agent_id only → ES256-sign nonce → call again with nonce+signature. Prefer keys from ~/.conduit ({handle}.credentials.json or legacy credentials.json; CONDUIT_CREDENTIALS_PATH pins one file). After success, merge name/role/description into that file; never overwrite private_key; keep session_token in memory. Do not agent_create if identity files already exist unless the human asked for a new agent.
입력 스키마
{
"type": "object",
"properties": {
"agent_id": {
"type": "string",
"description": "Agent id from the chosen ~/.conduit credentials file, e.g. agt_..."
},
"nonce": {
"description": "Challenge nonce from the first agent_authenticate call (omit to request one)",
"type": "string"
},
"signature": {
"description": "Signature of the nonce with the agent private key (omit with nonce to get challenge)",
"type": "string"
}
},
"required": [
"agent_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"agent_id": {
"type": "string"
},
"handle": {
"type": "string"
},
"friendly_name": {
"type": "string"
},
"human_description": {
"type": "string"
},
"role_description": {
"type": "string"
},
"avatar": {},
"reputation": {},
"payment_rails": {
"type": "array",
"items": {
"type": "string"
}
},
"default_destination": {},
"effective_destination": {},
"destination_source": {
"type": "string"
},
"organization_id": {
"type": "string"
},
"organization": {},
"open_orders": {},
"persist": {},
"permissions": {
"type": "array",
"items": {
"type": "string"
}
},
"public_key": {
"type": "string"
},
"business_profile": {},
"preferences": {},
"created_at": {
"type": "string"
},
"total_orders": {},
"mandates": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"challenge": {
"type": "string"
},
"nonce": {
"type": "string"
},
"terminal": {
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟡agent_update(agent_id, session_token, handle, payment_rails, default_destination, ...)
Patch handle, rails, default_destination (postcode required for ships-to), friendly_name, human_description, role_description, avatar (glyph+gradient or small image), business profile, or preferences. Set avatar only if the human chose it. Does not accept permissions — a human enables capabilities in Hub Agent settings.
입력 스키마
{
"type": "object",
"properties": {
"agent_id": {
"type": "string",
"description": "Agent id to patch, e.g. agt_..."
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
},
"handle": {
"description": "New display handle (lowercase kebab)",
"type": "string"
},
"payment_rails": {
"description": "Replacement rail key list",
"type": "array",
"items": {
"type": "string"
}
},
"default_destination": {
"description": "Where orders ship. postcode + country is enough for accurate search; add address, locality and region so checkout links arrive prefilled instead of blank.",
"type": "object",
"properties": {
"country": {
"description": "ISO country code, e.g. US",
"type": "string"
},
"postcode": {
"description": "Postal / ZIP code. Enough for search and delivery estimates",
"type": "string"
},
"postal_code": {
"description": "Alias of postcode",
"type": "string"
},
"address": {
"description": "Street address. Needed for checkout to prefill",
"type": "string"
},
"street_address": {
"description": "Alias of address",
"type": "string"
},
"locality": {
"description": "City. Needed for checkout to prefill",
"type": "string"
},
"city": {
"description": "Alias of locality",
"type": "string"
},
"region": {
"description": "State / province",
"type": "string"
},
"state": {
"description": "Alias of region",
"type": "string"
},
"name": {
"description": "Recipient name; many merchants require it to fulfil",
"type": "string"
},
"email": {
"description": "Buyer contact email for the merchant order",
"type": "string"
},
"phone": {
"description": "Buyer phone in E.164, e.g. +12125550188",
"type": "string"
}
},
"additionalProperties": {}
},
"business_profile": {
"description": "Business profile patch"
},
"preferences": {
"description": "Preferences patch"
},
"friendly_name": {
"description": "Human-facing label (≠ handle), e.g. EU Restock Bot",
"type": "string"
},
"human_description": {
"description": "Description shown to humans on the org dashboard",
"type": "string"
},
"role_description": {
"description": "Self-instruction for this agent only, e.g. manage EU supplies",
"type": "string"
},
"avatar": {
"description": "Identity mark. Omit unless the human chose it — server assigns a random invader+gradient. { kind:\"glyph\", glyph:\"invader\"|emoji, tint?:invader color, gradient } or { kind:\"image\", src }. Tint only for invader. Do not store in the credentials file."
}
},
"required": [
"agent_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"agent_id": {
"type": "string"
},
"handle": {
"type": "string"
},
"friendly_name": {
"type": "string"
},
"human_description": {
"type": "string"
},
"role_description": {
"type": "string"
},
"avatar": {},
"reputation": {},
"payment_rails": {
"type": "array",
"items": {
"type": "string"
}
},
"default_destination": {},
"effective_destination": {},
"destination_source": {
"type": "string"
},
"organization_id": {
"type": "string"
},
"organization": {},
"open_orders": {},
"persist": {},
"permissions": {
"type": "array",
"items": {
"type": "string"
}
},
"public_key": {
"type": "string"
},
"business_profile": {},
"preferences": {},
"created_at": {
"type": "string"
},
"total_orders": {},
"mandates": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"challenge": {
"type": "string"
},
"nonce": {
"type": "string"
},
"terminal": {
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢agent_organization(agent_id, session_token)
Read the linked organization (name, slug, country, default address) and members (user_id, name, role, email) for an agent. Returns org_not_linked when organization_id is unset — do not invent join_org. Use members to target agent_notify.
입력 스키마
{
"type": "object",
"properties": {
"agent_id": {
"type": "string",
"description": "Agent id whose linked organization to read"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
}
},
"required": [
"agent_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"organization": {},
"members": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"connectors": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}⚪agent_notify(agent_id, session_token, to, title, body, ...)
Email Hub users in this agent’s linked organization (never addresses outside the org). to=all or { user_id } / { role } / { email } matching agent_organization members. Optional actions (Hub URLs only), severity, idempotency_key. Channel is email.
입력 스키마
{
"type": "object",
"properties": {
"agent_id": {
"type": "string",
"description": "Linked agent sending the message"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
},
"to": {
"anyOf": [
{
"type": "string",
"const": "all",
"description": "Every current member of the linked org"
},
{
"type": "object",
"properties": {
"user_id": {
"type": "string",
"description": "One org member user_id from agent_organization"
}
},
"required": [
"user_id"
]
},
{
"type": "object",
"properties": {
"user_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Org member user_ids from agent_organization"
}
},
"required": [
"user_ids"
]
},
{
"type": "object",
"properties": {
"role": {
"type": "string",
"description": "Org role: OWNER, OPS, FINANCE, DEVELOPER, or VIEWER"
}
},
"required": [
"role"
]
},
{
"type": "object",
"properties": {
"roles": {
"type": "array",
"items": {
"type": "string"
},
"description": "One or more org roles"
}
},
"required": [
"roles"
]
},
{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Exact member email from agent_organization — not an arbitrary address"
}
},
"required": [
"email"
]
}
],
"description": "Who to notify: \"all\", { user_id }, { user_ids }, { role }, { roles }, or { email } matching an org member. Never an address outside the org."
},
"title": {
"type": "string",
"description": "Subject line, max 120 characters"
},
"body": {
"type": "string",
"description": "Plain-text body, max 4000 characters. Conduit wraps HTML; do not send markup."
},
"channel": {
"description": "Delivery channel. Email only — omit or pass email",
"type": "string"
},
"severity": {
"description": "info (default), warning, or urgent — affects subject prefix and accent",
"type": "string",
"enum": [
"info",
"warning",
"urgent"
]
},
"actions": {
"description": "Optional buttons, max 3. Hosts outside Conduit are rejected.",
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Button label, e.g. View Invoices"
},
"type": {
"description": "Button style (default primary)",
"type": "string",
"enum": [
"primary",
"danger",
"ghost"
]
},
"url": {
"type": "string",
"description": "https URL on hub.aiconduit.app, aiconduit.app, or mcp.aiconduit.app, or a Hub path like /invoices"
}
},
"required": [
"title",
"url"
]
}
},
"idempotency_key": {
"description": "Replay key — same agent + key returns the original notify_id without sending again",
"type": "string"
},
"order_id": {
"description": "Optional order correlation",
"type": "string"
},
"search_id": {
"description": "Optional search correlation",
"type": "string"
},
"dry_run": {
"description": "If true, resolve recipients and from-address without sending or storing",
"type": "boolean"
}
},
"required": [
"agent_id",
"to",
"title",
"body"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"notify_id": {
"type": "string"
},
"channel": {
"type": "string"
},
"delivered": {
"type": "number"
},
"failed": {
"type": "number"
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"from": {
"type": "string"
},
"dry_run": {
"type": "boolean"
},
"idempotent_replay": {
"type": "boolean"
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟡agent_outreach(agent_id, session_token, to, title, body, ...)
Email outside addresses (suppliers, carriers). to is a string email, { email }, or { emails } (max 5). Not to=all and not a Hub user_id / role — those are agent_notify. Linked agents set Reply-To to an org member (default OWNER). No action buttons. Channel is email.
입력 스키마
{
"type": "object",
"properties": {
"agent_id": {
"type": "string",
"description": "Authenticated agent sending the note"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
},
"to": {
"anyOf": [
{
"type": "string",
"description": "One outside email, e.g. [email protected]"
},
{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "One outside email"
}
},
"required": [
"email"
]
},
{
"type": "object",
"properties": {
"emails": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 5 outside emails"
}
},
"required": [
"emails"
]
}
],
"description": "Outside address(es): a string email, { email }, or { emails } (max 5). Not to=all and not a Hub user_id / role — those are agent_notify."
},
"title": {
"type": "string",
"description": "Subject line, max 120 characters"
},
"body": {
"type": "string",
"description": "Plain-text body, max 4000 characters. URLs stay escaped text, not buttons."
},
"channel": {
"description": "Delivery channel. Email only — omit or pass email",
"type": "string"
},
"reply_to": {
"description": "Linked only: who receives replies. { email } or { role } matching a member. Omit to default to the OWNER. Unlinked agents have no Reply-To.",
"anyOf": [
{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Org member email from agent_organization"
}
},
"required": [
"email"
]
},
{
"type": "object",
"properties": {
"role": {
"type": "string",
"description": "Org role, typically OWNER or OPS"
}
},
"required": [
"role"
]
}
]
},
"idempotency_key": {
"description": "Replay key — same agent + key returns the original outreach_id without sending again",
"type": "string"
},
"order_id": {
"description": "Optional order correlation",
"type": "string"
},
"search_id": {
"description": "Optional search correlation",
"type": "string"
},
"dry_run": {
"description": "If true, resolve recipients and from-address without sending or storing",
"type": "boolean"
}
},
"required": [
"agent_id",
"to",
"title",
"body"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"outreach_id": {
"type": "string"
},
"channel": {
"type": "string"
},
"delivered": {
"type": "number"
},
"failed": {
"type": "number"
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"from": {
"type": "string"
},
"reply_to": {
"type": "string"
},
"dry_run": {
"type": "boolean"
},
"idempotent_replay": {
"type": "boolean"
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟡agent_report_issue(message, kind, agent_id, session_token, tool, ...)
Report unexpected tool errors or confusing Conduit outcomes for AX review (agent_report_issue — not order_feedback). Pass message (required), optional kind=bug|confusing|wrong_data|blocked, plus agent_id, tool, error, detail, search_id, order_id, session_id, and/or context. Dedupes open reports with the same tool+error+correlation. Does not change reputation.
입력 스키마
{
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Required: what went wrong or what confused you (expected vs actual). Keep actionable. This is agent_report_issue — not order_feedback."
},
"kind": {
"description": "Triage kind (default confusing): bug | confusing | wrong_data | blocked",
"type": "string",
"enum": [
"bug",
"confusing",
"wrong_data",
"blocked"
]
},
"agent_id": {
"description": "Agent id from credentials when available (omit placeholders like \"agent_id\")",
"type": "string"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
},
"tool": {
"description": "MCP tool that failed or confused you, e.g. supply_search or order_execute",
"type": "string"
},
"error": {
"description": "Error code from the prior tool response when present, e.g. offer_not_in_cache",
"type": "string"
},
"detail": {
"description": "Optional longer detail (response excerpt, unexpected field). Do not include private_key.",
"type": "string"
},
"search_id": {
"description": "search_id for correlation when the issue is search-related",
"type": "string"
},
"order_id": {
"description": "order_id for correlation when the issue is order-related",
"type": "string"
},
"session_id": {
"description": "Optional session id; Conduit also picks up x-conduit-session-id from the transport",
"type": "string"
},
"context": {
"description": "Optional structured extras (args summary, badge, etc.). Secrets are stripped.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"message"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"report_id": {
"type": "string"
},
"status": {
"type": "string"
},
"kind": {
"type": "string"
},
"already_open": {
"type": "boolean"
},
"agent_id": {
"type": "string"
},
"session_id": {
"type": "string"
},
"tool": {
"type": "string"
},
"reported_error": {
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢payment_methods(agent_id, session_token, action, rail)
List or enable agent payment methods (action=list|enable) with friendly labels. Defaults: cod + x402. invoice (B2B) is coming_soon. bank_card is handoff-only.
입력 스키마
{
"type": "object",
"properties": {
"agent_id": {
"type": "string",
"description": "Agent id whose methods to list or enable"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
},
"action": {
"type": "string",
"enum": [
"list",
"enable"
],
"description": "list = enumerate rails; enable = turn on one rail"
},
"rail": {
"description": "Rail key required when action=enable, e.g. x402 (not bank_card vault)",
"type": "string"
}
},
"required": [
"agent_id",
"action"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"methods": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"rail_key": {
"type": "string"
},
"status": {
"type": "string"
},
"label": {
"type": "string"
},
"approval_url": {
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🔴payment_mandate(action, agent_id, session_token, mandate_id, scope, ...)
AP2 spend mandates. action=request (needs scope) → approval_url; list (includes remaining, window_resets_at, coverage); update (mandate_id+scope); revoke (mandate_id). update NEVER approves. Widening returns an ACTIVE mandate to PENDING_HUMAN_APPROVAL; narrowing keeps whatever status it already had. monthly_cap is a rolling 30-day window from create. Same category set as a live mandate replaces it at approval and keeps this period's spend. No covering mandate at checkout is handoff, not an error.
입력 스키마
{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"request",
"list",
"update",
"revoke"
],
"description": "request = create mandate (needs scope); list = enumerate; update = change scope (needs mandate_id+scope); revoke = revoke (needs mandate_id)"
},
"agent_id": {
"type": "string",
"description": "Owning agent id"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
},
"mandate_id": {
"description": "Mandate id required for update/revoke",
"type": "string"
},
"scope": {
"description": "Spend limits — required for action=request and action=update",
"type": "object",
"properties": {
"max_per_order": {
"description": "Max USD (or order currency) per single order, e.g. 50",
"type": "number"
},
"monthly_cap": {
"description": "Max spend in a rolling 30-day window from when the mandate was created, e.g. 500",
"type": "number"
},
"categories": {
"description": "Optional category allowlist, Google Product Taxonomy level 1. Omit or pass [] for a General mandate (catch-all for unmatched and unclassified offers). Accepts the slug, the label, or the GPT numeric id. Slugs: electronics, office-supplies, business-and-industrial, hardware, furniture, home-and-garden, cameras-and-optics, software, media, apparel-and-accessories, luggage-and-bags, health-and-beauty, food-beverages-and-tobacco, sporting-goods, toys-and-games, baby-and-toddler, animals-and-pet-supplies, vehicles-and-parts, arts-and-entertainment, religious-and-ceremonial, mature. Most specific covering mandate wins; unknown category uses General; no covering mandate is handoff.",
"type": "array",
"items": {
"type": "string"
}
}
}
},
"expires": {
"description": "Optional ISO-8601 expiry, e.g. 2026-12-31T00:00:00Z",
"type": "string"
}
},
"required": [
"action",
"agent_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"mandates": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"mandate_id": {
"type": "string"
},
"status": {
"type": "string"
},
"applied": {
"type": "string"
},
"approval_url": {
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢supply_search(query, quantity, budget, payable_with, country, ...)
Multi-provider discovery (live REAL merchants by default). Returns a ranked page (default limit=30, max 100) with total/has_more/next_offset. Follow next.args (search_id+offset+limit) to page without re-fanout. Optional fetch_limit (max 300) deepens the upstream pull on new searches. Pass include_sandbox=true only to append DEMO/SANDBOX test merchants at the bottom (test_offer=true). Always pass agent_id for mandate-aware badges. Carry search_id through supply_details / order_execute / order_feedback.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"description": "Product search query, e.g. USB-C charger 65W. Required for a new search; omit when paging with search_id + offset",
"type": "string"
},
"quantity": {
"description": "Desired quantity (default 1)",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"budget": {
"description": "Max total budget — number means USD; or { amount, currency }",
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0,
"description": "Legacy: max total budget in USD"
},
{
"type": "object",
"properties": {
"amount": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Max total in major units"
},
"currency": {
"type": "string",
"minLength": 1,
"description": "ISO currency for budget, e.g. USD"
}
},
"required": [
"amount",
"currency"
],
"description": "Max total budget in the given currency (indicative FX for other currencies)"
}
]
},
"payable_with": {
"description": "Filter to rails the agent can pay with, e.g. [\"x402\"]",
"type": "array",
"items": {
"type": "string"
}
},
"country": {
"description": "ISO country for ships-to, e.g. US",
"type": "string"
},
"agent_id": {
"description": "Agent id for mandate-aware badges (always pass when available)",
"type": "string"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
},
"include_sandbox": {
"description": "Include DEMO/SANDBOX merchants (listed last, test_offer=true). Default false — live REAL merchants only. Use only when testing Conduit checkout flows.",
"type": "boolean"
},
"limit": {
"description": "Page size of ranked offers to return (default 30, max 100)",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"offset": {
"description": "0-based offset into the ranked set for this search_id (default 0). For page 2+, pass search_id from the prior response and follow next.args",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"fetch_limit": {
"description": "Optional override for per-merchant upstream pull (default max(20, limit*2), max 300). Ignored when paging via search_id+offset",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 300
},
"search_id": {
"description": "Resume paging into a prior ranked set (with offset>0, or offset 0 without query). New searches with query mint a fresh search_id",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"search_id": {
"type": "string"
},
"offers": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"recommended": {},
"degraded": {
"type": "boolean"
},
"withheld": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"badge_counts": {},
"partial": {},
"country": {
"type": "string"
},
"country_default": {
"anyOf": [
{
"type": "string"
},
{
"type": "boolean"
}
]
},
"include_sandbox": {
"type": "boolean"
},
"sandbox_included": {
"type": "number"
},
"total": {
"type": "number"
},
"limit": {
"type": "number"
},
"offset": {
"type": "number"
},
"has_more": {
"type": "boolean"
},
"next_offset": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢supply_details(supply_id, search_id, agent_id, session_token)
Re-reads one offer from the search cache and refreshes its badge/action against current mandate state. For most catalog offers the payload equals the object supply_search already returned, so skip this if you still hold that offer and only need its fields. Carries no shipping data: use supply_delivery for ETA and cost. Re-run supply_search if offer_not_in_cache.
입력 스키마
{
"type": "object",
"properties": {
"supply_id": {
"type": "string",
"description": "Offer supply id from supply_search results"
},
"search_id": {
"description": "search_id from supply_search for correlation",
"type": "string"
},
"agent_id": {
"description": "Agent id to refresh badge/action for mandate state",
"type": "string"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
}
},
"required": [
"supply_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"supply_id": {
"type": "string"
},
"payment_terms": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"title": {
"type": "string"
},
"badge": {
"type": "string"
},
"action": {
"type": "string"
},
"unit_price": {},
"price_total": {},
"currency": {
"type": "string"
},
"supplier": {},
"payment_rails": {},
"delivery_options": {},
"aes": {}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢supply_options(supply_id, agent_id, session_token)
Lists the selectable options (size, color, pack) for an offer whose has_options=true, with one variant per combination. Each variant carries its OWN supply_id, price and availability: to buy a chosen option, call order_execute with that variant's supply_id, not the one you searched with. Reads the merchant storefront live, so call it only when a person is actually choosing. Returns variants_not_found when the offer is not in cache or the storefront cannot be read. A single-variant product returns options:[] variants:[].
입력 스키마
{
"type": "object",
"properties": {
"supply_id": {
"type": "string",
"description": "Offer supply id whose product options to list (has_options=true on the offer)"
},
"agent_id": {
"description": "Agent id, for permission and analytics",
"type": "string"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
}
},
"required": [
"supply_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"options": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"variants": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢supply_delivery(supply_id, agent_id, session_token, quantity, country, ...)
Non-committing checkout probe for shipping ETA/cost. Uses agent default_destination, else linked org default address, or country override. status describes how far the merchant checkout got: ready_for_complete (priced and completable), incomplete (merchant returned partial rates, quote may firm up at checkout), requires_escalation (merchant wants a human at checkout, so this offer is handoff-only however its badge reads). needs_interaction=true means the same. None of these block a handoff; they predict whether autonomous completion can work.
입력 스키마
{
"type": "object",
"properties": {
"supply_id": {
"type": "string",
"description": "Offer supply id from supply_search / supply_details"
},
"agent_id": {
"description": "Agent id — uses agent destination else org default when country omitted",
"type": "string"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
},
"quantity": {
"description": "Units to price shipping for (default 1)",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"country": {
"description": "ISO country override, e.g. US (else agent/org destination)",
"type": "string"
},
"postal_code": {
"description": "Postal/ZIP override for the probe destination",
"type": "string"
},
"region": {
"description": "Optional region/state override",
"type": "string"
},
"address": {
"description": "Street override. Many merchants will not quote shipping without it.",
"type": "string"
},
"locality": {
"description": "City override. Needed with street for a real delivery quote.",
"type": "string"
}
},
"required": [
"supply_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"supply_id": {
"type": "string"
},
"shippable": {
"type": "boolean"
},
"available": {
"type": "boolean"
},
"eta_text": {
"type": "string"
},
"shipping_cost": {
"type": "number"
},
"options": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"payment_rails": {},
"currency": {
"type": "string"
},
"needs_interaction": {
"type": "boolean"
},
"status": {
"type": "string"
},
"note": {
"type": "string"
},
"country": {
"type": "string"
},
"postal_code": {
"type": "string"
},
"address_status": {
"type": "string"
},
"placeholder_street": {
"type": "boolean"
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}⚪order_execute(agent_id, session_token, supply_id, quantity, pay_with, ...)
Handoff or autonomous checkout. Handoff continue_url is a Conduit /handoff/{org_slug}/{order_id} link: open it as returned (records the open, then redirects to the merchant). Autonomous needs badge payable_now (covering mandate fits). No covering mandate, or a spent covering budget, still returns a handoff with continue_url (handoff_reason). Use idempotency_key. Prefer supply_delivery when only comparing delivery.
입력 스키마
{
"type": "object",
"properties": {
"agent_id": {
"type": "string",
"description": "Owning agent id"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
},
"supply_id": {
"type": "string",
"description": "Offer supply id to purchase"
},
"quantity": {
"description": "Units to buy (default 1)",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"pay_with": {
"description": "Rail key to pay with when multiple are enabled",
"type": "string"
},
"payment_term_id": {
"description": "Payment term id from supply_details payment_terms[] (e.g. net 30). Omit to pay immediately",
"type": "string"
},
"carrier": {
"description": "The shipping rate to buy, as the option's own `title` from supply_delivery. Conduit selects it on the merchant checkout, so the buyer opens the page on that rate instead of the merchant's default, which is the cheapest one. A title the merchant does not quote for this address leaves its default in place, and the response says so via shipping_selected.",
"type": "string"
},
"search_id": {
"description": "search_id from supply_search for correlation",
"type": "string"
},
"idempotency_key": {
"description": "Client idempotency key — reuse to safely retry the same execute",
"type": "string"
}
},
"required": [
"agent_id",
"supply_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"supplier_order": {},
"purchase_draft": {},
"order_id": {
"type": "string"
},
"status": {
"type": "string"
},
"quantity": {
"type": "number"
},
"supply_id": {
"type": "string"
},
"continue_url": {
"type": "string"
},
"handoff_quality": {
"type": "string"
},
"address_status": {
"type": "string"
},
"note": {
"type": "string"
},
"idempotent_replay": {
"type": "boolean"
},
"simulated": {
"type": "boolean"
},
"bill_total": {},
"bill_breakdown": {},
"rail_key": {
"type": "string"
},
"pay_with": {
"type": "string"
},
"external_checkout_id": {
"type": "string"
},
"handoff_endpoint": {
"type": "string"
},
"shortfall": {},
"product": {},
"supplier": {},
"created_at": {
"type": "string"
},
"shipping_selected": {
"type": "boolean"
},
"shipping_option": {
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢order_list(agent_id, session_token, status, open_only)
List orders for an agent ({ orders }). Optional status or open_only filter.
입력 스키마
{
"type": "object",
"properties": {
"agent_id": {
"type": "string",
"description": "Owning agent id whose orders to list"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
},
"status": {
"description": "Optional status filter: PENDING, CONFIRMED, IN_TRANSIT, DELIVERED, ABANDONED (or CANCELLED), FAILED, DISPUTED",
"type": "string"
},
"open_only": {
"description": "If true, only in-flight orders (PENDING, CONFIRMED, IN_TRANSIT). Ignored when status is set.",
"type": "boolean"
}
},
"required": [
"agent_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"orders": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢order_track(order_id, agent_id, session_token)
Honest deal-type-aware status (never fabricates carrier scans). Requires owning agent_id.
입력 스키마
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "Order id to track"
},
"agent_id": {
"type": "string",
"description": "Owning agent id (required for authorization)"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
}
},
"required": [
"order_id",
"agent_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"supplier_order": {},
"purchase_draft": {},
"order_id": {
"type": "string"
},
"status": {
"type": "string"
},
"trackable": {
"type": "boolean"
},
"tracking": {
"type": "string"
},
"carrier": {
"type": "string"
},
"tracking_id": {
"type": "string"
},
"continue_url": {
"type": "string"
},
"address_status": {
"type": "string"
},
"tracking_source": {
"type": "string"
},
"status_source": {
"type": "string"
},
"agent_status_locked": {
"type": "boolean"
},
"merchant_observed": {},
"handoff_expires_at": {
"type": "string"
},
"checkout_id": {
"type": "string"
},
"recovery": {},
"product": {}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢order_events(order_id, agent_id, session_token)
Lifecycle timeline — transitions only. Pair with order_track. Requires owning agent_id.
입력 스키마
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "Order id whose lifecycle events to list"
},
"agent_id": {
"type": "string",
"description": "Owning agent id (required for authorization)"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
}
},
"required": [
"order_id",
"agent_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"order_id": {
"type": "string"
},
"events": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟡order_update_status(order_id, agent_id, session_token, status, note, ...)
Agent manual correction or degraded handoff recovery. note required except cancelled. Owning agent_id required.
입력 스키마
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "Order id to update"
},
"agent_id": {
"type": "string",
"description": "Owning agent id (required for authorization)"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
},
"status": {
"type": "string",
"description": "New status, e.g. PENDING, CONFIRMED, SHIPPED, DELIVERED, CANCELLED"
},
"note": {
"description": "Required note except when status=CANCELLED",
"type": "string"
},
"tracking_id": {
"description": "Carrier tracking id when recovering handoff",
"type": "string"
},
"carrier": {
"description": "Carrier name when attaching tracking",
"type": "string"
},
"tracking_url": {
"description": "Carrier's public tracking page for tracking_id, when you have it. Never invent one.",
"type": "string",
"format": "uri"
},
"external_checkout_id": {
"description": "Merchant checkout id to recover degraded handoff polling",
"type": "string"
},
"handoff_endpoint": {
"description": "Merchant handoff/status endpoint URL for poll recovery",
"type": "string"
},
"search_id": {
"description": "Optional search_id for analytics correlation",
"type": "string"
}
},
"required": [
"order_id",
"agent_id",
"status"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"order_id": {
"type": "string"
},
"status": {
"type": "string"
},
"quantity": {
"type": "number"
},
"continue_url": {
"type": "string"
},
"tracking_id": {
"type": "string"
},
"carrier": {
"type": "string"
},
"external_checkout_id": {
"type": "string"
},
"handoff_endpoint": {
"type": "string"
},
"agent_status_locked": {
"type": "boolean"
},
"merchant_observed": {}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢order_dispute(order_id, agent_id, session_token)
Refund/chargeback/report paths for an order. Requires owning agent_id.
입력 스키마
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "Order id to resolve refund/chargeback/report paths for"
},
"agent_id": {
"type": "string",
"description": "Owning agent id (required for authorization)"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
}
},
"required": [
"order_id",
"agent_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"order_id": {
"type": "string"
},
"refund": {},
"chargeback": {},
"report_to_conduit": {}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}⚪order_feedback(order_id, agent_id, session_token, outcome, quality, ...)
Attest delivery outcome (outcome=on_time|late|never_arrived|damaged|wrong_item). Requires owning agent_id. Can supersede a system-derived score once; a second agent attestation returns already_recorded. Poor outcomes next→order_dispute. Omit quality/carrier_rating if unknown.
입력 스키마
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "Order id to attest"
},
"agent_id": {
"type": "string",
"description": "Owning agent id (required for authorization)"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
},
"outcome": {
"type": "string",
"enum": [
"on_time",
"late",
"never_arrived",
"damaged",
"wrong_item"
],
"description": "Observed fulfillment outcome. Sets status (on_time/late→DELIVERED, damaged/wrong_item→DISPUTED, never_arrived→FAILED) and reputation."
},
"quality": {
"description": "Product quality 1-5 — omit if unknown (do not invent)",
"type": "number",
"minimum": 1,
"maximum": 5
},
"carrier_rating": {
"description": "Carrier rating 1-5 — omit if unknown; used in reputation when provided",
"type": "number",
"minimum": 1,
"maximum": 5
},
"notes": {
"description": "Free-text delivery/quality notes",
"type": "string"
},
"search_id": {
"description": "Optional search_id for analytics correlation",
"type": "string"
}
},
"required": [
"order_id",
"agent_id",
"outcome"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"order_id": {
"type": "string"
},
"already_recorded": {
"type": "boolean"
},
"superseded": {
"type": "boolean"
},
"outcome": {},
"status": {
"type": "string"
},
"updated": {}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢inventory_levels(agent_id, session_token, skus, query, fresh, ...)
What your organization has on hand, by location, in its own connected system (ERP). Pass skus or query. Every number carries as_of and basis (live | memo | cached) — say how old it is, do not imply it is now. Needs inventory permission. This is your OWN stock; a supplier's stock is supply_availability.
입력 스키마
{
"type": "object",
"properties": {
"agent_id": {
"type": "string",
"description": "Agent id; its organization owns the connected system"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
},
"skus": {
"description": "Item codes in your own system, e.g. [\"CART-6040\"]. Pass skus or query",
"type": "array",
"items": {
"type": "string"
}
},
"query": {
"description": "Free-text item search in your own system, e.g. \"carton\"",
"type": "string"
},
"fresh": {
"description": "Ask the system now instead of reading the last value (slower, rate limited)",
"type": "boolean"
},
"connection_id": {
"description": "Which connected system, when the org has several",
"type": "string"
}
},
"required": [
"agent_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"availability": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"as_of": {
"type": "string"
},
"basis": {
"type": "string"
},
"freshness": {
"type": "string"
},
"system": {
"type": "string"
},
"connection_id": {
"type": "string"
},
"connections": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"could_not_reach": {
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢inventory_replenishment(agent_id, session_token, location, fresh, connection_id)
Items below their minimum in your own system, least days of cover first, with what is already inbound and the usual vendor and last price. Each row carries a search_hint: pass its query and quantity straight to supply_search, then supply_availability before ordering. Optional location scopes to one warehouse. Needs inventory permission.
입력 스키마
{
"type": "object",
"properties": {
"agent_id": {
"type": "string",
"description": "Agent id; its organization owns the connected system"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
},
"location": {
"description": "Warehouse or store name to scope the worklist, e.g. \"Jebel Ali\". Omit for all",
"type": "string"
},
"fresh": {
"description": "Ask the system now instead of reading the last value",
"type": "boolean"
},
"connection_id": {
"description": "Which connected system, when the org has several",
"type": "string"
}
},
"required": [
"agent_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"rows": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"window": {},
"as_of": {
"type": "string"
},
"basis": {
"type": "string"
},
"freshness": {
"type": "string"
},
"provenance": {},
"system": {
"type": "string"
},
"connection_id": {
"type": "string"
},
"connections": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"next_to_watch": {},
"could_not_reach": {
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢inventory_suppliers(agent_id, session_token, skus, connection_id)
For items in your own system, the vendors on file and what you last paid, so a quote can be compared against history. Needs inventory permission. Does not contact any vendor.
입력 스키마
{
"type": "object",
"properties": {
"agent_id": {
"type": "string",
"description": "Agent id; its organization owns the connected system"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
},
"skus": {
"minItems": 1,
"type": "array",
"items": {
"type": "string"
},
"description": "Item codes in your own system whose usual vendors and last prices to read"
},
"connection_id": {
"description": "Which connected system, when the org has several",
"type": "string"
}
},
"required": [
"agent_id",
"skus"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"suppliers": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"as_of": {
"type": "string"
},
"basis": {
"type": "string"
},
"freshness": {
"type": "string"
},
"system": {
"type": "string"
},
"connection_id": {
"type": "string"
},
"connections": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}🟢supply_availability(supply_id, quantity, fresh, quote, agent_id, ...)
Whether one offer can fill a quantity: verdict can_fill | split | out_now | unknown, with what is on hand, what is inbound, and as_of + basis. Suppliers choose how precisely they share stock, so the verdict may come from a band or a yes/no rather than a number. fresh=true asks the supplier now (needs agent_id, rate limited per agent and per organization); without fresh it reads the last value. Call this before order_execute on any connector offer.
입력 스키마
{
"type": "object",
"properties": {
"supply_id": {
"type": "string",
"description": "Offer supply id from supply_search / supply_details"
},
"quantity": {
"description": "Quantity to fill (default 1)",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"fresh": {
"description": "Ask the supplier now rather than reading the last value. Needs agent_id, and is rate limited per agent and per organization",
"type": "boolean"
},
"quote": {
"description": "Also return the supplier's exact total with tax for this quantity, computed without saving anything. Needs agent_id and an account with the supplier",
"type": "boolean"
},
"agent_id": {
"description": "Agent id. Required for fresh, and it is what reveals your negotiated prices",
"type": "string"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
}
},
"required": [
"supply_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"supply_id": {
"type": "string"
},
"quantity": {
"type": "number"
},
"verdict": {},
"stock": {},
"locations": {},
"incoming": {},
"unit": {},
"as_of": {
"type": "string"
},
"basis": {
"type": "string"
},
"freshness": {
"type": "string"
},
"link_state": {
"type": "string"
},
"fresh_refused": {
"type": "boolean"
},
"could_not_reach": {
"type": "string"
},
"kind": {
"type": "string"
},
"quote": {},
"quote_error": {
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}⚪inventory_purchase_order(agent_id, session_token, order_id, connection_id)
After order_execute confirms a supplier order, record the matching DRAFT purchase order in your own system so the books match. Always a draft: a person confirms it there. Idempotent per order_id — calling twice returns the same draft, never a second one. Needs both inventory and checkout permission. Never creates a vendor or a product: lines that match nothing come back as unmatched_lines for a person to add.
입력 스키마
{
"type": "object",
"properties": {
"agent_id": {
"type": "string",
"description": "Agent id; needs both inventory and checkout permission"
},
"session_token": {
"description": "Session token from agent_authenticate — required whenever agent_id is passed",
"type": "string"
},
"order_id": {
"type": "string",
"description": "Conduit order id of a supplier order already placed with order_execute"
},
"connection_id": {
"description": "Which connected system, when the org has several",
"type": "string"
}
},
"required": [
"agent_id",
"order_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}출력 스키마
{
"type": "object",
"properties": {
"error": {
"type": "string"
},
"hint": {
"type": "string"
},
"next": {
"type": "object",
"properties": {
"tool": {
"type": "string"
},
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"required": [
"tool"
],
"additionalProperties": false
},
"detail": {
"type": "string"
},
"order_id": {
"type": "string"
},
"external_name": {
"type": "string"
},
"vendor": {
"type": "string"
},
"supplier_order": {
"type": "string"
},
"quantity": {
"type": "number"
},
"unit": {},
"total": {
"type": "number"
},
"currency": {
"type": "string"
},
"draft": {
"type": "boolean"
},
"replayed": {
"type": "boolean"
},
"unmatched_lines": {
"type": "number"
}
},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": {}
}권장 프롬프트
supply_searchsupply_searchorder_listorder_listsupply_searchagent_create커뮤니티
증거