Eclipse Beacon MCP
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Eclipse Beacon MCPwhat insurance deadlines are coming up in the next 60 days?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Eclipse Beacon MCP
Powered by Cyan Eclipse Technologies — https://cetech.ai
Eclipse Beacon — the insurance watcher: it watches your household's policies, signals expiries before they happen, and prepares the actions you approve. It does not insure, bind, or advise.
Why this exists
A household's insurance — health, auto, home, life — has no system of record. Policies live as PDFs in email and paper in a drawer, and expiries are usually discovered by a lapse notice. Beacon B0 is the watcher that fixes the first half of that: a local policy graph with provenance on every field, and an expiry radar that signals deadlines before they arrive.
Related MCP server: pcrzero-mcp
Status — honest labels
v0.1.0, phase B0 only (personal edition: policy graph + expiry radar). Read/watch only. Local stdio transport, Python stdlib only, no network calls anywhere in the code, and the shipped fixtures are synthetic (fictional carriers, synthetic people, invented policy numbers). No certification claimed — bench pending.
Explicitly NOT in v0.1, by spec: renewal shopping, renewal prep, claims filing, proof delivery, binding, cancelling, paying — and the entire agency edition, which is gated behind counsel + licensing review. Binding, negotiating, and advising for others are state-licensed producer activities; Beacon's personal edition acts only on the owner's own household data, and B0 doesn't even do that — it watches.
Tools (5)
Tool | What it does |
| Parse a declarations-page-style document (JSON, or simple text dec page) from a local file. Returns a draft + diff with per-field provenance (source file, locator, confidence). Propose-only by default — nothing is written unless |
| Every policy in the graph with key dates, plus declared assets/persons and current alert windows. |
| One policy in full, provenance included. |
| Ranked upcoming events: renewal (≤60d), premium due (≤14d), grace-period end, escrow/lender proof deadline, and static enrollment calendar entries (ACA / Medicare — dates move yearly, flagged [verify] on the surface). Each event carries severity, days-until, the consequence of missing it, and the provenance of the date it came from. |
| Read-only analysis: assets with no covering policy, duplicate coverage on the same asset, premium spikes vs the prior term (default flag >15%). Findings are signals with evidence — never verdicts, never advice. |
The Vigil rule (encoded + tested)
Alert windows are owner-configurable, but a change may only tighten a window — lengthen its lead time so Beacon warns earlier. Any attempt to loosen a window (warn later, narrower net) is rejected with the reason named. The watcher never quietly gives you less warning.
Receipts
Every ingest proposal, merge, radar run and gap run appends a hash-chained receipt to the store — append-only and machine-verifiable (verify_receipt_chain). Proposals are receipted too: the audit trail covers what was attempted, not just what landed.
Run it
python3 server.py # MCP over stdio, stdlib only, no dependencies
python3 smoke.py # end-to-end smoke over real stdio (temp state)
python3 -m unittest discover tests # 17 testsState persists in data/state.json beside the server (override with ECLIPSE_BEACON_STATE). data/ is gitignored — a real household's graph never belongs in a repo.
Fixtures
fixtures/ ships four synthetic policies — auto, homeowners, health, term life — each as an ACORD-shaped JSON dec page and an equivalent simple-text dec page (the two parse to identical drafts; a test proves it), plus household.json declaring the household's assets and persons — including one boat that no policy covers, so the gap report has something honest to find.
Roadmap (per spec)
B1 — gap watcher expansion + lapse guard (escalation before lapse; still no transactions).
B2 — mandate-gated action prep: renewal shopping packs, renewal prep, claims FNOL drafting, proof delivery — owner-approved, none binding.
B3 — agency edition: blocked on counsel + licensing review. Does not start before the gate clears.
License / attribution
A Cyan Eclipse Technologies product. The "Powered by Cyan Eclipse Technologies" attribution travels with it.
Available Tools
5 toolsgap_reportB
Read-only gap analysis: uncovered assets, duplicate coverage, premium spikes vs prior term (default flag >15%).
| Name | Required | Description | Default |
|---|---|---|---|
| spike_threshold_pct | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden, and it does contribute the key safety signal ('Read-only') plus a default flagging rule (>15% premium spike). It says nothing about scope of analysis (whole book vs. a policy), cost/latency, or what the caller receives, which matters for an analysis tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the read-only safety property front-loaded and zero filler. It leans on jargon ('premium spikes vs prior term') that costs some clarity, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an analytics tool with no annotations and no output schema, the description gives a decent inventory of what is reported but omits the analysis scope (which policies/assets are in scope) and any hint of result shape or size. Adequate as a pointer, thin for an agent deciding whether it has enough input to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single parameter, so the description must compensate. It partially does by disclosing the default flag threshold of 15% for premium spikes, which the schema does not state, but it never names spike_threshold_pct, its units, or what happens at other values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific analysis operation (gap analysis) and enumerates its outputs: uncovered assets, duplicate coverage, and premium spikes versus prior term. That is far more informative than a tautology. It does not, however, distinguish itself from the sibling radar_report, which by name sounds like an adjacent analytics/reporting tool an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites, and no named alternative among policy_ingest, policy_list, policy_get, or radar_report. 'Read-only' implies it is safe to call speculatively, but the agent is left to infer that this is the analytical counterpart to the policy_* CRUD tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
policy_getC
One policy in full, including per-field provenance.
| Name | Required | Description | Default |
|---|---|---|---|
| policy_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It hints at the payload (full policy with per-field provenance) but says nothing about read-only safety, missing-policy behavior, auth requirements, or error modes for a lookup tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler. The brevity is efficient, though it edges into under-specification rather than tight precision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup this could be adequate, but with no annotations and no output schema the description should cover return shape, missing-record behavior, and id semantics. It only gestures at provenance and leaves the rest unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required policy_id has 0% schema description coverage, so the description should explain its expected format or source. It never mentions the parameter, leaving the one input completely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase 'One policy in full' points to retrieving a single policy, which implicitly contrasts with the sibling policy_list. However, it omits an explicit verb (get/fetch/retrieve) and never names or rules out the list sibling, leaving the scope only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this instead of policy_list or the report tools, and no mention of prerequisites such as where policy_id comes from. The agent must infer the use case entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
policy_ingestA
Ingest a declarations-page-style document (JSON or simple text) from a LOCAL file path. Returns a draft + diff with per-field provenance. DEFAULT IS PROPOSE-ONLY: nothing is written unless confirm=true. Also ingests household_profile JSON (asset/person declarations).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| confirm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and mostly succeeds: it discloses the propose-only default, the exact condition that causes writes (confirm=true), and the return format (draft + diff with per-field provenance). Gaps remain around permissions, validation failures, and idempotency, but the core mutation safety profile is explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then immediately addresses the critical default and return shape. Every sentence contributes useful scope or safety information, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter ingestion tool with no output schema and no annotations, the description covers purpose, input scope, mutation behavior, and return semantics. It could be more complete about error behavior or supported document variants, but the essentials an agent needs to call it correctly are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 the two parameters. It does: 'path' is scoped to a LOCAL file path, and 'confirm' is framed as the gate that overrides the propose-only default. That meaningfully compensates for the empty schema, though it does not specify accepted file extensions or path syntax.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Ingest') and concrete resource ('declarations-page-style document (JSON or simple text) from a LOCAL file path'), and adds return shape ('draft + diff with per-field provenance'). It distinguishes itself from read-oriented siblings (policy_list, policy_get) by being the only ingestion tool, though it does not name them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to use it: local files in declarations-page or household_profile JSON form. It also flags the crucial default behavior around confirm=true, which is the main decision an agent must make before invoking. It does not mention alternatives explicitly, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
policy_listA
List every policy in the household graph with key dates, plus declared assets/persons and current alert windows.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the behavioral load; 'List' signals a read-only operation and the sentence discloses the included data domains. It does not address ordering, whether archived policies are included, result size limits, or permission requirements for reading the household graph.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and scope first and the payload detail trailing. No filler, though the trailing clause is dense enough that it reads as one run-on enumeration rather than structured information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description is the only source of information about what comes back, and it sketches the contents but not the structure, ordering, or completeness guarantees. It is adequate to decide to call the tool but thin for interpreting results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline applies and there is nothing for the description to disambiguate. The mention of assets/persons and alert windows usefully hints at the shape of the response in the absence of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('List') plus resource ('every policy') plus scope ('household graph'), and it enumerates the payload (key dates, declared assets/persons, alert windows). An agent can tell this is the bulk-retrieval counterpart to policy_get without opening a schema, though no sibling is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'every' implies bulk listing versus the single-record policy_get, and the absence of parameters reinforces that no filtering is possible. However, the description never states when to prefer radar_report or gap_report over this, leaving the agent to infer routing from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
radar_reportB
Expiry radar: ranked upcoming events (renewal <=60d, premium due <=14d, grace end, escrow proof, enrollment windows [verify]) with severity and consequence. Optional as_of (YYYY-MM-DD) and windows overrides — windows may only be TIGHTENED (longer lead), never loosened (Vigil rule).
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | ||
| windows | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the key behavioral rule that windows may only be tightened, never loosened, and that output includes severity and consequence. However, it never states that the tool is read-only, whether it has side effects, what permissions are needed, or how results are ordered beyond 'ranked'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the report scope front-loaded and the constraint rule appended. No filler, though the bracket token '[verify]' is unexplained jargon that costs a little readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless-required report tool with no annotations and no output schema, the description covers the report contents and the window-override rule but leaves the nested windows object opaque and never clarifies return structure or severity definitions. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It adds real meaning for as_of (YYYY-MM-DD) and defines the tightening-only constraint on windows, which is genuinely beyond the schema. But the nested windows object's keys, units, and accepted values remain undefined, leaving meaningful ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific artifact produced: a ranked list of upcoming expiry events, with enumerated categories (renewal <=60d, premium due <=14d, grace end, escrow proof, enrollment windows) plus severity and consequence. This clearly distinguishes it from siblings like policy_list and gap_report, though the tool name itself is generic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'ranked upcoming events' and the optional as_of/windows overrides, but there is no explicit when-to-use vs when-not, and no sibling tool is named as an alternative. An agent can infer this is the right tool for expiry triage, but must reason about gap_report vs radar_report on its own.
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.
5 tool updates
v0.1.0- First observed
gap_report - First observed
policy_get - First observed
policy_ingest - First observed
policy_list - First observed
radar_report
TDQS
Scored across 5 tools
Each tool maps to a clearly distinct operation: write-side ingestion (policy_ingest), read-side retrieval (policy_list / policy_get), and two analytical views (time-based expiry in radar_report vs coverage gaps in gap_report). The two report tools could superficially overlap, but their descriptions explicitly separate temporal alerts from coverage/duplication/premium analysis.
All names are snake_case two-token identifiers, which is easy to read and predict. There is a minor deviation in that policy_* uses a resource prefix with an action second (ingest/list/get), while radar_report and gap_report are noun+report compounds rather than strict verb_noun.
Five tools is well within a focused, well-scoped surface: one write path, two retrieval paths, and two distinct analyses. No tool looks redundant or padded, and nothing appears to be a trivial wrapper.
Ingest plus list/get covers creation and reading, but there is no explicit update, delete, or archive path for policies, assets, or persons (re-ingestion is implied but undocumented as an edit mechanism). There is also no way to acknowledge/snooze alerts or export the household graph, leaving notable lifecycle gaps.
Maintenance
Related MCP Connectors
Issue & verify signed (ed25519), hash-chained, timestamped provenance receipts for agent actions.
Read-only gateway for durable agent identity, consent, recognized work, and signed receipts.
Attestable memory, truth, provenance. Hybrid Ed25519 + ML-DSA-65 receipts; USDC settlement on Base.
- memoricOAuthio.memoric
Provenance-first database for teams and agents: every value carries sources, rules and coverage.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables defining and verifying evidence contracts for claims in READMEs, releases, or product pages using constrained verifiers and generating hash-chained receipts and reports.3 npmMIT
- AlicenseNot gradedqualityBmaintenanceIssue and verify signed receipts for agent actions, enabling durable, independently checkable proof of policy decisions. Supports offline verification via get_keyset and verify_receipt tools without an account.0Inno Setup
- AlicenseNot gradedqualityBmaintenanceProvides permission gates and tamper-evident audit logging for AI agent tool executions, with declarative policies, consent ladders, and hash-chained verification.MIT
- AlicenseBqualityCmaintenanceEnables users to maintain append-only content history with verified publication and social follow-through outcomes, search for overlaps, and run read-only integrity verification of stored snapshots.16MIT