{"openapi":"3.1.0","info":{"title":"Vector Epoch Public Intelligence","version":"1.0","description":"Anonymous read-only public information over HTTPS. MCP POST tools at /intelligence/mcp. No model/provider integrations or private workbench access. Publication scope does not upgrade source review status."},"servers":[{"url":"https://vectorepoch.com","description":"Canonical public HTTPS origin."}],"paths":{"/intelligence/api/v2/items":{"get":{"operationId":"listPublicNews","description":"List approved records sorted by editionDate descending, known firstPublishedAt descending, then ID ascending. Unknown parameters are rejected. No external fetches, model calls or writes occur.","parameters":[{"name":"type","in":"query","required":false,"description":"Canonical record type.","schema":{"type":"string","enum":["issue","brief","article"]}},{"name":"category","in":"query","required":false,"description":"Exact category from capabilities.","schema":{"type":"string","minLength":1,"maxLength":80}},{"name":"from","in":"query","required":false,"description":"Inclusive editionDate lower bound.","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"description":"Exclusive editionDate upper bound.","schema":{"type":"string","format":"date"}},{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor. Apply page before persisting the next cursor.","schema":{"type":"string","maxLength":2048}}],"responses":{"200":{"description":"Current approved public data.","headers":{"ETag":{"schema":{"type":"string"},"description":"Bound to response body, release and revocation version."},"Cache-Control":{"schema":{"type":"string"},"description":"public, max-age=300, must-revalidate"},"X-Public-Release":{"schema":{"type":"string"}},"X-Revocations-Version":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page"}}}},"304":{"description":"Matching current ETag."},"400":{"description":"Invalid parameters or damaged cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"cursor_release_changed, cursor_query_mismatch or snapshot_required. Restart the affected pagination/snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request >64 KiB or response >1 MiB; reduce limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"421":{"description":"Host or forwarding headers are not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"60 requests/min/IP with burst 20 exceeded; obey Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Data/revocations unavailable, artifact withheld, or concurrency limit 10 exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/intelligence/api/v2/items/{id}":{"get":{"operationId":"getPublicNews","description":"Read public record with all sources. Unknown parameters are rejected. No external fetches, model calls or writes occur.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}}],"responses":{"200":{"description":"Current approved public data.","headers":{"ETag":{"schema":{"type":"string"},"description":"Bound to response body, release and revocation version."},"Cache-Control":{"schema":{"type":"string"},"description":"public, max-age=300, must-revalidate"},"X-Public-Release":{"schema":{"type":"string"}},"X-Revocations-Version":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicRecord"}}}},"304":{"description":"Matching current ETag."},"400":{"description":"Invalid parameters or damaged cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown public ID.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"cursor_release_changed, cursor_query_mismatch or snapshot_required. Restart the affected pagination/snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Withdrawn record or dependent issue; no prior body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Removed"}}}},"413":{"description":"Request >64 KiB or response >1 MiB; reduce limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"421":{"description":"Host or forwarding headers are not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"60 requests/min/IP with burst 20 exceeded; obey Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Data/revocations unavailable, artifact withheld, or concurrency limit 10 exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/intelligence/api/v2/search":{"get":{"operationId":"searchPublicNews","description":"Deterministic normalized Chinese bigram/English alias search. No result never expands to unpublished data. Unknown parameters are rejected. No external fetches, model calls or writes occur.","parameters":[{"name":"q","in":"query","required":true,"description":"NFKC normalized query, Unicode code point length.","schema":{"type":"string","minLength":2,"maxLength":120}},{"name":"type","in":"query","required":false,"description":"Canonical record type.","schema":{"type":"string","enum":["issue","brief","article"]}},{"name":"category","in":"query","required":false,"description":"Exact category from capabilities.","schema":{"type":"string","minLength":1,"maxLength":80}},{"name":"from","in":"query","required":false,"description":"Inclusive editionDate lower bound.","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"description":"Exclusive editionDate upper bound.","schema":{"type":"string","format":"date"}},{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor. Apply page before persisting the next cursor.","schema":{"type":"string","maxLength":2048}}],"responses":{"200":{"description":"Current approved public data.","headers":{"ETag":{"schema":{"type":"string"},"description":"Bound to response body, release and revocation version."},"Cache-Control":{"schema":{"type":"string"},"description":"public, max-age=300, must-revalidate"},"X-Public-Release":{"schema":{"type":"string"}},"X-Revocations-Version":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page"}}}},"304":{"description":"Matching current ETag."},"400":{"description":"Invalid parameters or damaged cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"cursor_release_changed, cursor_query_mismatch or snapshot_required. Restart the affected pagination/snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request >64 KiB or response >1 MiB; reduce limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"421":{"description":"Host or forwarding headers are not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"60 requests/min/IP with burst 20 exceeded; obey Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Data/revocations unavailable, artifact withheld, or concurrency limit 10 exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/intelligence/api/v2/snapshot":{"get":{"operationId":"snapshotPublicNews","description":"Complete all pages of a fixed release/watermark. Last page returns changesCursor. Version or revocation changes invalidate a partial snapshot. Unknown parameters are rejected. No external fetches, model calls or writes occur.","parameters":[{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor. Apply page before persisting the next cursor.","schema":{"type":"string","maxLength":2048}}],"responses":{"200":{"description":"Current approved public data.","headers":{"ETag":{"schema":{"type":"string"},"description":"Bound to response body, release and revocation version."},"Cache-Control":{"schema":{"type":"string"},"description":"public, max-age=300, must-revalidate"},"X-Public-Release":{"schema":{"type":"string"}},"X-Revocations-Version":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnapshotPage"}}}},"304":{"description":"Matching current ETag."},"400":{"description":"Invalid parameters or damaged cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"cursor_release_changed, cursor_query_mismatch or snapshot_required. Restart the affected pagination/snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request >64 KiB or response >1 MiB; reduce limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"421":{"description":"Host or forwarding headers are not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"60 requests/min/IP with burst 20 exceeded; obey Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Data/revocations unavailable, artifact withheld, or concurrency limit 10 exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/intelligence/api/v2/changes":{"get":{"operationId":"changesPublicNews","description":"Monotonic current-state events. Upsert record body is current, never historical. A withdrawn historical upsert is emitted as remove. Cursor survives restarts; emergency revocation without corresponding events requires a new snapshot. Unknown parameters are rejected. No external fetches, model calls or writes occur.","parameters":[{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor. Apply page before persisting the next cursor.","schema":{"type":"string","maxLength":2048}}],"responses":{"200":{"description":"Current approved public data.","headers":{"ETag":{"schema":{"type":"string"},"description":"Bound to response body, release and revocation version."},"Cache-Control":{"schema":{"type":"string"},"description":"public, max-age=300, must-revalidate"},"X-Public-Release":{"schema":{"type":"string"}},"X-Revocations-Version":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangesPage"}}}},"304":{"description":"Matching current ETag."},"400":{"description":"Invalid parameters or damaged cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"cursor_release_changed, cursor_query_mismatch or snapshot_required. Restart the affected pagination/snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request >64 KiB or response >1 MiB; reduce limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"421":{"description":"Host or forwarding headers are not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"60 requests/min/IP with burst 20 exceeded; obey Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Data/revocations unavailable, artifact withheld, or concurrency limit 10 exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/intelligence/api/v2/capabilities":{"get":{"operationId":"publicNewsCapabilities","description":"Current release, source scope, category values, cache/freshness and subscription rules. Unknown parameters are rejected. No external fetches, model calls or writes occur.","parameters":[],"responses":{"200":{"description":"Current approved public data.","headers":{"ETag":{"schema":{"type":"string"},"description":"Bound to response body, release and revocation version."},"Cache-Control":{"schema":{"type":"string"},"description":"public, max-age=300, must-revalidate"},"X-Public-Release":{"schema":{"type":"string"}},"X-Revocations-Version":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Capabilities"}}}},"304":{"description":"Matching current ETag."},"400":{"description":"Invalid parameters or damaged cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin is not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"cursor_release_changed, cursor_query_mismatch or snapshot_required. Restart the affected pagination/snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request >64 KiB or response >1 MiB; reduce limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"421":{"description":"Host or forwarding headers are not allowed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"60 requests/min/IP with burst 20 exceeded; obey Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Data/revocations unavailable, artifact withheld, or concurrency limit 10 exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"PublicRecord":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"},"type":{"type":"string","enum":["issue","brief","article"]},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"status":{"type":"string","const":"published"},"title":{"type":"string","minLength":1},"summary":{"type":"string"},"facts":{"type":"array","items":{"type":"string"}},"analysis":{"type":"array","items":{"type":"string"}},"category":{"type":"string","minLength":1},"topics":{"type":"array","items":{"type":"string"}},"entities":{"type":"array","items":{"type":"string"}},"sources":{"minItems":1,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"url":{"type":"string","format":"uri"},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"reviewStatus":{"type":"string","enum":["primary_checked","local_fixture"]}},"required":["name","url","publishedAt","reviewStatus"],"additionalProperties":false}},"editionDate":{"type":"string"},"firstPublishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"revisionReason":{"type":"string","enum":["initial_export","correction"]},"siteUrl":{"type":"string","format":"uri"},"releaseId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$"},"relatedIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}}},"required":["id","type","revision","status","title","summary","facts","analysis","category","topics","entities","sources","editionDate","firstPublishedAt","updatedAt","revisionReason","siteUrl","releaseId","relatedIds"],"additionalProperties":false},"Error":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"}}},"Removed":{"type":"object","required":["error","message","id","status"],"properties":{"error":{"const":"removed"},"message":{"type":"string"},"id":{"type":"string"},"status":{"const":"removed"}}},"Page":{"type":"object","required":["releaseId","watermark","items","nextCursor"],"additionalProperties":false,"properties":{"releaseId":{"type":"string"},"watermark":{"type":"integer","minimum":0},"items":{"type":"array","items":{"$ref":"#/components/schemas/PublicRecord"}},"nextCursor":{"type":["string","null"]}}},"SnapshotPage":{"type":"object","required":["releaseId","watermark","items","nextCursor"],"additionalProperties":false,"properties":{"releaseId":{"type":"string"},"watermark":{"type":"integer","minimum":0},"items":{"type":"array","items":{"$ref":"#/components/schemas/PublicRecord"}},"nextCursor":{"type":["string","null"]},"changesCursor":{"type":"string","description":"Only on final page. Start changes after this captured watermark."}}},"Change":{"type":"object","required":["seq","op","id","revision","at","reason"],"properties":{"seq":{"type":"integer","minimum":1},"op":{"enum":["upsert","remove"]},"id":{"type":"string"},"revision":{"type":"integer","minimum":1},"at":{"type":"string","format":"date-time"},"reason":{"enum":["initial_export","correction","withdrawn"]},"record":{"$ref":"#/components/schemas/PublicRecord"}}},"ChangesPage":{"type":"object","required":["releaseId","changes","nextCursor","hasMore","watermark"],"additionalProperties":false,"properties":{"releaseId":{"type":"string"},"changes":{"type":"array","items":{"$ref":"#/components/schemas/Change"}},"nextCursor":{"type":"string"},"hasMore":{"type":"boolean"},"watermark":{"type":"integer","minimum":0}}},"Capabilities":{"type":"object","required":["schemaVersion","releaseId","coverage","categories","links","stale","contentLatestDate","modelCalls"],"properties":{"schemaVersion":{"const":"1.0"},"releaseId":{"type":"string"},"scope":{"enum":["local-demo","public-readonly"]},"coverage":{"type":"object"},"categories":{"type":"array","items":{"type":"string"}},"links":{"type":"object"},"stale":{"type":"boolean"},"contentLatestDate":{"type":["string","null"]},"modelCalls":{"const":false}}}}}}