{"name":"Ottr Commerce Execution Agent","description":"Your AI's shopping account. Executes customer-authorised online purchases through merchant APIs and browser automation: send a structured purchase request, show the customer Ottr's approval link, and Ottr completes the checkout and returns a verified order. Also available over REST (OpenAPI 3.1) and MCP. Sandbox merchants complete without real charges.","supportedInterfaces":[{"url":"https://ottr.si/api/a2a","protocolBinding":"JSONRPC","protocolVersion":"1.0"},{"url":"https://ottr.si/api/a2a","protocolBinding":"JSONRPC","protocolVersion":"0.3"}],"provider":{"organization":"ottr","url":"https://ottr.si"},"version":"1.0.0","documentationUrl":"https://ottr.si/developers","iconUrl":"https://ottr.si/icon.png","capabilities":{"streaming":false,"pushNotifications":false,"extendedAgentCard":false,"extensions":[{"uri":"https://ottr.si/a2a/ext/customer-approval/v1","required":true,"description":"Purchases wait for the customer's own approval on OTTR.","params":{"rules":["Only the customer can approve a purchase, on their signed-in OTTR page. An agent can never approve.","Show the customer the total, retailer and delivery exactly as OTTR returns them.","Never ask the customer for card details. OTTR pays with a single-use virtual card the agent never sees.","Act only for customers who have issued your agent a customer reference, within the scopes they granted."]}}]},"securitySchemes":{"ottrAgentKey":{"httpAuthSecurityScheme":{"scheme":"Bearer","description":"An OTTR agent key (ottr_ak_...). Optional for search and compare; required for purchase skills, together with the customer reference (header OTTR-Customer-Ref, or message metadata.customerRef)."}},"ottrOAuth":{"oauth2SecurityScheme":{"description":"Customer account linking (OAuth 2.1 with PKCE). The access token identifies your agent and the customer.","flows":{"authorizationCode":{"authorizationUrl":"https://ottr.si/oauth/authorize","tokenUrl":"https://ottr.si/oauth/token","refreshUrl":"https://ottr.si/oauth/token","scopes":{"commerce.read":"Read purchases and merchants","commerce.checkout.prepare":"Prepare checkouts","commerce.purchase.request":"Request customer approval and execute approved purchases","commerce.orders.read":"Read orders","commerce.orders.cancel":"Cancel purchases"},"pkceRequired":true}},"oauth2MetadataUrl":"https://ottr.si/.well-known/oauth-authorization-server"}}},"securityRequirements":[{"schemes":{}},{"schemes":{"ottrAgentKey":{"list":[]}}},{"schemes":{"ottrOAuth":{"list":["commerce.read","commerce.checkout.prepare","commerce.purchase.request"]}}}],"defaultInputModes":["text/plain","application/json"],"defaultOutputModes":["application/json","text/plain"],"skills":[{"id":"search_products","name":"Search products","description":"Find products by description and budget. Send plain text (\"wireless headphones under £250\") or data { \"skill\": \"search_products\", \"query\": \"...\", \"max_price\": 250 }. Returns offers with offer_id, price, delivery and whether OTTR can buy them. No key needed.","tags":["shopping","search","price comparison"],"examples":["Find wireless noise cancelling headphones under £250"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"]},{"id":"compare_products","name":"Compare products","description":"Compare two to five offers side by side. Data { \"skill\": \"compare_products\", \"offer_ids\": [\"...\"] }. No key needed.","tags":["shopping","comparison"],"examples":["Compare these two offers"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"]},{"id":"purchase","name":"Prepare a purchase for customer approval","description":"Data { \"skill\": \"purchase\", \"offer_id\": \"...\", \"quantity\": 1 }. OTTR prepares the purchase and sends the customer a secure approval request. The task waits in auth-required until the customer approves, then works through funding and checkout to completed (with the order reference), or failed. Poll with GetTask. Requires an OTTR agent key and the customer's reference.","tags":["shopping","checkout","payments"],"examples":["Buy offer cmv... for my customer"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"]},{"id":"prepare_purchase","name":"Prepare Purchase","description":"Data { \"skill\": \"prepare_purchase\", \"request_id\": \"REQ-1\", \"merchant\": \"example-retailer.com\", \"product\": { \"url\": \"https://...\", \"size\": \"UK 10\", \"quantity\": 1 }, \"purchase_constraints\": { \"maximum_total_amount\": 150, \"currency\": \"GBP\" } } (same schema as POST /v1/commerce/purchases). Ottr verifies the product and prices the checkout. The task moves to auth-required with the customer approval link; after the customer approves on Ottr it works through payment and checkout to completed (with the verified order) or failed. Requires an OTTR agent key and the customer's reference.","tags":["commerce","checkout","purchase"],"examples":["Buy these trainers for my customer, at most £150"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"]},{"id":"execute_purchase","name":"Execute Purchase","description":"Data { \"skill\": \"execute_purchase\", \"purchase_id\": \"pur_...\" }. Proceeds with a purchase the customer approved on Ottr; refused otherwise (approval is verified by Ottr, never taken from the request). Requires an OTTR agent key and the customer's reference.","tags":["commerce","checkout"],"examples":["Complete purchase pur_..."],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"]},{"id":"track_purchase","name":"Track Purchase","description":"Data { \"skill\": \"track_purchase\", \"purchase_id\": \"pur_...\" }, or GetTask with the task id. Returns the purchase status, approval, order and failure details. Requires an OTTR agent key and the customer's reference.","tags":["commerce","tracking"],"examples":["Status of purchase pur_..."],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"]},{"id":"order_status","name":"Order status","description":"Data { \"skill\": \"order_status\", \"order_id\": \"...\" } (order id or merchant reference). Returns status, shipment and refunds. Requires an OTTR agent key and the customer's reference.","tags":["orders","tracking"],"examples":["Where is order OTM-123456?"],"inputModes":["application/json","text/plain"],"outputModes":["application/json","text/plain"]}]}