crabe

Store listings — copy ready to paste

Everything below is written to be pasted into the two dashboards as-is. Character counts are given where a limit exists; the dashboards enforce their own, so re-check if a field is refused.

The naming is settled. The extension keeps its store name, Text Reliability Assessment — descriptive, and changing it would move an entry existing users already have. The repository is renamed to crabe, which is what the project is called and what the icon shows. The two are explained to each other in the README and inside the extension, on the rubrics page.

The GitHub URL below assumes that rename. Do it before submitting, or the listing links to a 404.


Chrome Web Store

Name

Text Reliability Assessment

Short description (description in the manifest, 132 max)

Assesses the text on a web page and states how strong the evidence behind each finding is. Uses your own AI key. No tracking.

125 characters.

Detailed description

Crabe reads the text on a web page and tells you what kind of writing it is, who published it, what independent sources say about them, and whether the page's own links actually go anywhere.

It never gives you a single score. It gives you four separate axes, and every finding states how strong its own evidence is.

WHY THAT MATTERS

There is a difference between "we fetched this and checked it", "you can open these sources yourself", "this is a judgement about text on your screen" and "the model remembers this and nothing here can verify it". Most tools present all four the same way. Crabe labels each one, in writing, and refuses to let a finding claim more support than it has.

An axis that could not run says why. It never reports zero. "We could not look" and "we looked and it was bad" stay different statements all the way to the screen.

WHAT IT CHECKS

• What the text does — classified as Factual, Opinion or Fiction, then scored only against the rubric for that category.
• Who published it — the byline and date declared in the page, plus what the model knows about the author and publisher, marked as recall.
• What other sources say — lateral reading: independent sources on the publisher and the central claim, with links you can open.
• Whether its links work — each outbound link in the article is fetched and its real outcome reported. A page that names its sources and links none of them is told to you plainly.

The rubrics are readable inside the extension, and so is the complete instruction sent to the model, word for word. What scored your page is what you can read.

YOU NEED YOUR OWN AI KEY

Crabe has no server and no account. It uses an API key you provide, and you are billed by that provider, not by us:

• Anthropic Claude — its web search returns durable source links.
• Google Gemini — has a free tier. Its search citations are redirect links that expire and cannot be checked automatically, and Crabe labels them as such.
• A local model through Ollama — the page's text never leaves your machine. Lateral reading is then unavailable, because a local model has no web search tool, and Crabe says so rather than quietly using a cloud provider you did not choose. Citation checking, if you switch it on, still contacts the sites the page links to: that is what checking a link means, and it is true of every provider.

PRIVACY

No telemetry, no analytics, no accounts, no server. There is nothing to phone home to.

Analysis only happens when you click, on the page you are looking at. The two kinds of outgoing request beyond your chosen provider — the search query for lateral reading, and the requests to the page's own links — are each behind their own switch, off until you turn them on, and each switch states what is sent and to whom. A withheld switch is enforced before a network connection is opened.

Your API keys are kept on the machine you entered them on and excluded from browser sync, so they are never copied to Google's or Mozilla's servers.

The text of an analysed page is never written to disk. Every stylesheet and script is bundled: opening the settings page contacts nobody.

WHAT IT DOES NOT DO

Crabe supports critical judgement; it does not replace it. Every result says so, and means it: read the page critically, and read the assessment critically too. Any model can be confidently wrong — comparing two of them on the same page is the cheapest way to see that for yourself.

Crabe assesses text only. It does not evaluate images, video or audio — including whether they are authentic, current, or shown in their original context. That limit is deliberate, it is stated on every result, and the evidence for the decision is published in the repository.

It also does not tell you whether something is true. It tells you what the page supports, who stands behind it, and what you can check for yourself.

OPEN SOURCE

AGPL-3.0. The network-copyleft clause forecloses turning this into a closed hosted service. Source, architecture notes and the full reasoning behind what was built and what was dropped:
https://github.com/clenoble/crabe

Category

Productivity (secondary, if offered: Tools).

Single-purpose statement

Crabe has one purpose: to assess the reliability of the text on a web page the user explicitly submits, and to present that assessment with an explicit evidence level for each finding. Every permission it requests serves that one operation.

Permission justifications

Chrome asks for one per permission. Keep them this specific — vague justifications are the common rejection cause.

Field Text to paste
activeTab Reads the text, metadata and links of the page the user is on, only at the moment they click Analyse. It is not used at any other time and grants no standing access.
scripting Injects the extraction functions that read the page’s text, its declared author and date, and its outbound links. Injection happens once per analysis, on the tab the user clicked from.
storage Stores the user’s own settings: which provider and model they chose, their two consent switches, and their API key. The key is written to storage.local only and deliberately excluded from storage.sync.
tabs Identifies which tab a result belongs to, so an analysis is never displayed over a different page, and lets the user return to the page a result describes.
sidePanel Opens the side panel the analysis runs in. The analysis needs a context that survives longer than a service worker’s 30-second fetch limit.
Host permission <all_urls> (optional) Never requested at install. Requested in two places, for two reasons. Per site, at the moment the user clicks Analyse, so the extension can read that one page. And for all sites, only if the user turns on citation checking, because verifying that a link resolves means requesting it and a page’s links point at other people’s domains — there is no narrower permission that reaches them. Turning that switch off hands the broad access back. With citation checking off, the extension only ever holds the pages the user has analysed.
Host generativelanguage.googleapis.com The Google Gemini API, if the user selects Gemini and supplies a key.
Host api.anthropic.com The Anthropic Claude API, if the user selects Claude and supplies a key.
Host localhost:11434 A local Ollama server, if the user selects the local-model option. Never leaves the machine.
Remote code None. Every script and stylesheet is bundled. The extension loads no remote code of any kind.

Data usage disclosure

Chrome’s form asks what you collect. Answer honestly on both counts — the developer collects nothing, and the extension does transmit page content to a third party at the user’s request.

Certifications to tick:

Privacy policy URL: the raw or rendered docs/privacy_policy.md in the repository.


Firefox Add-ons (AMO)

Name

Text Reliability Assessment

Summary (250 max)

Assesses the text on a web page: what kind of writing it is, who published it, what independent sources say, and whether its links work. Every finding states how strong its own evidence is. Uses your own AI key — no account, no server, no tracking.

248 characters.

Description

Use the Chrome detailed description above unchanged. AMO accepts basic HTML; if you prefer marked-up text, <b> for the section headings and <ul>/<li> for the bullet lists are enough, and the plain text is fine as-is.

Categories

Privacy & Security, and Other or Search Tools as secondary.

Notes for the reviewer

This add-on is built from source with Vite and ships bundled JavaScript, so
full source and build instructions are provided.

BUILD

  Node.js 22 LTS, npm 10 (Node 18+ / npm 9+ also work)

  npm ci
  npm run build:firefox

  Output: dist-firefox/  — this is the submitted package, byte for byte.

  Optional: `npm test` runs 90 assertions that check the add-on's declared
  behaviour, including that no request is made without consent and that API
  keys are never written to storage.sync.

WHAT IT SENDS, AND WHEN

  Nothing happens without a click on "Analyse this page".

  1. Always: the page's text, URL, title and declared author/date go to the one
     AI provider the user configured with their own key — Anthropic, Google, or
     a local Ollama server on localhost.

  2. Only with an explicit, separate opt-in: a search query for lateral
     reading, sent through the same provider's web search tool.

  3. Only with a second, independent opt-in: an HTTP GET to each outbound link
     in the article, to see whether it resolves. Cookies are not sent.

  Both opt-ins default to off. The check is fail-closed and enforced at the
  network boundary in src/core/net-guard.ts before a socket is opened; a
  missing or malformed setting reads as withheld.

PERMISSIONS

  activeTab + scripting  read the submitted page, at the moment of the click
  storage                the user's own settings and API key
  tabs                   bind a result to the tab it describes
  <all_urls>             OPTIONAL, never requested at install. Two paths,
                         both via permissions.request() on a user gesture:
                         (a) per site, at the moment of the click, to read
                             the page being analysed;
                         (b) all sites, only when the user enables citation
                             checking, because checking whether a link
                             resolves means requesting it and links point
                             off-domain by definition. Revoked with
                             permissions.remove() when that switch is
                             turned off.

DATA HANDLING

  No server, no account, no telemetry, no analytics, no remote code. The
  extracted page text is passed in memory to the sidebar and is never written
  to storage. API keys are written to storage.local only and are explicitly
  excluded from storage.sync — this is enforced in src/settings-store.ts and
  asserted by the test suite.

INTERFACE

  Firefox uses sidebar_action pointing at sidepanel.html; the toolbar button
  toggles it from the background script. There is no popup: an analysis takes
  tens of seconds and a popup is destroyed when the window loses focus.

LICENCE

  AGPL-3.0.

Assets needed

Asset Size Status
Store icon 128 × 128 public/icon128.png — the full illustration
Screenshots 1280 × 800, 1 to 5 docs/screenshots/store/ — seven available, five go up
Small promo tile 440 × 280 optional, to produce
Marquee tile 1400 × 560 optional

Screenshots worth taking, in this order — each shows something a competitor listing cannot claim:

  1. A finished analysis on a real article, with the four axes and the evidence labels visible.
  2. The rubrics page, scrolled to What is actually sent with one prompt expanded — the whole instruction, readable.
  3. The settings page showing the two consent switches with their “Sends / To” lines.
  4. An axis reporting that it could not run, with its reason, next to one that did — the “never reports zero” behaviour, shown rather than asserted.