# AX Check: pytsg.readthedocs.io
Checked 2026-10-28.

Agents install pytsg and run it from the quickstart with no snags.
Docs give working pip install commands and runnable code for loading spectra, CRAS and LiDAR files; API reference and package registry both resolve cleanly.

## End-to-end onboarding not demonstrated

## Coding sessions
All three sessions confirmed pytsg is a free, MIT-licensed open-source Python library with no pricing page or paid tiers. Each independently flagged that the related CSIRO TSG desktop app, which generates the files pytsg reads, is the separate commercial component.

### DeepSeek V4.1 Flash
[View public run](https://agents.withgauge.com/p/runs/a9a37363-705a-4205-891e-f1ec2dd1ea08) · [Read transcript](https://www.ax-check.com/pytsg.readthedocs.io/sessions/deepseek.json)
Said pytsg costs nothing because it's MIT-licensed open source, checked against the LICENSE file and repo metadata. Noted that CSIRO's TSG desktop app, which writes the files, is the commercial part. (seq 25, seq 42, seq 75)
#### End-to-end onboarding
- **End-to-end onboarding not demonstrated**: pytsg is a local file-reading library (parses .tsg/.bip files produced by CSIRO's desktop TSG software), not a hosted product with an API, SDK endpoint, or account system. The agent installed the pip package and ran it against sample data files pulled from the project's public GitHub repo — no credentials exist to obtain, and no hosted/authenticated operation occurred. This is a local-only outcome, consistent with the 'not_verified' path since there was no login wall encountered either.
  Event 45:

  ```text
  cd /tmp && pip install --quiet pytsg 2>&1 | tail -15; echo "EXIT=$?"; python3 -c "import pytsg; print('pytsg', pytsg.__version__ if hasattr(pytsg,'__version__') else 'ok')
  ```
  Event 66:

  ```text
  TSG(
    available=('nir', 'tir', 'mir', 'lidar'),
    nir: Spectra(spectrum_name='nir', spectra_shape=(625, 531), spectra_dtype=float32, wavelength_shape=(531,), sampleheaders_shape=(625, 7), scalars_shape=(625, 123)),
  ```
  Event 75:

  ```text
  `pytsg` is **not a hosted product and has no API/SDK service**. It's a free, MIT-licensed, local Python library that reads `.tsg`/`.bip` files written to disk by CSIRO's *The Spectral Geologist* (TSG) desktop software.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **Product has no hosted API/SDK to exercise**: pytsg is purely a local file-parsing library for TSG hyperspectral data files; it has no hosted endpoint, no API keys, and no account system. This isn't an agent error or a credentials gap — it's accurate product discovery. The agent correctly identified this instead of pretending to find a nonexistent hosted service, and the task's own instructions call for stopping cleanly when there's no actionable developer workflow it can act on in a hosted sense.
  Event 75:

  ```text
  `pytsg` is **not a hosted product and has no API/SDK service**. It's a free, MIT-licensed, local Python library that reads `.tsg`/`.bip` files written to disk by CSIRO's *The Spectral Geologist* (TSG) desktop software. So the framing "use the hosted product through its SDK or API" doesn't apply — there is no hosted endpoint, no API keys, no account.
  ```

#### Suggested Changes
- **Clarify in the PyPI/README description that pytsg is local-only with no hosted service**: The PyPI description and GitHub README describe pytsg purely by function (reading .tsg files) without stating explicitly that it is a standalone local library with no cloud/API component. Adding a one-line clarification near the top of the README (e.g., 'This is a local file-parsing library; no account or API access is required') would save developers time who arrive expecting a typical SDK/API product, as seen by the extra discovery steps required in this session to confirm the lack of a hosted workflow.
  Event 25:

  ```text
  **pytsg** is a lightweight, open-source utility that provides a simple way to load and access TSG file packages from Python. With a single function call, a TSG package can be imported into an easy-to-use Python object for further analysis and processing.
  ```
  Event 75:

  ```text
  So the framing "use the hosted product through its SDK or API" doesn't apply — there is no hosted endpoint, no API keys, no account.
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/94a5cd19-26fb-408f-ad8d-3897e88f7fba) · [Read transcript](https://www.ax-check.com/pytsg.readthedocs.io/sessions/kimi.json)
Said pytsg is free, based on its PyPI distribution (bigfile extra noted), and named the TSG desktop app as a separate CSIRO commercial license. The open-source claim wasn't checked; PyPI's license field is empty. (seq 15, seq 59)
#### End-to-end onboarding
- **End-to-end onboarding not demonstrated**: pytsg is a local PyPI library, not a hosted product with credentials or an authenticated API. The agent correctly identified this and never attempted any login/credential flow; it only ran pip install and local file parsing, which does not meet the bar for onboarding verification.
  Event 59:

  ```text
  pytsg is not a hosted product — it's a free, open-source Python library (from the Geological Survey of Western Australia / CSIRO ecosystem) that parses TSG ("The Spectral Geologist") hyperspectral drill-core data files into NumPy arrays and pandas DataFrames. There is no hosted service, no API keys, and no account.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **Example script used wrong attribute name initially**: Agent error, quickly self-corrected: the first draft of the example script assumed a top-level `data.scalars` DataFrame, which doesn't exist on the TSG object returned by read_tsg. This caused a one-time AttributeError, but the agent introspected the object with `dir()` and fixed the script in the same turn, so it's not an unresolved blocker.
  Event 39:

  ```text
  AttributeError: 'TSG' object has no attribute 'scalars'
  ```
  Event 47:

  ```text
  nir attrs: ['bandheaders', 'classes', 'sampleheaders', 'scalars', 'spectra', 'spectrum_name', 'wavelength']
  ```

#### Suggested Changes
- **Document that scalar/metadata fields live per-band, not on the top-level TSG object**: In the pytsg README/docstring for read_tsg, clarify that attributes like `scalars` and `sampleheaders` are accessed via each band (e.g. `data.nir.scalars`) rather than directly on the returned TSG object. Verify by checking a new user can access scalar data on first try without needing to run `dir()` to discover the correct path, as happened in this session.
  Event 39:

  ```text
  print("\nScalar fields:", list(data.scalars.columns)[:10], "...")
                                     ^^^^^^^^^^^^
  AttributeError: 'TSG' object has no attribute 'scalars'
  ```
  Event 47:

  ```text
  nir attrs: ['bandheaders', 'classes', 'sampleheaders', 'scalars', 'spectra', 'spectrum_name', 'wavelength']
  ```

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/666cbd54-a0bd-4186-87bc-64cb95b6b40e) · [Read transcript](https://www.ax-check.com/pytsg.readthedocs.io/sessions/qwen.json)
Gave a cost of $0 and explained why: pytsg is an open-source pip library per the README, with no tiers or billing. It noted the only cost is getting the TSG data files. (seq 33, seq 58)
#### End-to-end onboarding
- **End-to-end onboarding not demonstrated**: pytsg is a plain open-source Python library (pip install, no accounts/API keys/service). There is no hosted product, pricing model, or authentication surface to onboard to, so the credential-plus-authenticated-operation bar does not apply. The agent correctly identified this and built a local example instead of attempting any auth flow.
  Event 58:

  ```text
  There is no pricing. It's `pip install pytsg` — no accounts, API keys, service tiers, or billing.
  ```
  Event 56:

  ```text
  Loaded TSG package: TSG(
    available=('nir', 'tir', 'mir', 'lidar'),
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
None identified in this transcript.

#### Suggested Changes
- **Clarify in the README that pytsg is a standalone library with no service component**: The seed task assumed a hosted product with pricing/SDK-API access; the agent had to investigate PyPI and GitHub from scratch to determine pytsg is just a local file-parsing library. Adding a one-line note near the top of the GitHub README (e.g. under the badges) stating 'pytsg is a standalone, free, open-source library with no hosted service or account required' would save discovery time for developers expecting a SaaS-style workflow.
  Event 58:

  ```text
  pytsg is not a hosted product** — it's a free, open-source Python library from the Geological Survey of Western Australia for reading `.tsg` file packages
  ```

### Task given to each agent
Help me build a simple example using pytsg. Tell me how pricing works, and briefly tell me whether this product will be easy for you to manage. Let me know if you get blocked. If this product has no developer workflow you can act on, say so plainly and stop. Stay light: use the hosted product through its SDK or API. Do not start local service stacks or wait for long-running commands; if the quickstart requires either, say so plainly and stop.

No product credentials were supplied and no purchases were authorized.

## Score: A · 100/100 (provisional)
Grades come from completed site checks. Coding sessions and skipped checks do not affect the score.

### Clarity
- **Pass** — Homepage answers Markdown requests

  ```text
  Homepage returned text/markdown content type when requested with Accept: text/markdown.
  ```

- **Pass** — llms.txt provides an actionable documentation index

  ```text
  llms.txt lists install, usage, and links to all docs pages including API reference.
  ```

- **Pass** — llms.txt provides navigation guidance

  ```text
  llms.txt organizes pages with descriptions and starting guidance for installation and quick start.
  ```

- **Skipped** — llms.txt mentions offered API, MCP, and skills

  ```text
  llms.txt describes a Python library only; no API, MCP, or skills surfaces are offered.
  ```

- **Pass** — A compact guide representation exists

  ```text
  llms.txt and .md pages provide compact Markdown guide representations for pytsg.
  ```

- **Pass** — A focused guide is directly retrievable

  ```text
  Quick-start .md page directly retrievable with install and usage steps.
  ```

- **Pass** — Equivalent instructions fit a token budget

  ```text
  Quick-start Markdown is 1963 tokens, well under the 8000-token budget.
  ```

- **Pass** — Product-docs links survive format changes

  ```text
  Markdown quick-start retains working links to API, glossary and examples pages.
  ```

- **Pass** — The compact guide is independently actionable

  ```text
  Quick Start gives install, read_tsg usage, and direct spectra/CRAS/LiDAR loading with runnable examples.
  ```

- **Pass** — Install and next-step links resolve

  ```text
  Homepage install and quick-start links resolve; fetched quick-start and API pages return 200.
  ```


### Onboarding
- **Pass** — Docs lead to a relevant quickstart

  ```text
  llms.txt and docs link a Quick Start page with concrete loading steps.
  ```

- **Pass** — Installation commands are extractable

  ```text
  llms.txt shows 'pip install pytsg' and the bigfile extra.
  ```

- **Pass** — Code examples are available without interaction

  ```text
  Quick Start shows runnable Python examples for read_tsg, read_spectra, read_cras, read_lidar.
  ```

- **Skipped** — Prerequisites and auth boundaries are explicit

  ```text
  No prerequisites or auth boundary stated; library needs no API key.
  ```


### Pricing
- **Skipped** — Pricing is readable without interaction

  ```text
  Not applicable: the relevant product is free. pytsg is a free open-source library; no pricing page or paid plans exist.
  ```

- **Skipped** — Prices are stated, not gated

  ```text
  Not applicable: the relevant product is free. No prices are stated because pytsg is a free open-source package.
  ```

- **Skipped** — Pricing units and limits are explicit

  ```text
  Not applicable: the relevant product is free. No pricing units or limits apply to this free open-source library.
  ```

- **Skipped** — Agents identify pricing and its assumptions

  ```text
  Not applicable: the relevant product is free. pytsg is a free open-source library; no pricing page or paid plans exist.
  ```


### Activation
- **Pass** — An API reference or OpenAPI spec is reachable

  ```text
  API Reference page documents pytsg classes and functions with signatures and examples.
  ```

- **Skipped** — An MCP server is documented and well-formed

  ```text
  No MCP server is documented anywhere in the fetched pytsg documentation.
  ```

- **Skipped** — A CLI install path is documented

  ```text
  pytsg is a Python library; no CLI install path is documented.
  ```

- **Pass** — SDK packages resolve on their registries

  ```text
  PyPI registry lookup for pytsg returned HTTP 200, confirming the package resolves.
  ```

- **Skipped** — Agent skills are published

  ```text
  No agent skills are published or mentioned in the fetched pytsg documentation.
  ```



[Full report data](https://www.ax-check.com/pytsg.readthedocs.io/report.json)
