{"protocolVersion":"1.0.0","name":"Unara Connect","description":"Unara control plane. Governed, evidence-emitting capabilities for managed sites, devices and businesses.","url":"https://connect.unara.app/v1/a2a","preferredTransport":"JSONRPC","version":"1.0.0","provider":{"organization":"Unara","url":"https://unara.app"},"capabilities":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":false},"defaultInputModes":["application/json"],"defaultOutputModes":["application/json"],"securitySchemes":{"oauth2ClientCredentials":{"type":"oauth2","description":"Unara Connect OAuth 2.0 client credentials. Tokens are tenant-scoped.","flows":{"clientCredentials":{"tokenUrl":"/v1/oauth/token","scopes":{}}}},"mutualTLS":{"type":"mutualTLS","description":"Client certificate issued by the site CA."}},"security":[{"oauth2ClientCredentials":[]},{"mutualTLS":[]}],"skills":[{"id":"connect.customer-lookup","name":"Look up a customer / business","description":"Find a business and its summary counts.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.device-status","name":"Show device status","description":"List managed devices with health and last check-in.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.recent-evidence","name":"Show recent evidence","description":"Return the recent evidence timeline (filter by source / correlation).","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.fleet-health","name":"Show fleet health","description":"Per-tenant health rollup across VaultDrive, EdgeLink/devices, Unity Node, WorkDesk, and Connect itself, with a gate per domain.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.health-summary","name":"Health summary for a scope","description":"Current health (healthy, watch, critical or unknown), its history over a window, and the top causes, for a business, a site, a device, a tenant or (Unara operations) the platform.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.health-series","name":"Health history for one scope","description":"The snapshot series for a business, site, device, component or tenant, optionally for one metric, at 5-minute, hourly or daily buckets.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.health-baseline","name":"Is this reading usual for this device or site?","description":"For each metric of a device or a site, the newest reading placed against the hourly history of that same device or site over seven days: usual, above or below usual, or could not determine (under 24 hours of history, or no fresh reading). The reading keeps its own health state; the baseline only says whether it is normal here.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.device-what-changed","name":"What changed on a device before a symptom began","description":"Every change Connect recorded on one device in the window before an onset time: inventory differences (agent, OS, kernel, hostname, address, model, applications), commands, software deployments and the audit entries for the device, oldest first. A source that could not be read is named, and nothing_changed is true only when every source was read and none recorded a change. Names, versions and times only.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.guardian-device-state","name":"What Guardian should, did and can prove it runs on a device","description":"For one device, four states each from its own record: the policy Connect wants it to run and the intelligence bundles staged to it (desired), what the device received (delivered), what each Guardian subsystem signed that it applied (enforced), and whether that signed report re-validates against a TPM-bound key (verified); plus how they compare. A missing state is absent with a reason, never ok.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.guardian-finding","name":"Why Guardian raised a finding","description":"One Guardian finding with its decision trace: the rule or signature that decided, the engine and its version, the intelligence content it ran on, a digest of the input it judged, and the decision it took. The trace state is recorded, unreadable (the device sent one Connect could not read) or absent (none was sent).","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.guardian-exceptions","name":"Guardian exceptions in this tenant","description":"The Guardian exceptions in this tenant, newest first: what each lets past which subsystem (app control, malware, firewall), on one device or the whole tenant, why, who asked and who approved, and when it expires; each is pending, active, expired or revoked. Optionally only one state.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.guardian-action-status","name":"Status of a Guardian response action","description":"One Guardian response action on a Cosmos device (scan, quarantine, restrict, isolate, restore or delete a quarantined item), by its command id: whether a person or the automatic isolation sent it, the command state, each execution report from the device, and the SecurityOps isolation record when there is one.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.tenant-ecosystem-map","name":"Where this business has Unity Nodes","description":"Only the Unity Nodes of the asking tenant: each placed at the coordinate of its site (city precision) or listed as not placed, with its health state, whether Connect heard from it in the last 15 minutes, its last heartbeat, and how many devices its site expects and has. Never the nodes of another tenant.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.device-agent-settings","name":"The tuning settings a device agent receives","description":"The tuning settings set centrally for one device, the tenant default under the device override, each with where it came from: network health sampling interval and thresholds, poll interval, inventory profile and roaming. A key not listed is not set centrally and the device uses its local value.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.broadcast-status","name":"How a Unara-wide alert was delivered","description":"One authored broadcast: its audience, its channels, how many people it was for, and for each channel how many deliveries are pending, sent, gated (with the reason, such as no sending identity configured), failed or abandoned. Its state is derived from those deliveries: sending, sent, gated, partly delivered, not delivered, or no recipients. Unara operations only.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.site-connections","name":"Connections at one site","description":"The links at one site: each device and Unity Node to Connect, each device to its default gateway when measured, the remote-access tunnel gateway and its clients, and the assigned concentrator. Each link has a state (up, down or unknown), a peer, since, and latency and loss when measured; an unmeasured link carries null, never zero.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.health-forecast","name":"When will this device run out of space?","description":"For one device, the date a percentage metric (by default data_volume.used_percent) reaches 100 at its current rate, from its daily history: a projection with its date, not growing, or not enough history (under 7 daily values or 7 days). Fitted only after the last sharp drop, so a resized volume does not skew it.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.event-counts","name":"How many events in a time window","description":"Exact counts of this tenant’s evidence events between two times, grouped by severity, channel or source, with the total. Optionally only one source or channel. A window is required; a malformed or inverted one is refused.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.approvals-list","name":"Approvals waiting for a person","description":"The approvals in this tenant with a given status (pending by default; a pending one past its due time is not listed), newest first, with the exact total. Compass sees only its own proposed actions.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.health.digests","name":"Health digests and weekly reports","description":"The weekly health report for this tenant, or (Unara operations) the daily platform digest: overall state, time in each state, state changes, the top causes, and the snapshot hours each figure comes from.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.intranet.review-queue","name":"The Intranet review queue","description":"Open Intranet submissions, oldest due first, each with the proposed and the approved name, logo and description and whether it is overdue or claimed. Ids and the page content the reviewer must see; no inquiry text exists to show.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.intranet.broken-links","name":"Links that have failed three checks in a row","description":"Outside links on live Intranet pages that failed three link checks in a row, with the page and the reason. A link Unara refused to fetch (a private or downgraded destination) is never listed as broken.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.intranet.pages-review-overdue","name":"Unara Intranet pages past their review date","description":"Published Unara Intranet pages whose review-by date has passed, with the owner and the date.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.intranet.build-state","name":"Where a business is in building its Intranet page","description":"The ten guided-build steps (listing, your business, template, who you are, offerings, pictures and colors, contact, links, review, submit) as done, open or locked, with what each open step still needs. Derived from the page, never stored.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.intranet.submissions","name":"A business Intranet submissions and their outcomes","description":"The business Intranet review submissions: kind, status, when due, and the last decision (outcome and the reviewer reason).","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.intranet.insights","name":"How a business Intranet page is doing","description":"Opens of the page by day and inquiries received by outcome (sending, sent, bouncing, refused) for a window. Counts only; no viewer and no message is stored.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.intranet.inquiry-address","name":"A business Intranet inquiry address","description":"Whether the business inquiry address is pending or verified, whether it is bouncing, and how many confirmation emails it may still send today. The address itself is the business own and is returned to its owners.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"connect.intranet.page-links","name":"The outside links on a business Intranet page","description":"Each outside link on the business live page with its last check: ok, broken, refused, unreachable or unverified, and the reason. A refusal by Unara is not a broken link.","tags":["unara.connect","read_only","internal"],"inputModes":["application/json"],"outputModes":["application/json"]}],"x-unara":{"direction":"inbound-only","note":"Unara never originates A2A tasks and never fetches an agent card. This endpoint receives only.","clinicalCapabilities":false},"typ":"unara.a2a-agent-card.v1","signature":{"alg":"Ed25519","key_id":"unara-fabric-ed25519-prod-1","value":"E3Ydw25SBmav8+YIKHAysqeUQGka+QXefvULBAR1mTMFFd0hIzinC5sTldFLL7LhDmTaY5hm474BJHqzS+ofDg==","signed_at":"2026-11-15T16:47:50.120Z"}}