{"protocolVersion":"0.3.0","name":"Citability","description":"Citability measures AI citation visibility and exposes operator and public audit actions to browser agents.","url":"https://citability.dev","provider":{"organization":"citability.dev","url":"https://citability.dev"},"version":"0.1.0","capabilities":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":true},"defaultInputModes":["application/json"],"defaultOutputModes":["application/json"],"skills":[{"id":"getWorkspaceProfile","name":"Workspace profile","description":"Return the authenticated operator's email, display name, and active workspace (client) if one is owned by this user.","tags":["operator","read","approval:never"],"requiredScopes":["workspace:read"]},{"id":"listMyDomains","name":"Tracked domains","description":"List the tracked tenants (domains) in the Citability workspace, with verification status.","tags":["operator","read","approval:never"],"requiredScopes":["domains:read"]},{"id":"listMyScans","name":"Recent scans","description":"List recent Citability scans. Optional tenant (domain) narrows to one tracked tenant.","tags":["operator","read","approval:never"],"requiredScopes":["scans:read"]},{"id":"getAuditStatus","name":"Audit status","description":"Fetch the status, progress, AVR, and timestamps of a Citability scan by tenant + runId.","tags":["operator","read","approval:never"],"requiredScopes":["scans:read"]},{"id":"listMyReceipts","name":"Citation receipts","description":"List sha256-chained Citability citation receipts. Optional tenant and runId narrow the scope. Default limit 20.","tags":["operator","read","approval:never"],"requiredScopes":["receipts:read"]},{"id":"openReceipt","name":"Citation receipt","description":"Fetch a single Citability citation receipt by tenant + receiptId, including the full model answer and hash-chain fields.","tags":["operator","read","approval:never"],"requiredScopes":["receipts:read"]},{"id":"getDogfoodPortfolio","name":"Dogfood portfolio","description":"Read the durable dogfood job state, AVR, citation rate, drift, and evidence-completeness signals for citability.dev and chudi.dev.","tags":["operator","read","approval:never"],"requiredScopes":["dogfood:read"]},{"id":"diagnoseDogfoodPortfolio","name":"Diagnose dogfood portfolio","description":"Diagnose the receipt-backed dogfood loop for citability.dev and chudi.dev, rank measurement or outcome problems, and return evidence-linked next actions.","tags":["operator","read","approval:never"],"requiredScopes":["dogfood:diagnose"]},{"id":"checkSeoPortfolio","name":"SEO portfolio health","description":"Run live sitemap, HTTP status, canonical, and noindex checks across citability.dev and chudi.dev.","tags":["operator","read","approval:never"],"requiredScopes":["seo:read"]},{"id":"listExperimentInterventions","name":"Experiment interventions","description":"List the operator's structured improvement experiments: baseline receipt ids, diagnosis, proposed change, expected metric, approval state, remeasurement linkage, scorecard, and whether an improvement claim is currently defensible.","tags":["operator","read","approval:never"],"requiredScopes":["experiments:read"]},{"id":"compareMeasurementWindows","name":"Compare measurement windows","description":"Before/after citation-rate comparison around a split timestamp for one tenant: receipt counts, strict cited-rate per window, distinct runs and models, delta, and explicit truncation flags when the pull cap was hit.","tags":["operator","read","approval:never"],"requiredScopes":["experiments:read"]},{"id":"listEngineMentions","name":"Engine mentions","description":"Most recent per-engine mention verdicts (cited / mentioned / absent) for one tenant, newest first, straight from the receipt stream.","tags":["operator","read","approval:never"],"requiredScopes":["research:read"]},{"id":"getCrawlerTelemetry","name":"Crawler telemetry by purpose","description":"AI-crawler hits for one tenant split by crawler PURPOSE (training / retrieval-citation / user-action / search) rather than lumped together, with IP-range provenance counts (verified / spoof / unverifiable), per-bot and per-path breakdowns, and a truncation flag when the scan cap was hit.","tags":["operator","read","approval:never"],"requiredScopes":["crawl:read"]},{"id":"runFullAudit","name":"Run citation audit","description":"Queue a Citability citation scan for a tracked tenant with an explicit query and model set. Requires human approval; only invokable by the operator's authenticated session.","tags":["operator","write","approval:required"],"requiredScopes":["audits:run"]},{"id":"recordArcDispatch","name":"Record arc dispatch","description":"Record a dispatch telemetry row for a citability arc close-out, so the agents screen reflects work that actually happened.","tags":["operator","write","approval:never"],"requiredScopes":["telemetry:dispatch:write"]},{"id":"recordArcOutcome","name":"Record arc outcome","description":"Record the terminal pipeline status for a citability arc close-out against a dispatch row.","tags":["operator","write","approval:never"],"requiredScopes":["telemetry:pipeline:write"]},{"id":"markAlertRead","name":"Mark alert read","description":"Mark an alert event read once the agent has acted on it, so the operator's alert list reflects reality.","tags":["operator","write","approval:never"],"requiredScopes":["alerts:triage:write"]}],"securitySchemes":{"operatorSession":{"type":"apiKey","in":"cookie","name":"NextAuth session cookie","description":"Required for operator-tier skills. The caller must carry an authenticated NextAuth browser session cookie."},"publicAnonymous":{"type":"apiKey","in":"header","name":"X-Forwarded-For","description":"Public-tier skills allow anonymous requests and are rate-limited by the service per client IP; no credential is required."}},"extensions":{"mcp":{"url":"https://citability.dev/mcp","transport":"streamable-http","protocolVersion":"2025-11-25"},"actionManifest":{"url":"https://citability.dev/.well-known/agent-actions"}}}