{"openapi":"3.1.0","info":{"title":"Annotated Agent API","version":"1.0.0","summary":"Find, verify, and clip exact moments from videos and podcasts.","description":"Annotated turns a source URL and natural-language request into source-grounded moment candidates, rights-gated clip jobs, and tamper-evident artifact receipts. Transcript text, browser capabilities, and private media are never public by default. Rights grants are caller attestations, not platform verification. browser_capture requires a fresh per-clip human confirmation in the extension; authorized_remote uses an explicit delegated API-key-holder attestation with no browser confirmation; upload remains awaiting_user.","contact":{"name":"Soxoa LLC","url":"https://soxoa.com"}},"externalDocs":{"description":"Annotated for Agents guide","url":"https://annotated-source-clips.vercel.app/agents"},"servers":[{"url":"https://annotated-source-clips.vercel.app/api/v1/agent","description":"Annotated production API"}],"tags":[{"name":"Sources","description":"Private, expiring source and transcript handles."},{"name":"Moments","description":"Source-grounded search, verification, and counterevidence candidates."},{"name":"Clips","description":"Explicit intent, rights, capture, and artifact operations."},{"name":"Jobs","description":"Asynchronous progress and trusted-browser handoff state."},{"name":"Receipts","description":"Immutable provenance and publication records."}],"security":[{"agentApiKey":[]}],"paths":{"/sources":{"post":{"operationId":"registerAgentSource","tags":["Sources"],"summary":"Register a private source","description":"Canonicalizes a credential-free public source URL. An optional bounded VTT, SRT, or cue transcript may be supplied; it remains private and expires with the source.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated 16–128 character key. Reuse only for an identical request.","schema":{"type":"string","minLength":16,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterSource"}}}},"responses":{"201":{"description":"Source registered.","content":{"application/json":{"schema":{"type":"object","required":["source"],"properties":{"source":{"$ref":"#/components/schemas/AgentSource"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/moment-searches":{"post":{"operationId":"findMoments","tags":["Moments"],"summary":"Find exact moments","description":"Searches only source-grounded transcript cues. Returns exact candidates, an asynchronous job, or a trusted-browser handoff; it never invents a quote.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated 16–128 character key. Reuse only for an identical request.","schema":{"type":"string","minLength":16,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindMomentsRequest"}}}},"responses":{"200":{"description":"Search result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindMomentsResponse"}}}},"202":{"description":"Search queued or waiting for the trusted browser.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindMomentsResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/moment-searches/{searchId}":{"get":{"operationId":"getMomentSearch","tags":["Moments","Jobs"],"summary":"Retrieve an asynchronous moment search","description":"Returns owner-scoped, source-grounded candidates after the corresponding search job succeeds, or its current processing/unavailable state.","parameters":[{"name":"searchId","in":"path","required":true,"description":"Moment search ID from a completed job result resource","schema":{"type":"string","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"Moment search state or completed candidates.","content":{"application/json":{"schema":{"type":"object","required":["result"],"properties":{"result":{"$ref":"#/components/schemas/FindMomentsResponse"}}}}}},"202":{"description":"Search is still queued or waiting for the trusted browser.","content":{"application/json":{"schema":{"type":"object","required":["result"],"properties":{"result":{"$ref":"#/components/schemas/FindMomentsResponse"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/moments/{momentId}":{"get":{"operationId":"inspectMoment","tags":["Moments"],"summary":"Inspect a moment candidate","parameters":[{"name":"momentId","in":"path","required":true,"description":"Candidate moment ID","schema":{"type":"string","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"Grounded moment candidate.","content":{"application/json":{"schema":{"type":"object","required":["moment"],"properties":{"moment":{"$ref":"#/components/schemas/MomentCandidate"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/moments/{momentId}/verify":{"post":{"operationId":"verifyMoment","tags":["Moments"],"summary":"Recheck source and transcript fingerprints","parameters":[{"name":"momentId","in":"path","required":true,"description":"Candidate moment ID","schema":{"type":"string","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"Verification result.","content":{"application/json":{"schema":{"type":"object","required":["verified","moment"],"properties":{"verified":{"type":"boolean"},"sourceChanged":{"type":"boolean"},"moment":{"$ref":"#/components/schemas/MomentCandidate"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/moments/{momentId}/counterevidence":{"post":{"operationId":"findCounterevidence","tags":["Moments"],"summary":"Find qualifying or negating passages","description":"Returns source-grounded candidates and retrieval hints, never an automated factual judgment that a passage contradicts a claim.","parameters":[{"name":"momentId","in":"path","required":true,"description":"Selected moment ID","schema":{"type":"string","minLength":1,"maxLength":128}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated 16–128 character key. Reuse only for an identical request.","schema":{"type":"string","minLength":16,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"query":{"type":"string","minLength":2,"maxLength":240},"maxResults":{"type":"integer","minimum":1,"maximum":8,"default":4}}}}}},"responses":{"200":{"description":"Counterevidence candidates.","content":{"application/json":{"schema":{"type":"object","required":["moments"],"properties":{"moments":{"type":"array","maxItems":8,"items":{"$ref":"#/components/schemas/MomentCandidate"}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/clip-intents":{"post":{"operationId":"prepareClip","tags":["Clips"],"summary":"Prepare a bounded clip intent","description":"Chooses a capture path without capturing, uploading, or publishing media. browser_capture later requires a fresh per-clip human confirmation in the extension. authorized_remote is an explicit caller declaration for a directly fetchable authorized media URL; registration does not preflight it, and the worker validates the locator before producing an artifact. upload remains awaiting_user.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated 16–128 character key. Reuse only for an identical request.","schema":{"type":"string","minLength":16,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepareClip"}}}},"responses":{"201":{"description":"Clip intent prepared.","content":{"application/json":{"schema":{"type":"object","required":["clipIntent"],"properties":{"clipIntent":{"$ref":"#/components/schemas/ClipIntent"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/clip-intents/{clipIntentId}/rights-grants":{"post":{"operationId":"createRightsGrant","tags":["Clips"],"summary":"Attest capture rights","description":"Records the API-key holder's explicit rights basis. Annotated does not independently verify it. For browser_capture this grant is preliminary and the extension still requires a fresh per-clip human checkbox. For authorized_remote, delegatedAttestation=true is required and becomes the final capture authorization for that exact intent; no browser confirmation follows. delegatedAttestation is rejected for every other mode.","parameters":[{"name":"clipIntentId","in":"path","required":true,"description":"Prepared clip intent ID","schema":{"type":"string","minLength":1,"maxLength":128}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated 16–128 character key. Reuse only for an identical request.","schema":{"type":"string","minLength":16,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RightsGrantRequest"}}}},"responses":{"201":{"description":"Rights attestation recorded.","content":{"application/json":{"schema":{"type":"object","required":["rightsGrantId"],"properties":{"rightsGrantId":{"type":"string"},"verified":{"const":false}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/clips":{"post":{"operationId":"createClip","tags":["Clips","Jobs"],"summary":"Start a rights-gated clip job","description":"Starts only after an intent-bound capture grant. authorized_remote queues for rendering after the explicit delegated key-holder attestation. browser_capture and upload remain awaiting_user; browser capture additionally requires the extension's fresh per-clip checkbox, visible recording, and explicit send.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated 16–128 character key. Reuse only for an identical request.","schema":{"type":"string","minLength":16,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["clipIntentId","rightsGrantId","idempotencyKey"],"properties":{"clipIntentId":{"type":"string"},"rightsGrantId":{"type":"string"},"idempotencyKey":{"type":"string","minLength":16,"maxLength":128}}}}}},"responses":{"202":{"description":"Clip job accepted.","content":{"application/json":{"schema":{"type":"object","required":["job"],"properties":{"job":{"$ref":"#/components/schemas/AgentJob"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/clips/{clipId}":{"get":{"operationId":"getClip","tags":["Clips"],"summary":"Read clip metadata","parameters":[{"name":"clipId","in":"path","required":true,"description":"Clip ID","schema":{"type":"string","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"Private clip metadata and citation URLs."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/clips/{clipId}/receipt":{"get":{"operationId":"getArtifactReceipt","tags":["Receipts"],"summary":"Read an immutable artifact receipt","parameters":[{"name":"clipId","in":"path","required":true,"description":"Completed clip ID","schema":{"type":"string","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"Artifact receipt.","content":{"application/json":{"schema":{"type":"object","required":["receipt"],"properties":{"receipt":{"$ref":"#/components/schemas/ArtifactReceipt"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/jobs/{jobId}":{"get":{"operationId":"getJob","tags":["Jobs"],"summary":"Read asynchronous job progress","parameters":[{"name":"jobId","in":"path","required":true,"description":"Job ID","schema":{"type":"string","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"Job state.","content":{"application/json":{"schema":{"type":"object","required":["job"],"properties":{"job":{"$ref":"#/components/schemas/AgentJob"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/publish":{"post":{"operationId":"publishAnnotation","tags":["Receipts"],"summary":"Publish an annotation backed by a receipt","description":"Defaults to unlisted. Publication is separate from capture and requires an active publish rights grant.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated 16–128 character key. Reuse only for an identical request.","schema":{"type":"string","minLength":16,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["clipId","body","rightsBasis","acknowledged","idempotencyKey"],"properties":{"clipId":{"type":"string"},"body":{"type":"string","minLength":1,"maxLength":5000},"visibility":{"type":"string","enum":["public","unlisted"],"default":"unlisted"},"rightsBasis":{"type":"string","enum":["owned","licensed","permission","user_attested_short_excerpt"]},"acknowledged":{"const":true},"idempotencyKey":{"type":"string","minLength":16,"maxLength":128}}}}}},"responses":{"201":{"description":"Annotation published with public receipt URL."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationError"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/receipts/{publicationKey}":{"get":{"operationId":"getPublishedReceipt","tags":["Receipts"],"summary":"Read a public-safe receipt projection","description":"Capability URL returned only after explicit publication. It never includes transcript text, private object keys, account IDs, or search queries.","security":[],"parameters":[{"name":"publicationKey","in":"path","required":true,"description":"Published receipt capability key","schema":{"type":"string","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"Public receipt projection."},"404":{"$ref":"#/components/responses/NotFound"}}}}},"components":{"securitySchemes":{"agentApiKey":{"type":"http","scheme":"bearer","bearerFormat":"ant_sk_…","description":"Create and revoke scoped keys from the signed-in Agents dashboard. Plaintext is shown once."}},"responses":{"Unauthorized":{"description":"Missing, invalid, expired, or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"Forbidden":{"description":"The key lacks the required scope or the resource is not owned by this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"NotFound":{"description":"Resource not found or no longer retained.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"ValidationError":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"RateLimited":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}}}}},"schemas":{"ApiError":{"type":"object","additionalProperties":false,"required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string","maxLength":500}}},"TranscriptCue":{"type":"object","additionalProperties":false,"required":["start","end","text"],"properties":{"start":{"type":"number","minimum":0},"end":{"type":"number","exclusiveMinimum":0},"text":{"type":"string","minLength":1,"maxLength":500}}},"Transcript":{"oneOf":[{"type":"object","additionalProperties":false,"required":["format","cues","origin"],"properties":{"format":{"const":"cues"},"cues":{"type":"array","minItems":1,"maxItems":8000,"items":{"$ref":"#/components/schemas/TranscriptCue"}},"origin":{"$ref":"#/components/schemas/TranscriptOrigin"},"language":{"type":"string","default":"en"}}},{"type":"object","additionalProperties":false,"required":["format","content","origin"],"properties":{"format":{"type":"string","enum":["vtt","srt"]},"content":{"type":"string","minLength":1,"maxLength":1048576},"origin":{"$ref":"#/components/schemas/TranscriptOrigin"},"language":{"type":"string","default":"en"}}}]},"TranscriptOrigin":{"type":"string","enum":["publisher_captions","publisher_transcript","automatic_captions","user_supplied","local_asr","unknown"]},"RegisterSource":{"type":"object","additionalProperties":false,"required":["sourceUrl","kind","title"],"properties":{"sourceUrl":{"type":"string","format":"uri","maxLength":2048},"kind":{"type":"string","enum":["video","podcast"]},"title":{"type":"string","minLength":1,"maxLength":500},"publisher":{"type":"string","maxLength":160,"default":""},"durationSeconds":{"type":"number","exclusiveMinimum":0,"maximum":86400},"preferredCaptureMode":{"type":"string","enum":["auto","browser_capture","authorized_remote","upload","locator_only"],"default":"auto","description":"Use authorized_remote only when sourceUrl is the directly fetchable media file and the API-key holder is authorized to process it. Registration records this declaration without prefetching or classifying the URL; the worker validates it before producing an artifact. This opt-in does not itself authorize a clip; each remote intent also requires delegatedAttestation=true. Generic source pages should stay auto."},"transcript":{"$ref":"#/components/schemas/Transcript"}}},"AgentSource":{"type":"object","required":["id","kind","canonicalUrl","title","publisher","availableModes","createdAt"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["video","podcast"]},"canonicalUrl":{"type":"string","format":"uri"},"title":{"type":"string"},"publisher":{"type":"string"},"durationSeconds":{"type":["number","null"]},"availableModes":{"type":"array","items":{"type":"string","enum":["browser_capture","authorized_remote","upload","locator_only"]}},"transcriptOrigin":{"oneOf":[{"$ref":"#/components/schemas/TranscriptOrigin"},{"type":"null"}]},"transcriptSha256":{"type":["string","null"],"pattern":"^[a-f0-9]{64}$"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":["string","null"],"format":"date-time"}}},"FindMomentsRequest":{"type":"object","additionalProperties":false,"required":["sourceId","query"],"properties":{"sourceId":{"type":"string"},"query":{"type":"string","minLength":2,"maxLength":240},"maxResults":{"type":"integer","minimum":1,"maximum":8,"default":4},"preferredClipSeconds":{"type":"integer","minimum":5,"maximum":90,"default":30}}},"MomentCandidate":{"type":"object","required":["id","sourceId","startSeconds","endSeconds","snippet","relevanceScore","boundaryConfidence","matchMethod","transcriptOrigin","transcriptSha256","sourceFingerprint","deepLink","createdAt"],"properties":{"id":{"type":"string"},"sourceId":{"type":"string"},"startSeconds":{"type":"number","minimum":0},"endSeconds":{"type":"number","exclusiveMinimum":0},"snippet":{"type":"string","minLength":1,"maxLength":500},"context":{"type":"string","maxLength":2000},"relevanceScore":{"type":"number","minimum":0,"maximum":1},"boundaryConfidence":{"type":"string","enum":["cue_exact","bounded_window","manual_review_required"]},"matchMethod":{"type":"string","enum":["lexical_v1","semantic_v1","hybrid_v1","existing_receipt_v1"]},"transcriptOrigin":{"$ref":"#/components/schemas/TranscriptOrigin"},"transcriptSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"sourceFingerprint":{"type":"string","pattern":"^[a-f0-9]{64}$"},"deepLink":{"type":"string","format":"uri"},"createdAt":{"type":"string","format":"date-time"}}},"FindMomentsResponse":{"oneOf":[{"type":"object","required":["status","source","moments","noMatch"],"properties":{"status":{"const":"ready"},"source":{"$ref":"#/components/schemas/AgentSource"},"moments":{"type":"array","maxItems":8,"items":{"$ref":"#/components/schemas/MomentCandidate"}},"noMatch":{"type":"boolean"}}},{"type":"object","required":["status","jobId","retryAfterMs","confirmationUrl"],"properties":{"status":{"const":"processing"},"jobId":{"type":"string"},"retryAfterMs":{"type":"integer","minimum":250,"maximum":60000},"confirmationUrl":{"type":["string","null"],"format":"uri"}}},{"type":"object","required":["status","code","message"],"properties":{"status":{"const":"unavailable"},"code":{"type":"string","enum":["TRANSCRIPT_UNAVAILABLE","AMBIGUOUS","SOURCE_CHANGED","UNSUPPORTED_SOURCE"]},"message":{"type":"string","maxLength":500}}}]},"PrepareClip":{"type":"object","additionalProperties":false,"required":["momentId"],"properties":{"momentId":{"type":"string"},"captureMode":{"type":"string","enum":["auto","browser_capture","authorized_remote","upload","locator_only"],"default":"auto","description":"browser_capture requires a later fresh human extension confirmation. authorized_remote requires an explicit direct-media registration declaration and delegated key-holder attestation; the worker validates the locator before producing an artifact. upload remains awaiting_user."},"contextBeforeSeconds":{"type":"number","minimum":0,"maximum":30,"default":2},"contextAfterSeconds":{"type":"number","minimum":0,"maximum":30,"default":6},"maxSeconds":{"type":"number","minimum":5,"maximum":90,"default":30}}},"ClipIntent":{"type":"object","required":["id","momentId","sourceId","captureMode","proposedStartSeconds","proposedEndSeconds","rightsRequired","status","createdAt","expiresAt"],"properties":{"id":{"type":"string"},"momentId":{"type":"string"},"sourceId":{"type":"string"},"captureMode":{"type":"string","enum":["browser_capture","authorized_remote","upload","locator_only"]},"proposedStartSeconds":{"type":"number","minimum":0},"proposedEndSeconds":{"type":"number","exclusiveMinimum":0},"rightsRequired":{"type":"boolean"},"status":{"type":"string","enum":["prepared","awaiting_user","approved","processing","ready","cancelled","expired"]},"confirmationUrl":{"type":["string","null"],"format":"uri"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"}}},"RightsGrantRequest":{"type":"object","additionalProperties":false,"required":["clipIntentId","basis","acknowledged"],"properties":{"clipIntentId":{"type":"string","minLength":1,"maxLength":128,"description":"Must match the clipIntentId path parameter."},"basis":{"type":"string","enum":["owned","licensed","permission","user_attested_short_excerpt"]},"acknowledged":{"const":true,"description":"The API-key holder explicitly attests the stated rights basis. This does not replace the fresh extension checkbox for browser_capture."},"delegatedAttestation":{"const":true,"description":"Conditionally required only for authorized_remote. The clips:write API-key holder delegates final capture authorization for this exact intent; no per-clip browser confirmation follows."}}},"AgentJob":{"type":"object","required":["id","kind","status","step","progress","retryable","sourceTitle","sourceHost","confirmationUrl","createdAt","updatedAt","expiresAt"],"properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["ingest_source","search_moments","prepare_clip","capture_clip","publish_receipt","verify_receipt"]},"status":{"type":"string","enum":["queued","running","awaiting_user","succeeded","failed","cancelled","expired"]},"step":{"type":"string","enum":["resolve_source","obtain_transcript","search","await_browser","render","verify","store"]},"progress":{"type":"integer","minimum":0,"maximum":100},"retryable":{"type":"boolean"},"errorCode":{"type":["string","null"]},"errorMessage":{"type":["string","null"]},"resultResource":{"type":["string","null"]},"sourceTitle":{"type":["string","null"]},"sourceHost":{"type":["string","null"]},"confirmationUrl":{"type":["string","null"],"format":"uri"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"}}},"ArtifactReceipt":{"type":"object","description":"Immutable `annotated.artifact-receipt.v1` provenance object. The exact schema is also returned by the MCP `get_receipt` tool.","required":["schema","receiptId","state","source","selection","capture","rights","integrity","issuedAt"],"properties":{"schema":{"const":"annotated.artifact-receipt.v1"},"receiptId":{"type":"string"},"state":{"type":"string","enum":["locator","captured","published","revoked","source_drifted"]},"artifact":{"type":["object","null"]},"source":{"type":"object"},"selection":{"type":"object"},"capture":{"type":"object"},"rights":{"type":"object"},"integrity":{"type":"object"},"issuedAt":{"type":"string","format":"date-time"},"revokedAt":{"type":["string","null"],"format":"date-time"}}}}}}