Cratis Chronicle
OCI · DOCKER.IO/CRATIS/CHRONICLE-MCP
Inspect Cratis Chronicle event stores read-only by default; opt-in, authorized job control.
Available components
Last scanned (22 hours ago)
Scores higher than 78% of OCI servers
Category Databases
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
Provenance & Transparency32
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 1 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability83
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 2872 tokens (~114/item across 25 items; 25 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management73
- Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 25 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 25 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Checks we ran (12)
- Source repository
- Provenance
- License
- Maintenance
- Security disclosure
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Checks we could not complete (4)
These are gaps on our side, not findings about this package. We only credit what we can confirm, so a category made up entirely of them scores 0.
- Malware scan in Supply Chain Security (scores 0 for this)No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.
- Known CVEs in Supply Chain Security (scores 0 for this)Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.
- Install scripts in Supply Chain Security (scores 0 for this)Install-script risk not yet assessed.
- Dependency health in Supply Chain Security (scores 0 for this)Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.
Does not apply to this package (2)
- Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
- Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.
- 4 Nov 26 0
- Security disclosure: fail → unverified ▼ functional
- Package version: 2.0.0 → 2.1.0 functional
- 3 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Oct 26 +1
- Provenance: unverified → fail ▼ security
- Security disclosure: unverified → fail ▼ functional
- 30 Oct 26 0
- Provenance: fail → unverified ▼ security
- Security disclosure: fail → unverified ▼ functional
- 29 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed oci/docker.io/cratis/chronicle-mcp@2.1.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | oci |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
audit_unconsumed_event_types ~129
Cross-references every registered event type against all projections, reducers, and reactors, and reports the event types that nothing consumes (data being written that no read model or reactor reads) plus the inverse: consumers that reference an event type id which no longer exists. Use as a periodic data-debt health check. Read-only introspection — grounded entirely in the store's registry and observer definitions.
| Name | Type | Req | Description |
|---|---|---|---|
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| namespace | string|null | – | The namespace to resolve observers in. Defaults to the configured namespace. |
No output schema declared.
No examples provided.
describe_event_type ~136
Describes a registered event type's real schema — every property with its JSON type and a suggested C# type — read from the store's event type registry. Use this to ground any generated projection, read model, or spec in the event's actual fields instead of guessing. Returns null when the event type is not registered.
| Name | Type | Req | Description |
|---|---|---|---|
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| eventType | string | yes | The event type id/name to describe (e.g. UserRegistered). |
| generation | integer|null | – | The optional specific generation to describe. The latest generation is used when omitted. |
No output schema declared.
No examples provided.
describe_system ~135
Deduces what the system in an event store is and is for. Clusters event types into entities by name, places every event in its entity's lifecycle (creation, mutation, activity, correction, termination), and maps read surfaces and automations. Use it to describe a system in domain language or to tell the story of how the system behaves — the result carries narrative guidance for doing exactly that. Read-only introspection.
| Name | Type | Req | Description |
|---|---|---|---|
| eventStore | string|null | – | The event store to describe. Defaults to the configured event store. |
| namespace | string|null | – | The namespace to resolve observers in. Defaults to the configured namespace. |
No output schema declared.
No examples provided.
explain_causal_trace ~162
Reads the ordered event history for one event source together with each event's correlation id and causation chain, so an agent can narrate what happened and why instead of a support engineer reading raw JSON logs. Read-only. Follow correlation ids to relate an event to the wider flow that produced it.
| Name | Type | Req | Description |
|---|---|---|---|
| eventSequenceId | string | – | The event sequence to read from. Defaults to event-log. |
| eventSourceId | string | yes | The event source id to trace (e.g. the order id). |
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| eventType | string|null | – | An optional comma-separated event type filter. |
| namespace | string|null | – | The namespace. Defaults to the configured namespace. |
No output schema declared.
No examples provided.
generate_event_catalog ~126
Produces a living data dictionary from the event store: every event type with its fields (from the registered schema) and every projection, reducer, and reactor that consumes it. Ideal onboarding material and grounding for modeling questions. Read-only introspection. Optionally scope to a single event type.
| Name | Type | Req | Description |
|---|---|---|---|
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| eventType | string|null | – | An optional single event type id to scope the catalog to. |
| namespace | string|null | – | The namespace to resolve observers in. Defaults to the configured namespace. |
No output schema declared.
No examples provided.
get_events ~167
Retrieves events from an event sequence with optional filtering by sequence range, event source id, and event type. Returns event headers and JSON content.
| Name | Type | Req | Description |
|---|---|---|---|
| eventSequenceId | string | – | The event sequence to read from. Defaults to event-log. |
| eventSourceId | string|null | – | An optional event source id to filter by. |
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| eventType | string|null | – | An optional comma-separated event type filter (e.g. UserRegistered or UserRegistered+1). |
| from | integer | – | The starting event sequence number. Defaults to 0. |
| namespace | string|null | – | The namespace. Defaults to the configured namespace. |
| to | integer|null | – | The optional ending event sequence number. |
No output schema declared.
No examples provided.
get_job ~83
Gets a specific job by ID. Returns either a job descriptor with full details including status changes and progress, or a job error (NotFound).
| Name | Type | Req | Description |
|---|---|---|---|
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| jobId | string | yes | The job identifier. |
| namespace | string|null | – | The namespace. Defaults to the configured namespace. |
No output schema declared.
No examples provided.
get_job_steps ~118
Gets the job steps for a specific job. Returns a collection of job step descriptors with status, progress, and metadata. Optionally filtered by step status.
| Name | Type | Req | Description |
|---|---|---|---|
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| jobId | string | yes | The job identifier. |
| namespace | string|null | – | The namespace. Defaults to the configured namespace. |
| status | string|null | – | Optional filter by job step status. Can be a comma-separated list of statuses (e.g. 'Running,CompletedSuccessfully'). |
No output schema declared.
No examples provided.
get_observer ~102
Shows detailed information about a specific observer including its type, running state, owner, handled sequence numbers and observed event types.
| Name | Type | Req | Description |
|---|---|---|---|
| eventSequenceId | string | – | The event sequence to inspect. Defaults to event-log. |
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| namespace | string|null | – | The namespace. Defaults to the configured namespace. |
| observerId | string | yes | The identifier of the observer to show. |
No output schema declared.
No examples provided.
get_patterns ~192
Gets learned behavior patterns matching a grouping key and context, in the server's authoritative order. Returns full pattern details; an action is an ordinary facet, not a separate field.
| Name | Type | Req | Description |
|---|---|---|---|
| context | object | yes | Current facet values to match. Keys and values are forwarded unchanged; an action, if present, is an ordinary facet. |
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| groupingKey | string | yes | The grouping key used when learning the patterns. |
| maximumResults | integer | – | Maximum result count. Non-positive values let the backend resolve its configured default. Positive values are forwarded unchanged without a local cap. |
| minimumConfidence | number | – | Minimum confidence, normally 0 to 1. Non-positive values let the backend resolve its configured default. Forwarded unchanged without local range validation. |
| namespace | string|null | – | The namespace. Defaults to the configured namespace. |
No output schema declared.
No examples provided.
get_read_model_instances ~140
Lists the current instances of a read model as JSON, with pagination. Use to inspect the projected state of entities. Fails for client-owned read models (see 'queryable' in list_read_models).
| Name | Type | Req | Description |
|---|---|---|---|
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| namespace | string|null | – | The namespace. Defaults to the configured namespace. |
| page | integer | – | The 0-based page number. Defaults to 0. |
| pageSize | integer | – | The number of items per page. Defaults to 20. |
| readModel | string | yes | The read model container name to list instances for. |
No output schema declared.
No examples provided.
get_server_version ~30
Gets version information from the connected Chronicle server. Use to verify connectivity and check the server version and commit.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_tail_sequence_number ~135
Returns the highest used sequence number (tail) in an event sequence. This is not a total count of events — gaps may exist. Use to gauge how far a sequence has progressed.
| Name | Type | Req | Description |
|---|---|---|---|
| eventSequenceId | string | – | The event sequence to inspect. Defaults to event-log. |
| eventSourceId | string|null | – | An optional event source id to filter by. |
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| eventType | string|null | – | An optional comma-separated event type filter. |
| namespace | string|null | – | The namespace. Defaults to the configured namespace. |
No output schema declared.
No examples provided.
list_event_stores ~28
Lists all event stores registered on the Chronicle server. Use to discover valid event store names.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_event_types ~60
Lists all registered event types in an event store, including their id, generation, owner and source. Use to explore the domain schema.
| Name | Type | Req | Description |
|---|---|---|---|
| eventStore | string|null | – | The event store to get event types from. Defaults to the configured event store. |
No output schema declared.
No examples provided.
list_failed_partitions ~92
Lists observer partitions that have failed and are paused, including the failure reason and the sequence number where the failure occurred. Use to discover what needs investigation or recovery.
| Name | Type | Req | Description |
|---|---|---|---|
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| namespace | string|null | – | The namespace. Defaults to the configured namespace. |
| observerId | string|null | – | Optional observer identifier to filter by. |
No output schema declared.
No examples provided.
list_jobs ~100
Lists all jobs in a namespace, optionally filtered by status. Returns a collection of job descriptors with status, progress, and metadata.
| Name | Type | Req | Description |
|---|---|---|---|
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| namespace | string|null | – | The namespace. Defaults to the configured namespace. |
| status | string|null | – | Optional filter by job status. Can be a comma-separated list of statuses (e.g. 'Running,PreparingJob'). |
No output schema declared.
No examples provided.
list_namespaces ~47
Lists all namespaces within an event store. Use to discover valid namespace names.
| Name | Type | Req | Description |
|---|---|---|---|
| eventStore | string|null | – | The event store to list namespaces for. Defaults to the configured event store. |
No output schema declared.
No examples provided.
list_observers ~94
Lists observers (projections, reactors, reducers, client observers) in a namespace, with health and replay status. Optionally filter by type.
| Name | Type | Req | Description |
|---|---|---|---|
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| namespace | string|null | – | The namespace. Defaults to the configured namespace. |
| type | string | – | Observer type filter: reactor, reducer, projection, or all (default). |
No output schema declared.
No examples provided.
list_projections ~56
Lists all projection definitions registered in an event store, including the read model they project into and their activity state. Use to audit registered projections.
| Name | Type | Req | Description |
|---|---|---|---|
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
No output schema declared.
No examples provided.
list_read_models ~72
Lists all read model definitions registered in an event store. The 'queryable' field is false for client-owned read models whose state is stored by the client application rather than the Chronicle server; querying their instances will fail.
| Name | Type | Req | Description |
|---|---|---|---|
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
No output schema declared.
No examples provided.
list_recommendations ~70
Lists active recommendations from the Chronicle server. Recommendations are automated suggestions for maintenance tasks such as rerunning projections or handling schema migrations.
| Name | Type | Req | Description |
|---|---|---|---|
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| namespace | string|null | – | The namespace. Defaults to the configured namespace. |
No output schema declared.
No examples provided.
run_ad_hoc_projection ~251
Answers ad-hoc queries by projecting events on demand: reads the given event types from the store and folds them into per-event-source instances with AutoMap semantics (later events overwrite earlier property values; removedWith event types drop the instance). Nothing is registered or written. First resolve which event types are involved (describe_system or generate_event_catalog), then call this with them. Use it for natural-language questions like 'show all employees with all details'.
| Name | Type | Req | Description |
|---|---|---|---|
| eventSequenceId | string | – | The event sequence to read from. Defaults to event-log. |
| eventSourceId | string|null | – | An optional event source id to scope to a single instance. |
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| eventTypes | string | yes | Comma-separated event type ids to fold (e.g. EmployeeHired,EmployeeMoved,EmployeePromoted). |
| limit | integer | – | The maximum number of instances to return. Defaults to 100. |
| namespace | string|null | – | The namespace. Defaults to the configured namespace. |
| removedWith | string|null | – | Optional comma-separated event type ids that remove an instance (e.g. EmployeeTerminated). |
No output schema declared.
No examples provided.
scaffold_read_model ~207
Generates a reviewable read model + model-bound projection from one or more event types, grounded in the events' real schema (field names and types come from the store, never guesses). Resolve the event types from the user's request first — with list_event_types, describe_event_type, or generate_event_catalog — then pass them here. Surfaces existing projections that already read these events so a duplicate is not created. When none of the requested event types are registered it returns no code and says so rather than fabricating a shape.
| Name | Type | Req | Description |
|---|---|---|---|
| codeNamespace | string | – | The C# namespace to generate the read model into. Defaults to ReadModels. |
| eventStore | string|null | – | The event store. Defaults to the configured event store. |
| eventTypes | string | yes | A comma-separated list of event type ids to project from (e.g. UserRegistered,UserEmailVerified). |
| readModelName | string | yes | The name of the read model to generate (e.g. Users). |
No output schema declared.
No examples provided.
suggest_next_event_types ~140
Suggests event types to introduce next for the system in an event store. Deduces entities and lifecycles from the registered event type names and schemas, then finds concrete gaps: entities without an explicit creation event, lifecycles with no termination, and creation-time properties no event can ever change. Each suggestion carries the gap it closes and candidate properties from the existing schema. Read-only introspection; refine the results with domain knowledge.
| Name | Type | Req | Description |
|---|---|---|---|
| entity | string|null | – | An optional entity name to scope the suggestions to (case-insensitive). |
| eventStore | string|null | – | The event store to analyze. Defaults to the configured event store. |
No output schema declared.
No examples provided.
How do I install the Cratis Chronicle MCP server?
Cratis Chronicle runs locally as a container image, launched with docker run --rm -i -e Cratis__Chronicle__Mcp__Profile -e Cratis__Chronicle__Mcp__ConnectionString -e Cratis__Chronicle__Mcp__ClientId -e Cratis__Chronicle__Mcp__ClientSecret -e Cratis__Chronicle__Mcp__ApiKey -e Cratis__Chronicle__Mcp__EventStore -e Cratis__Chronicle__Mcp__Namespace docker.io/cratis/chronicle-mcp:2.1.0. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.
oci · docker.io/cratis/chronicle-mcp
claude mcp add cratis-chronicle-mcp -- docker run --rm -i -e Cratis__Chronicle__Mcp__Profile -e Cratis__Chronicle__Mcp__ConnectionString -e Cratis__Chronicle__Mcp__ClientId -e Cratis__Chronicle__Mcp__ClientSecret -e Cratis__Chronicle__Mcp__ApiKey -e Cratis__Chronicle__Mcp__EventStore -e Cratis__Chronicle__Mcp__Namespace docker.io/cratis/chronicle-mcp:2.1.0
This image reads Cratis__Chronicle__Mcp__Profile, Cratis__Chronicle__Mcp__ConnectionString, Cratis__Chronicle__Mcp__ClientId, Cratis__Chronicle__Mcp__ClientSecret, Cratis__Chronicle__Mcp__ApiKey, Cratis__Chronicle__Mcp__EventStore and Cratis__Chronicle__Mcp__Namespace. Set them in your client's env block for this server; docker run -e passes each one through to the container.
What is the Cratis Chronicle MCP server?
Cratis Chronicle is an MCP server listed in the public MCP registry as io.github.Cratis/chronicle-mcp. Inspect Cratis Chronicle event stores read-only by default; opt-in, authorized job control. This page covers its container image (docker.io/cratis/chronicle-mcp).
Is the Cratis Chronicle MCP server safe to use?
Cratis Chronicle scores 50 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Cratis Chronicle MCP server expose?
Cratis Chronicle exposes 25 tools: list_event_stores, list_namespaces, get_events, get_tail_sequence_number, list_event_types, and 20 more. Their descriptions and schemas cost roughly 2,872 tokens of context every time the server is loaded.
Is the Cratis Chronicle MCP server still maintained?
Cratis Chronicle is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What did VerifyMCP test on the Cratis Chronicle MCP server?
VerifyMCP ran 12 checks on Cratis Chronicle, covering Source repository, Provenance, License, Maintenance and 8 more. 4 items could not be completed, a gap on our side rather than a finding about Cratis Chronicle: Malware scan, Known CVEs, Install scripts and Dependency health. One category scores 0 for that reason, because we only credit what we can confirm. Endpoint Security and Transport & Reachability do not apply to a container image, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.