{"name":"Nteli quoting agent","description":"Quotes configured products for the manufacturers that use Nteli: send specs or an RFQ, negotiate inside the manufacturer's guardrails, and accept a signed offer for a signed order acknowledgement. The manufacturer's rules and pricing data are never shared.","supportedInterfaces":[{"url":"https://quote.nteli.io/a2a/v1","protocolBinding":"JSONRPC","protocolVersion":"1.0"}],"provider":{"organization":"Nteli","url":"https://nteli.io"},"version":"1.0.0","documentationUrl":"https://quote.nteli.io/api/v1/openapi.json","capabilities":{"streaming":false,"pushNotifications":false,"extendedAgentCard":true,"extensions":[{"uri":"https://nteli.io/a2a/ext/negotiation/v1","required":false,"description":"Nteli negotiation: skill payloads as data parts, the same turns over REST, signed offers and order acknowledgements (Ed25519 JWS) as artifacts.","params":{"rest":"https://quote.nteli.io/api/v1/negotiations","attestation_verify":"https://quote.nteli.io/api/v1/attestations/verify","jwks":"https://quote.nteli.io/.well-known/jwks.json?ws={workspace}","idempotency":"message.messageId (A2A) or the Idempotency-Key header (REST)"}}]},"securitySchemes":{"nteli_oauth":{"oauth2SecurityScheme":{"description":"OAuth 2.0 client credentials. The manufacturer issues your agent a client id and secret (Admin, Connections); the token is bound to that manufacturer's workspace.","flows":{"clientCredentials":{"tokenUrl":"https://quote.nteli.io/api/v1/oauth/token","scopes":{"negotiate":"Request quotes, counter, accept and verify"}}}}}},"securityRequirements":[{"schemes":{"nteli_oauth":{"list":["negotiate"]}}}],"defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json"],"skills":[{"id":"request_quote","name":"Request a quote","description":"Send the specs as answers (a data part: {\"skill\": \"request_quote\", \"on_behalf_of\", \"model\", \"facts\", \"qty\", \"delivery_by\"}) or a free-text RFQ (a text part). Returns clarifying questions, a signed offer, or pending human review with an ETA.","tags":["quote","rfq","configure","price"],"examples":["{\"skill\": \"request_quote\", \"on_behalf_of\": \"Example Water Co\", \"model\": \"<product line>\", \"facts\": {\"<answer id>\": \"<value>\"}, \"qty\": 2}"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"counter","name":"Counter an offer","description":"On a negotiation (taskId): a target total price, a quantity or a delivery date. Answers accepted (a new signed offer), countered (our signed counter-offer), pending_human_review (with an ETA) or declined. Limited rounds; the thread expires.","tags":["negotiate","counter","discount","quantity","delivery"],"examples":["{\"skill\": \"counter\", \"target_price\": 41500}","{\"skill\": \"counter\", \"qty\": 4}","{\"skill\": \"counter\", \"target_price\": 39000, \"escalate\": true}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"accept","name":"Accept the signed offer","description":"On a negotiation (taskId): accept the current signed offer with your PO number (and ship_to and bill_to addresses, so the order goes straight to entry). Returns the signed order acknowledgement, which cites the offer's digest.","tags":["accept","order","purchase order"],"examples":["{\"skill\": \"accept\", \"po\": \"PO-1042\", \"digest\": \"sha256:...\"}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"verify","name":"Verify a signed quote or order","description":"Ask the issuer whether a quote (or its order acknowledgement) is valid now: signature, validity date, and that it wasn't changed, recalled or replaced. Anyone can also check a document offline against the JWKS.","tags":["verify","signature","attestation"],"examples":["{\"skill\": \"verify\", \"quote\": \"NQ-0042\"}"],"inputModes":["application/json"],"outputModes":["application/json"]}]}