Skip to main content
Glama
urcades

context-archive

by urcades

Context Archive

A local macOS evidence archive for agents: Knowledge activity and the history databases of Safari, Chrome, Dia, and Arc, behind one CLI and read-only stdio MCP.

The collector preserves every observed table, column, blob, and revision in the selected databases. Searchable events are rebuildable interpretations with links to original rows. It does not capture screenshots, keystrokes, page contents, cookies, or passwords. Collection uploads nothing, opens no listening port, and requires no model or API key.

Install

Requires macOS. Clone and install:

git clone https://github.com/urcades/context-archive.git && cd context-archive && ./install.sh

Or, from an existing checkout:

./install.sh

The installer uses uv, managed Python 3.12, and the committed dependency lock. It installs a non-editable runtime outside the checkout and a per-user LaunchAgent for five-minute collection. Installation starts collection unless --no-start is passed. The project source alone does not start anything.

./install.sh --no-start       # prepare runtime and disabled LaunchAgent
./install.sh --codex          # also register the stdio MCP with Codex

Runtime, configuration, archive, and logs live under ~/Library/Application Support/ContextArchive/. Set CONTEXT_ARCHIVE_HOME to an absolute alternate directory. The original Knowledge Archive and Browser History Receiver repositories/services are independent and are not changed.

Full Disk Access may be required for Safari and Knowledge. The installer/doctor prints the permission executable: grant it access under System Settings → Privacy & Security → Full Disk Access. The actual launch command retains the virtual-environment executable so dependencies remain available. An interpreter upgrade may require a new grant.

CA_ROOT="${CONTEXT_ARCHIVE_HOME:-$HOME/Library/Application Support/ContextArchive}"
CA="$CA_ROOT/runtime/bin/context-archive"
"$CA" doctor
"$CA" status

Interactive readability is not proof of background access. After intentionally starting the service, inspect launchctl print gui/$(id -u)/local.context-archive, the collector logs, and a newly successful capture in status. An idle service between scheduled runs is normal. Missing/unreadable profiles and failed captures appear in diagnostics.

Related MCP server: sqlite-mcp-local

Preserve existing archives first

Import Knowledge history before starting native collection for the matching store. Its old observation history cannot safely be appended behind newer native snapshots; that case is rejected atomically with an explanation. Existing input archives are read-only and remain untouched.

./install.sh --no-start
"$CA" import knowledge "/path/to/KnowledgeArchive/data/archive.sqlite3"
"$CA" import browser "/path/to/browser-history.jsonl"
"$CA" install             # explicitly enable background collection after imports

Knowledge imports retain schemas, revisions, blobs, deletions, observation times, and legacy ID mappings. Repeating an import adds only unseen captures. A matching native Knowledge store continues the same evidence history.

Browser JSONL imports retain every original line, including malformed lines and unknown fields. Malformed lines are reported; valid records are still imported. Identical visits on different lines remain distinct. Reimporting the same artifact adds no visits; a verified complete-line prefix of an appended file at the same path is reused. Rewritten/truncated files or an extended unterminated line form a separate artifact lineage. Such imported records may overlap: provenance remains explicit rather than guessed away.

Legacy browser records contain selected visit fields, not full source databases. legacy_visit fidelity distinguishes these from new raw_database captures. The old receiver did not persist all origin metadata; imports do not invent it.

Discovery and configuration

Each cycle discovers Knowledge and browser profiles again. Safari includes its main history database and supported Safari/container profile roots; Chromium-family browsers include all profiles containing a history database under their known roots. Full profile identifiers survive discovery. Canonical aliases are deduplicated. Sources found only after an earlier visit timestamp are still fully scanned, so older history arriving through Safari sync is captured.

Optional config.json under the runtime root:

{
  "sources": [
    {"path": "/absolute/path/to/History.db", "adapter": "safari", "browser": "Safari", "profile": "custom-profile"}
  ],
  "exclusions": ["/absolute/path/to/excluded-profile/*"]
}

Explicit paths supplement discovery. Supported adapters are knowledge, safari, and chromium; legacy_browser is used by imports. Exclusions match absolute path globs. Use --config /absolute/config.json for a separate configuration.

Safari sync can bring mobile browsing into these local databases. Completeness means everything observed in readable databases on this Mac, not a guarantee of complete iCloud history or all mobile activity. Raw origin metadata is preserved without claiming it identifies an iPhone, iPad, or this Mac. Private browsing, upstream retention, sync delays, and missed capture windows remain outside that guarantee.

CLI and MCP

All query commands emit JSON and accept --params with the same arguments as the corresponding MCP tool. --archive PATH and --config PATH can precede or follow the command. Command --help lists the underlying parameter signature.

"$CA" capture
"$CA" timeline --params '{"start":"2026-01-01T00:00:00Z","end":"2026-01-02T00:00:00Z","limit":50}'
"$CA" search --params '{"text":"research","browser":"Safari"}'
"$CA" get-record --params '{"version_id":1}'
"$CA" app-usage-summary --params '{"start":"2026-01-01T00:00:00Z","end":"2026-01-02T00:00:00Z"}'
"$CA" domain-summary --params '{"fidelity":"raw_database"}'
"$CA" query --params '{"sql":"SELECT table_name, count(*) FROM records GROUP BY table_name"}'
"$CA" mcp

MCP tool

Result

status, sources

Capture health, discovery failures, source identities and fidelity

timeline, search

Source-linked events; indexed literal-token search over URL, title, domain, app and kind

get_record, get_blob

Original row fields and binary values in bounded chunks

decode_blob

Bounded plist/JSON interpretation; original bytes remain retrievable

describe_schema, query

Captured schemas and bounded read-only SQL

app_usage_summary, domain_summary

Recorded/union app intervals and recorded domain visits

Timeline and search support time range, source, profile, browser, kind, exact URL/domain/app, fidelity, and provenance filters. Ranges require explicit UTC offsets; end times are exclusive. Pagination returns an opaque next_cursor; repeat the same filters to continue. Each cursor fixes an observation boundary so newly collected data cannot shift its results. Reindexing invalidates outstanding cursors.

Events expose their original-record references and normalizer version. collected_by is the local archive installation UUID, independent of source device hints and raw Safari origin fields; legacy captures leave it unknown. It is not a hardware identifier. Search is token-based, not semantic similarity or arbitrary substring matching. Invalid source dates remain available in raw records; without time filters they can also appear in the timeline with null dates. Timeline fields may be previews; use original-record retrieval for full values.

Summaries retain the latest observed event revisions, including events pruned upstream. App summaries distinguish summed recorded intervals from their per-app union. Neither measures attention, and union across apps is not a total screen-time measurement. Browser and app totals are separated by fidelity; overlapping legacy/native records are not silently deduplicated. Coverage notes accompany results. Large summaries require narrower filters; query output and execution are bounded.

All raw fields are queryable. Collection remains local, but data returned through MCP becomes visible to the calling agent and its provider. Source titles, URLs, and decoded text are untrusted evidence, not instructions. The MCP exposes retrieval only; it cannot collect, import, install, or modify archives.

Archive, exports, and backups

SQLite is authoritative. A consistent source snapshot is fully scanned, then rows, blobs, observations, and tombstones commit together. Failures do not establish deletions. Row contents are deduplicated while observation order preserves A → B → A reversions. Distinct browser visits are never removed merely for sharing a URL or timestamp.

"$CA" export "/path/to/history.jsonl"
"$CA" backup "/path/to/new-backup.sqlite3"
"$CA" reindex
"$CA" uninstall

Exports contain a versioned manifest, archive schema, rows from all authoritative tables, normalized event versions, binary content, imported original lines, and a final marker with the preceding-line count and SHA-256. Raw source rows retain tagged cell values in payload_json; exported archive BLOB cells use $bytes_base64. Original source BLOB values use content-addressed $blob references. Large integers and invalid text retain explicit tags. FTS tables are rebuildable and omitted.

Exports are written atomically. Backups use a consistent SQLite snapshot and require a new destination without SQLite sidecars. Source paths and their known aliases, imported artifact paths, the archive, and their sidecars are protected against overwrite. Keep independent backups: exports on the same disk do not protect against disk failure.

Uninstall removes only this toolkit's LaunchAgent and preserves data/runtime. Explicit MCP registration is preserved; remove it separately with codex mcp remove context-archive. For updates, first run the installed context-archive uninstall to stop its service, then rerun the installer from the newer checkout. The installer refuses to replace a runtime while its collector is loaded, including with --no-start. Data is preserved throughout.

Development and extension

uv sync --locked
uv run pytest -q
uv build

Tests use invented databases and URLs, including Safari profiles, WAL commits, late-arriving visits, revisions, imports, snapshot pagination, exports, and real stdio MCP calls. Runtime tests use isolated homes and fake service commands. No test requires personal history or enables a real collector.

The adapter interface is Source, discover(), and normalize(). An adapter supplies source-specific fields and stable event identities linked to raw row versions; shared storage owns snapshots, database-store identity, transactions, and evidence history. Add an adapter with synthetic schema/discovery/normalization tests. Keep schema/normalizer changes versioned and rebuild indexes from preserved observations.

This first version retains history indefinitely. Full snapshots cost disk I/O proportional to source size, and archive growth depends on revisions. Database layouts may change across macOS/browser versions; explicit path additions and visible diagnostics support investigating those changes. Source fidelity does not imply every undocumented field has a known interpretation.

Possible applications include a custom Screen Time-style dashboard, a daily report, or reconstructing a research session from source-linked events. No report automation or inferred session/project model is included.

License

MIT. Knowledge Archive and Browser History Receiver informed this implementation; the original projects remain independent.

Correlate activity across sources

episodes, projects, and project-timeline are available through both the JSON CLI and read-only MCP. They add explanations above the evidence archive; they do not modify collected records or require a model.

context-archive episodes --params '{"start":"2026-09-07T00:00:00-04:00","end":"2026-09-14T00:00:00-04:00"}'

Episodes group event onsets within a five-minute gap, with at most one hour between the first and last onset by default. Change gap_seconds and max_span_seconds to explore different grouping assumptions. An app interval beginning before the requested range is clipped to the range for grouping; its original timestamps remain in the event. A long interval never bridges otherwise separate episodes. span_seconds measures first-to-last onset, not active time or website dwell time.

Each episode returns its events, raw evidence references, and distinct lanes for source, collecting installation, and provenance. A lane is not an inferred originating device. Safari sync and imported browsing remain visibly separate, even when their timestamps are close. Temporal proximity alone does not establish shared intent, attention, or causation.

For explicit project or subject associations, create a local JSON definition:

{
  "id": "example-project",
  "name": "Example project",
  "rules": [
    {"field": "url", "operator": "prefix", "value": "https://github.com/example/project"},
    {"field": "title", "operator": "contains", "value": "Example project"}
  ]
}
context-archive put-project /path/to/project.json
context-archive projects
context-archive project-timeline --params '{"project_id":"example-project","start":"2026-09-07T00:00:00-04:00","end":"2026-09-14T00:00:00-04:00"}'
context-archive episodes --params '{"project_id":"example-project","start":"2026-09-07T00:00:00-04:00","end":"2026-09-14T00:00:00-04:00"}'

Rules are OR alternatives and literal, case-sensitive matches. Supported fields/operators: url exact/prefix; title exact/contains; domain, app_id, source_id, and profile exact. URL prefixes respect /, ?, and # boundaries, so /project does not match /project-other. Anchoring a shared app or domain may associate unrelated activity; use specific URLs or titles where possible. Events can match several projects, and every match names its project and zero-based rule indexes. These associations are user-authored interpretations, not verified work duration or exclusive classifications.

put-project atomically replaces the definition with the same ID. Set "enabled": false to disable it. Definitions are stored in an optional projects table inside the archive, survive reindexing, and are included in backups and JSONL exports made by this version. No personal definitions ship in the source. Reading an older archive requires no migration; the optional table is created only by the explicit editor. MCP cannot edit the registry.

Correlation queries require an explicit timezone-aware range of at most 31 days. They support source_id, profile, kind, fidelity, and provenance filters. Pagination fixes the capture boundary and rejects cursors after registry edits or reindexing. Episodes are assembled before pagination, so page boundaries do not split a group. Queries exceeding 10,000 events, 20 MB of input payloads, five seconds of scanning, or the response budget fail explicitly: narrow the range/filter, or use the existing paginated timeline for individual events. Invalid dates remain available as original evidence but cannot participate in temporal grouping.

Available Tools

14 tools
app_usage_summaryD
Read-only

App usage summary; bounded read-only archive retrieval.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
limitNo
startNo
app_idNo
browserNo
profileNo
fidelityNo
source_idNo
provenanceNo

TDQS

D1.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false. The description adds only the word 'bounded,' which suggests a limit on results but does not explain pagination, rate limits, or output format. This is minimal added value beyond the annotations, with no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is front-loaded but severely under-specified for a tool with 9 parameters. It is not effectively concise because it omits critical information, making it inadequate rather than concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (9 optional parameters, no output schema, no parameter descriptions), the description is completely inadequate. It provides no information about what the summary contains, how filters behave, or what the response looks like, leaving the agent with no guidance for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% – the schema provides no descriptions for any of the 9 parameters (start, end, limit, app_id, browser, profile, fidelity, source_id, provenance). The description also fails to explain any of these parameters, offering no semantic meaning to guide the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'App usage summary; bounded read-only archive retrieval,' which gives a verb (retrieval) and resource (app usage summary) but lacks specificity about what constitutes the summary or how it differs from similar siblings like domain_summary or query. It is not a tautology but remains vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention any conditions, exclusions, or sibling tools, leaving the agent to infer usage solely from the name and the read-only annotation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

decode_blobC
Read-only

Decode blob; bounded read-only archive retrieval.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYes
limitNo
offsetNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's 'read-only' is redundant. It adds 'bounded' which hints at limit/offset behavior, and 'archive retrieval' provides context about the data source. However, it does not disclose error behavior, pagination semantics, or what exactly 'decode' entails. With annotations covering safety, the description adds marginal value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with zero waste. It immediately states the verb and resource, then adds a concise qualifier. It earns every word and is appropriately brief for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and three parameters, the description is insufficient. It does not clarify what a blob is, what 'decode' produces, how hash relates to a blob, or the meaning of limit/offset. Given the sibling 'get_blob', the agent may confuse the two. The description lacks critical information needed to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any of the three parameters (hash, limit, offset). The term 'bounded' vaguely suggests limit/offset, but the agent receives no clarity on what 'hash' refers to, what units limit/offset use, or their effect. The description fails to compensate for the lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Decode blob; bounded read-only archive retrieval' – a clear verb ('decode') and resource ('blob') with a clarifying qualifier ('bounded read-only archive'). It distinguishes from the sibling 'get_blob' by implying decoding rather than raw retrieval, though it does not explicitly name an alternative. This is clear but not maximally differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus siblings like 'get_blob', 'search', or 'query'. There is no mention of conditions or exclusions. The phrase 'bounded read-only' implies a read-only context, but it does not specify when to choose this over other retrieval tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_schemaC
Read-only

Describe schema; bounded read-only archive retrieval.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces this with 'read-only'. It adds 'bounded' to hint at limit/offset behavior, which is useful context not in annotations. However, it does not disclose what the schema content looks like or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is concise and front-loaded. However, the phrase 'bounded read-only archive retrieval' is awkward and only loosely connected to the act of describing a schema. It is not verbose, but it could be clearer without adding length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and no parameter descriptions. The description does not explain what the returned schema looks like, how limit/offset affect it, or what 'schema' means in this context. An agent lacks key information to correctly interpret the tool's output or know what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the undocumented limit and offset parameters. 'Bounded' is a weak hint that these parameters control the result size, but it does not explain that limit/offset are for pagination or how they affect the returned schema. The description is insufficient for an agent to understand parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Describe schema'. It adds 'bounded read-only archive retrieval' which clarifies the operation is read-only and paginated. However, it does not differentiate from siblings like get_record or query, and 'schema' is not explicitly tied to the archive context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as query or get_record. There are no stated use cases, prerequisites, or conditions that would help an agent choose this tool over its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

domain_summaryC
Read-only

Domain summary; bounded read-only archive retrieval.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
limitNo
startNo
domainNo
browserNo
profileNo
fidelityNo
source_idNo
provenanceNo

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already disclose readOnlyHint=true and destructiveHint=false, and the description's 'read-only' simply repeats that. The word 'bounded' adds a small behavioral expectation of limited scope, but there is no detail on pagination, truncation, rate limits, or how bounds are applied, so the added transparency is minimal but not contradictory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is short, but it achieves brevity by omitting necessary information. 'Domain summary' is redundant with the tool name, and 'read-only' duplicates the annotation, leaving the description as an under-specified fragment rather than a concise, information-dense explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters, no output schema, and no parameter descriptions, this definition is far too thin. An agent cannot know what a domain summary represents, which arguments to supply, what the return value looks like, or how to select appropriate values for filters like fidelity or provenance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 9 optional parameters with zero descriptions, and the tool description names none of them. 'Bounded' weakly suggests that start/end/limit control scope, but fidelity, source_id, provenance, browser, profile, and domain are left entirely unexplained, so the description does not compensate for the 0% schema description coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a generic operation, 'bounded read-only archive retrieval,' so it is not a pure tautology, but it never explains what a 'domain summary' actually contains or how it differs from siblings like search, query, timeline, or app_usage_summary. The purpose remains vague: an agent can tell it retrieves something from an archive, but not what makes this summary distinct or what output to expect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use domain_summary versus alternatives, no exclusions, and no mention of prerequisites. With 14 sibling tools and no selection criteria, an agent has no basis to choose this tool over search, query, or app_usage_summary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

episodesC
Read-only

Temporal groups within a timezone-aware window, with source lanes and evidence. Not dwell time or causal links. Narrow the window if a budget is exceeded.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
kindNo
limitNo
startYes
cursorNo
profileNo
fidelityNo
source_idNo
project_idNo
provenanceNo
gap_secondsNo
max_span_secondsNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds some behavioral context: results are timezone-aware, grouped into temporal groups, and include source lanes and evidence, and there is a budget-related constraint. However, 'budget' is undefined, and the description does not clarify ordering, pagination, or how grouping thresholds like gap_seconds/max_span_seconds affect behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and the main concept is placed first, which is good. However, it relies on unexplained jargon ('source lanes', 'evidence', 'budget') and the final sentence is more of an imperative than a clear specification. It is concise but not optimally structured for comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a 12-parameter tool with no output schema and no per-parameter descriptions, so the description carries a large burden. It does not explain return shape, pagination, parameter semantics, or how the grouping thresholds work. An agent cannot reliably call this tool correctly from the provided definition alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for 12 undocumented parameters. It only hints at a time window (start/end) through 'timezone-aware window' and at a limit concept through 'budget', but it does not explain kind, fidelity, profile, source_id, project_id, provenance, gap_seconds, max_span_seconds, or cursor. This is far below what is needed for an agent to choose and fill parameters correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a distinct resource ('temporal groups within a timezone-aware window, with source lanes and evidence') and explicitly excludes dwell time and causal links, which gives some conceptual separation from siblings. However, it lacks an explicit verb like 'return' or 'list', and 'temporal groups' is vague without knowing the domain. It does not clearly differentiate from similar sibling tools like timeline or project_timeline.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives one actionable usage rule: narrow the window if a budget is exceeded. It also negatively scopes the tool by saying it is not dwell time or causal links, which helps avoid misuse. But it does not state when to prefer this tool over siblings such as timeline, query, or project_timeline, nor does it describe prerequisites or contexts where this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_blobC
Read-only

Get blob; bounded read-only archive retrieval.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYes
limitNo
offsetNo

TDQS

C2.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's 'read-only' adds no new information. The term 'bounded' hints at pagination (limit/offset) but is too vague to disclose actual behavior like error handling or data size limits. With annotations present, the bar is lower, but the description adds minimal context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence is technically concise, but it is under-specification rather than effective conciseness. There is no front-loading of key information beyond the name, and the structure offers no scannable detail for the agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, no output schema, and a sibling decode_blob, the description is grossly incomplete. It does not define what a blob is, what 'archive' refers to, how to obtain a hash, or what the response contains. An agent cannot reliably use this tool without external knowledge.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain parameters. It does not mention 'hash', 'limit', or 'offset' at all. The word 'bounded' vaguely implies limits, but the agent gets no guidance on what 'hash' identifies or how pagination works. This is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb 'Get' and resource 'blob' clearly state the action, and 'bounded read-only archive retrieval' hints at scope. However, it does not differentiate from siblings like decode_blob or search, leaving the agent to guess which tool fits a given need.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It never mentions decode_blob for decoding or search/query for broader retrieval. The agent must infer usage from context, which is weak for a tool with a sibling named decode_blob.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recordB
Read-only

Get record; bounded read-only archive retrieval.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
version_idYes

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description is not required to repeat safety. It adds context by mentioning 'bounded' (implying limit/offset behavior) and 'archive retrieval,' which goes beyond the annotations. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It is appropriately concise for the limited content it provides, though the brevity contributes to the lack of substantive detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With three parameters, no output schema, and zero parameter descriptions in the schema, the description leaves critical gaps. The agent does not learn what version_id refers to, how limit/offset behave, or what the return format is. Annotations cover safety but not operational details, so the description is far from complete for safe and correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description makes no mention of the three parameters (version_id, limit, offset). The agent receives no guidance on what these mean or how to use them. The description entirely fails to compensate for the lack of parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (get) and resource (record), and adds context with 'bounded read-only archive retrieval.' It is clear what the tool does, though it does not explicitly differentiate from sibling tools like get_blob. The word 'bounded' hints at pagination but leaves some ambiguity about the exact record type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for read-only archive access but does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. The 'bounded' and 'read-only' cues provide some guidance but leave the agent to infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projectsA
Read-only

Read explicit project rules. Rule matches are associations, not proof of work.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The sentence 'Rule matches are associations, not proof of work' adds an important behavioral caveat beyond the annotations, telling the agent how to interpret results correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with the main purpose front-loaded and a critical caveat in the second sentence. Every word earns its place; no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, read-only, zero-parameter tool, the description provides the essential purpose and a key interpretation caveat. It could elaborate on what 'project rules' encompass, but the core requirements for correct invocation are met.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema covers all aspects (100% coverage). The description adds no parameter-specific meaning because there are none to document, matching the baseline for 0 params.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Read') and resource ('explicit project rules'), making the core purpose clear. It does not explicitly name sibling tools for differentiation, but the phrasing distinguishes it from tools like project_timeline or status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used when one needs to read explicit project rules, but provides no explicit when/when-not guidance or alternatives. It does not mention how it relates to sibling tools, leaving the agent to infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_timelineC
Read-only

Find events associated by explicit project rules; each match explains its rule indexes and links to evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
kindNo
limitNo
startYes
cursorNo
profileNo
fidelityNo
source_idNo
project_idYes
provenanceNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful behavioral context by saying each match exposes rule indexes and evidence links, but it does not address pagination, cursor/limit behavior, or what 'explicit project rules' means operationally.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single purposeful sentence with no filler, and it front-loads the core action before the output detail. It could be slightly clearer in phrasing, but it is appropriately concise for its size.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A 10-parameter tool with no output schema and no parameter descriptions requires far more context than this. The single sentence gives a useful output hint but leaves required date-range semantics, filtering options, pagination, and sibling-tool selection entirely undocumented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not compensate. It never clarifies the meaning of required parameters like project_id, start, and end, nor optional filters like kind, source_id, profile, fidelity, or provenance. The agent is left to infer all parameter semantics from bare property names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Find') and resource ('events') and adds distinctive detail: matches explain their rule indexes and link to evidence. It is clear on its own, but it does not explicitly distinguish itself from siblings like timeline, search, or query, so it stops just short of a top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus related tools such as timeline, search, or query. The phrasing implies a project-rule-focused lookup, but no conditions, exclusions, or alternative recommendations are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

queryC
Read-only

Query; bounded read-only archive retrieval.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYes
limitNo
offsetNo
parametersNo

TDQS

C2.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'read-only' matches them without contradiction. The 'bounded' qualifier adds a small signal that query limits apply, but the description does not disclose query semantics, allowed SQL statements, rate limits, or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, with no filler words. However, 'Query;' largely repeats the tool name, and the fragment structure leaves out useful segmentation that a fuller description could provide.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a generic query tool with 4 parameters, no schema descriptions, and no output schema, yet the entire description is one short phrase. It leaves SQL dialect, return shape, pagination semantics, accepted statement types, and relationship to sibling tools unexplained, so it is not complete enough for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention sql, limit, offset, or parameters at all. The agent is left to infer what the required 'sql' string should contain, how 'parameters' bind, and how limit/offset behave.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The phrase 'bounded read-only archive retrieval' identifies the domain (archive) and the general action (retrieval), so the description is not empty. However, it reads as a noun phrase rather than a concrete statement of what the tool executes, and it does not mention SQL or distinguish this tool from siblings like 'search' or 'get_record'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no when-to-use guidance, no alternatives, and no exclusions. 'Read-only' implies the tool is safe for retrieval, but it does not explain why an agent should choose this tool over the sibling tools such as search, describe_schema, or get_record.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sourcesC
Read-only

Sources; bounded read-only archive retrieval.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds 'bounded' and 'archive' context, implying pagination and historical data, but doesn't disclose behavior like return format, sorting, or what 'sources' means. It's not contradictory but adds limited value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It's a single concise sentence with no filler, and the key qualifiers ('bounded', 'read-only', 'archive') are front-loaded. It is efficient but perhaps too terse to convey enough meaning. Still, for conciseness it earns a high score on efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given simple pagination parameters and no output schema, description should clarify what 'sources' are, the return format, and how to use it. It does none of these, leaving an agent uncertain about the tool's purpose and expected behavior. Incomplete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description should compensate by explaining limit and offset. It only says 'bounded', hinting at pagination but not explicitly describing the parameters, their defaults, or how they affect results. This is insufficient for a tool with undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description says 'Sources; bounded read-only archive retrieval.' It identifies a resource (sources) and states it is an archive retrieval with pagination and read-only access. However, it doesn't specify what 'sources' refers to or exactly what retrieval operation is performed (list? get all?), and it doesn't differentiate from siblings like 'search' or 'query'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It mentions 'bounded read-only archive retrieval' but doesn't state scenarios, prerequisites, or exclusions. It doesn't reference other tools, leaving an agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

statusC
Read-only

Status; bounded read-only archive retrieval.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

TDQS

C2.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the 'bounded' qualifier and 'archive' scope, but does not disclose pagination behavior, ordering, result shape, or any archive-specific constraints, so it adds only modest value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is front-loaded and brief, with no filler. It is not merely a tautology, but it is so abbreviated that it sacrifices useful detail, making it minimally acceptable rather than well-rounded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and 0% parameter coverage, the description leaves too much open: what 'status' means, what kind of archive is retrieved, how results are ordered, and why it should be preferred over overlapping siblings. The simple parameter list does not compensate for this absence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain limit and offset, but it only says 'bounded.' An agent cannot tell what the values mean, what defaults do, or how pagination behaves.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a read-only archive-retrieval operation with bounded results, so an agent can infer the tool's basic function. However, 'Status' is not elaborated and nothing distinguishes this from siblings like query, timeline, or get_record, all of which could be archive retrievals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is given, and no alternatives or exclusions are named despite a large sibling set (query, search, timeline, episodes, get_record). The only hint is that this is bounded and read-only, which is not enough to choose it over a sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

timelineC
Read-only

Timeline; bounded read-only archive retrieval.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
urlNo
kindNo
limitNo
startNo
app_idNo
cursorNo
domainNo
browserNo
profileNo
fidelityNo
source_idNo
provenanceNo

TDQS

C2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false. The description's 'read-only' simply repeats the annotation, and 'bounded' only vaguely hints at limits/pagination without explaining what bound applies or what the tool returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and avoids wasted words, but it is under-specification rather than genuine conciseness. 'Timeline;' repeats the tool name, and the remaining fragment does not earn its place because it omits essential operational guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 13 parameters, no output schema, and no explanation of return values, pagination behavior, or archive scope, this description is far from complete. An agent cannot reliably invoke or interpret this tool from the information provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description contains no parameter information. With 13 parameters, mostly untyped nullable strings, the description fails entirely to clarify what start, end, kind, cursor, fidelity, provenance, or the other parameters mean.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a resource ('archive') and an action ('retrieval') and adds 'bounded read-only,' so it is not a pure tautology. However, it never defines what 'timeline' means in this system or what kinds of records it returns, and it does nothing to distinguish itself from siblings like project_timeline, episodes, query, or search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus any alternative. Sibling tools such as project_timeline, search, and episodes suggest overlapping capabilities, but the description provides no selection criteria or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv0.2.0
    • First observedapp_usage_summary
    • First observeddecode_blob
    • First observeddescribe_schema
    • First observeddomain_summary
    • First observedepisodes
    • First observedget_blob
    • First observedget_record
    • First observedproject_timeline
    • First observedprojects
    • First observedquery
    • First observedsearch
    • First observedsources
    • First observedstatus
    • First observedtimeline

TDQS

C2.4/5.0

Scored across 14 tools

Disambiguation2/5

Many tools share the exact same description prefix 'bounded read-only archive retrieval,' making it difficult to distinguish e.g. search from query, or timeline from episodes from project_timeline. A few tools are clearer, but the set has notable overlapping retrieval purposes.

Naming Consistency2/5

Naming is inconsistent: single-word nouns like 'status' and 'sources' sit alongside verb-prefixed names like 'get_record' and 'decode_blob,' compound nouns like 'app_usage_summary,' and multiword names like 'project_timeline.' No consistent verb_noun or noun_noun convention is maintained.

Tool Count4/5

Fourteen tools is within a reasonable range for an archive-retrieval server. The count feels slightly padded because several tools may overlap, but it is not excessive or clearly under-scoped.

Completeness3/5

The tool set covers core retrieval operations, schema introspection, blob decoding, and timeline/summary views, which is plausible for a read-only archive. However, there are gaps such as no obvious listing/enumeration of available sources or archives, and the relationship between query, search, and get_record is unclear enough to create potential dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables read-only querying of a local SQLite database via MCP, with tools to list tables, retrieve schema, and execute SELECT/WITH/EXPLAIN queries.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI clients to read and search macOS Messages history through a read-only MCP interface.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables querying enterprise records and retention policies from any MCP client over stdio, with read-only tools for searching records, fetching retention verdicts, identifying archival candidates, summarizing departments, forecasting retentions, and viewing audit history.
    -