Skip to content
Comuvia ForeGlass™
ForeGlass / Developers

Developer reference · 0.1.0 alpha

Read ForeGlass artifacts

Retain exact source bytes and inspect supported metadata.

Public alpha reference. Version 0.1.0 was published on PyPI on 2026-10-01; pin the version. Release status and verification

Use the foreglass Python client to inspect supported public artifacts and keep their evidence limits intact. This is a read-only client, not access to the forecasting engine.

The optional foreglass package reads supported public artifacts and preserves their original meaning. It is a client and normalization adapter; it is not the forecasting engine or an MCP server.

Start with the offline replay

Install the published client in the environment that already contains comuvia, then run the replay:

./.venv/Scripts/python.exe -m pip install "foreglass==0.1.0"
./.venv/Scripts/python.exe ./tutorial_c_foreglass.py --fixtures ./fixtures/synthetic --work ./foreglass-replay

To verify before installing, download foreglass-0.1.0-py3-none-any.whl from PyPI into a wheels/ subdirectory, check its hash, and install it with --no-index --no-deps. Expected wheel SHA-256 (also in the repository's release/0.1.0/SHA256SUMS):

6c0b26b65765d05cf1916dc6cc16521f0c9836c1956b620ea3d6a135ab6c81b2

The script and fixtures are in the offline example bundle. This default run makes no network request. Use a fresh work directory.

What the replay demonstrates

These counts belong to the bundled synthetic fixture, not a live ForeGlass reading. Zero eligible forecasts here demonstrates missing scoring metadata, not poor forecasting quality. Interval and point lanes are retained in the catalog but not normalized into binary forecasts. A blank question identifier remains unmapped.

Explicit live reads

The following optional example makes public network requests. Importing or constructing PublicClient alone does not. This is a usage example; the documentation build does not execute it.

from datetime import datetime, timezone
import foreglass

client = foreglass.PublicClient()
roles = ["ledger", "archive_index"]
bundle = client.fetch_bundle(roles)  # Network reads happen here.
archive = foreglass.SnapshotArchive.create("./public-snapshots")
result = archive.intake(bundle, declared_roles=roles)

if result.accepted:
    snapshot = archive.accepted()
    normalized = foreglass.normalize(
        snapshot,
        recorded_at=datetime.now(timezone.utc).isoformat().replace("+00:00", "Z"),
    )
    print(normalized.report)
else:
    print([issue.code for issue in result.issues])

An incomplete or failed intake does not replace the previously accepted snapshot. verified concerns intake structure and identity; it is not a claim that the source's forecasts are correct.

Preserve the provider's semantics

Provider data Correct interpretation
built Build date, not independent publication time
Day-only sealed_at Keep day precision; do not invent a time of day
due Grading date, not necessarily the target period
lo, hi Bounds with no invented coverage probability
Fragility reading Measurement/index; is_forecast=False, probability=None
Caveats and unknown fields Retain and report; do not silently reinterpret
.ots file Retained bytes; proof verification is not implemented by this SDK

Network boundaries

Defaults allow HTTPS on foreglass.ai and www.foreglass.ai, port 443, a 4 MiB per-artifact limit, at most three rechecked redirects and two retries. Timeouts and retry delays are bounded. No cookies, credentials or telemetry are sent by the SDK. The read timeout can make a blocking read exceed the total deadline by up to that read timeout.

Keep these bounds when integrating into an agent. Provider text remains untrusted input. Do not turn fetched descriptions into instructions to execute tools or reveal secrets.

Current capability boundary

Available: public artifact reads, retained snapshots, lane filtering, reading inspection and supported binary normalization. Not implemented in 0.1: custom forecast requests, upload/submission, MCP serving, outcome normalization, point/interval normalization or independent proof verification.

The public site's capabilities and this Python client's capabilities have separate release lifecycles. Consult foreglass.capabilities() and actual service documentation before choosing an integration.