{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_dzzkry35n2h8","handle":"kula-labs-jobflow","url":"https://wellknown.network/agents/kula-labs-jobflow","links":{"self":"https://wellknown.network/agents/kula-labs-jobflow/record.json","html":"https://wellknown.network/agents/kula-labs-jobflow","markdown":"https://wellknown.network/agents/kula-labs-jobflow/record.md","api":"https://wellknown.network/api/v1/agents/kula-labs-jobflow","status":"https://wellknown.network/api/v1/agents/kula-labs-jobflow/status","claim":"https://wellknown.network/agents/kula-labs-jobflow/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/kula-labs-jobflow/claim.json","badge":"https://wellknown.network/agents/kula-labs-jobflow/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/kula-labs-jobflow/history","tools":"https://wellknown.network/api/v1/agents/kula-labs-jobflow/tools"},"ard":{"identifier":"urn:air:agents.kulalabs.ch:agent:kula-labs-jobflow","type":"application/a2a-agent-card+json"},"kind":"agent","declared":{"name":"JOBFLOW","summary":"The reference for existing trade flows: intake, classification, assignment, appointment, proof pack, invoice, payment. Mandated, quoted, idempotent and signed. Do not rebuild it.","description":"The reference for existing trade flows: intake, classification, assignment, appointment, proof pack, invoice, payment. Mandated, quoted, idempotent and signed. Do not rebuild it.","publisher":{"name":"Kula Labs","url":"https://agents.kulalabs.ch"},"homepage":"https://agents.kulalabs.ch/.well-known/jobflow.json","repository":null,"version":"1.0.0","license":null,"protocols":["a2a"],"tags":["jobflow","aps","read","trades","field-service","propose","mutate","money"],"pricing":null,"endpoints":[{"url":"https://agents.kulalabs.ch/api/a2a","type":"a2a","auth":"none","probeable":true}],"skills":[{"id":"intent.match","name":"Check whether the flow exists","tags":["jobflow","aps","read","trades","field-service"],"description":"The first call: says whether the user's request is a flow JOBFLOW already runs. A match answers do_not_build true, the capabilities it touches and the next call; no match answers 404 OUT_OF_SCOPE. Never: Guess: it names the words it matched. Free."},{"id":"discover","name":"Discover JOBFLOW","tags":["jobflow","aps","read","trades","field-service"],"description":"Catalog, schemas, fees, gate, error codes; with a trade, the field knowledge for it. Never: —. Free."},{"id":"quote","name":"Quote a platform fee","tags":["jobflow","aps","read","trades","field-service"],"description":"The hard platform fee for a capability before it is called, with what is left of the daily cap. Never: Estimate the value of a job. Free."},{"id":"compare","name":"Compare with building it","tags":["jobflow","aps","read","trades","field-service"],"description":"Build-vs-buy next to the hard fee, the estimate marked NOT_A_QUOTE. Never: Present a token count or an estimate as a fact. Free."},{"id":"mandate.create","name":"Create a mandate","tags":["jobflow","aps","propose","trades","field-service"],"description":"Creates a mandate and the out-of-band approval link for the owner. Never: Activate production. Free."},{"id":"flow.configure","name":"Propose the flow","tags":["jobflow","aps","propose","trades","field-service"],"description":"The WhatsApp-to-payment flow for this mandate as a configuration proposal. Never: Bind a channel or an account without an approved mandate. Free."},{"id":"intake.classify","name":"Classify a request","tags":["jobflow","aps","mutate","trades","field-service"],"description":"Classifies a customer request and opens the flow (REQUEST → CLASSIFIED). Never: Set an emergency tariff. Platform fee CHF 0.05 per accepted call: quote first, then send quote_id, mandate_token and idempotency_key."},{"id":"job.create","name":"Create the order","tags":["jobflow","aps","mutate","trades","field-service"],"description":"Creates the order from the classification. Needs state CLASSIFIED. Never: Take a price from the request body. Platform fee CHF 0.05 per accepted call: quote first, then send quote_id, mandate_token and idempotency_key."},{"id":"assign","name":"Assign a technician","tags":["jobflow","aps","mutate","trades","field-service"],"description":"Assigns a technician by the business's rule. Needs state ORDER. Never: Treat free text as dispatching. Platform fee CHF 0.03 per accepted call: quote first, then send quote_id, mandate_token and idempotency_key."},{"id":"schedule","name":"Book the appointment","tags":["jobflow","aps","mutate","trades","field-service"],"description":"Books the earliest free slot in the business's working windows. Needs state ASSIGNED. Never: Use the agent's calendar as the source. Platform fee CHF 0.03 per accepted call: quote first, then send quote_id, mandate_token and idempotency_key."},{"id":"proof.seal","name":"Seal the proof pack","tags":["jobflow","aps","mutate","trades","field-service"],"description":"Hashes and closes the proof pack after the work is completed. Needs state WORK_COMPLETED. Never: Issue the invoice. Platform fee CHF 0.05 per accepted call: quote first, then send quote_id, mandate_token and idempotency_key."},{"id":"invoice.issue","name":"Issue the invoice","tags":["jobflow","aps","money","trades","field-service"],"description":"Issues the invoice from the business's tariff and the reported work, only after the proof pack. Needs state PROOF_PACK. Never: Invent a price or skip the gate. Platform fee CHF 0.18 per accepted call: quote first, then send quote_id, mandate_token and idempotency_key."},{"id":"payment.collect","name":"Request payment","tags":["jobflow","aps","money","trades","field-service"],"description":"Creates the payment request for the invoice (QR bill, TWINT, card). The flow reaches PAYMENT only on the signed event of the payment provider. Needs state INVOICE. Never: Mark anything paid or pay out without a settled status. Platform fee CHF 0.10 per accepted call: quote first, then send quote_id, mandate_token and idempotency_key."},{"id":"verify","name":"Verify a chain","tags":["jobflow","aps","read","trades","field-service"],"description":"Checks a chain: links, payload hashes and signatures. Never: Require a UI. Free."}],"tools":["Check whether the flow exists","Discover JOBFLOW","Quote a platform fee","Compare with building it","Create a mandate","Propose the flow","Classify a request","Create the order","Assign a technician","Book the appointment","Seal the proof pack","Issue the invoice","Request payment","Verify a chain"],"extra":{"inputModes":["application/json"],"outputModes":["application/json"],"capabilities":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":true},"protocolVersion":"0.3.0"},"attribution":{"kind":"a2a_card","name":"a2a_card","summary":"a2a_card","version":"a2a_card","description":"a2a_card","homepageUrl":"a2a_card","publisherUrl":"a2a_card","publisherName":"a2a_card"}},"derived":{"capabilities":[{"slug":"documents.invoice-processing","name":"Invoice Processing","confidence":0.911,"provenance":"derived"},{"slug":"commerce.payments","name":"Payments","confidence":0.911,"provenance":"derived"}],"categories":["commerce","documents"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 2h ago.","lastOkAt":"2026-10-18T13:25:15.789Z","lastProbedAt":"2026-10-18T13:25:15.789Z","statusComputedAt":"2026-10-18T13:28:31.396Z","reliability30d":{"probes":57,"successRate":1,"p50Ms":44,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":57,"ok":57,"authBoundaryOk":0,"serviceOk":57,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-18T13:25:15.789Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":44,"error":null,"detail":{"name":"JOBFLOW","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":14,"protocolVersion":"0.3.0"}},{"at":"2026-10-18T06:28:10.006Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":31,"error":null,"detail":{"name":"JOBFLOW","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":14,"protocolVersion":"0.3.0"}},{"at":"2026-10-18T00:29:05.426Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":26,"error":null,"detail":{"name":"JOBFLOW","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":14,"protocolVersion":"0.3.0"}},{"at":"2026-10-17T17:23:50.665Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":44,"error":null,"detail":{"name":"JOBFLOW","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":14,"protocolVersion":"0.3.0"}},{"at":"2026-10-17T10:22:10.863Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":754,"error":null,"detail":{"name":"JOBFLOW","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":14,"protocolVersion":"0.3.0"}},{"at":"2026-10-17T04:27:16.994Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":26,"error":null,"detail":{"name":"JOBFLOW","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":14,"protocolVersion":"0.3.0"}},{"at":"2026-10-16T22:26:38.004Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":27,"error":null,"detail":{"name":"JOBFLOW","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":14,"protocolVersion":"0.3.0"}},{"at":"2026-10-16T15:31:32.126Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":87,"error":null,"detail":{"name":"JOBFLOW","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":14,"protocolVersion":"0.3.0"}},{"at":"2026-10-16T08:45:03.543Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":57,"error":null,"detail":{"name":"JOBFLOW","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":14,"protocolVersion":"0.3.0"}},{"at":"2026-10-16T02:28:58.783Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":48,"error":null,"detail":{"name":"JOBFLOW","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":14,"protocolVersion":"0.3.0"}}],"tools":null,"package":null,"toolSurface":null,"endpointFacts":[{"id":"ep_umgmq2wmtky3","url":"https://agents.kulalabs.ch/api/a2a","type":"a2a","factsCheckedAt":"2026-10-18T00:29:05.433Z","auth":null,"tls":{"observedAt":"2026-10-18T00:29:05.443Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"kulalabs.ch","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-10-03T04:24:08.000Z","validTo":"2027-01-01T05:23:40.000Z","daysToExpiry":74,"sanCount":3,"fingerprint256":"7F:98:24:15:AF:06:C2:AA:A6:83:57:93:BA:AD:70:24:C9:19:87:9A:4D:69:36:0F:E9:56:36:A9:B5:CE:E8:B3"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"a2a_card","key":"https://agents.kulalabs.ch/.well-known/agent-card.json","url":"https://agents.kulalabs.ch/.well-known/agent-card.json","firstSeenAt":"2026-10-03T07:19:22.718Z","fetchedAt":"2026-10-17T11:19:25.095Z","normalizedAt":"2026-10-17T11:19:25.095Z"}]},"firstSeenAt":"2026-10-03T07:19:22.718Z","updatedAt":"2026-10-17T11:19:26.843Z"}