Somnia Oracle
Ratings
Caliber grades every question from AAA to C on how likely it is to resolve cleanly. Read ratings over GraphQL, REST or as an embeddable badge.
Every question gets a quality rating from Caliber, Somnia Oracle's rating engine: a band from AAA to C, a score from 0 to 100, and a breakdown by criterion. A rating measures how well the question is defined: whether its sources are reachable and relevant, whether they agree, and whether the question text is precise. It predicts how cleanly the question will resolve, not what the answer will be.
Ratings are advisory. They never block or change resolution. Venues and apps use them to decide which questions to list or trust.
Bands
| Band | Score | Meaning |
|---|---|---|
AAA |
90 to 100 | Exceptional definition quality; highly reliable and unambiguous. |
AA |
80 to 89 | Very strong; minor weaknesses. |
A |
70 to 79 | Strong; some limitations. |
BBB |
60 to 69 | Adequate; moderate ambiguity or risk. |
BB |
50 to 59 | Speculative; notable weaknesses. |
B |
35 to 49 | Weak; high risk of poor resolution. |
CCC |
20 to 34 | Very weak; high likelihood of problematic resolution. |
CC |
10 to 19 | Highly unreliable; severe structural issues. |
C |
0 to 9 | Structurally broken or guaranteed to fail resolution. |
Criteria
Two criteria are gates. If either fails, the score is 0, whatever else is true:
- Source reachability: can an agent reach every source?
- Source blocklisted: is any source on a blocklist?
The rest are scored and weighted into the final score:
| Criterion | Weight | Question it asks |
|---|---|---|
| Source count | 23.33% | Are there enough sources to resolve fairly? One source scores 20%; five or more score 100%. |
| Source agreement | 23.33% | Do enough of the sources agree? |
| Source relevancy | 23.34% | Are the sources likely to contain the information the question asks for? |
| Source history | 10% | Have these sources been used in earlier questions that resolved successfully? |
| Prompt subjectivity | 10% | How precise, specific and unambiguous is the question text? |
| Temporal soundness | 10% | For a time-based question, does the source encode the moment being asked about? |
Each criterion in a rating carries a status, a one-line summary and the evidence behind it, such as which URLs were checked and what they returned. The quickest ways to a higher grade are more independent sources, sources with the timestamp in the URL, and question text that names the exact instant, unit and thing being measured. See Asking questions.
When ratings appear
New questions are rated shortly after they are indexed, usually within seconds to a couple of minutes. Until then the rating is null: show it as "unrated", not as an error.
A rating is fixed for a given algorithm version (rating_version). When the algorithm changes, questions are re-rated under the new version. Treat (question_id, rating_version) as the cache key and rated_at as freshness.
Reading ratings
Ratings are public; no key is needed. The origins are:
| Network | Origin |
|---|---|
| Mainnet | https://prd.oracle.somnia.host |
| Testnet | https://dev.oracle.somnia.host |
GraphQL
POST {origin}/v1/graphql. The rating is a nested field on a question:
{
Question_by_pk(id: "72000") {
displayName
rating {
rating # band, e.g. "AA"
final_score # e.g. "82.00"
rating_version
criteria # [{ key, name, status, summary, evidence, ... }]
rated_at
}
}
}
You can't filter, sort or subscribe through the nested rating field. For lists, query the ratings table directly and join on question_id:
{
caliber_question_rating(where: { rating: { _eq: "AAA" } }, order_by: { rated_at: desc }, limit: 20) {
question_id
rating
final_score
rating_version
rated_at
}
}
REST
| Endpoint | Returns |
|---|---|
GET {origin}/api/caliber/{questionId} |
The band, score, definition and criteria, with badge and detail URLs |
GET {origin}/api/caliber/{questionId}/badge |
An SVG badge you can embed with <img src> |
GET {origin}/api/caliber/latest |
The most recent ratings with their questions, paginated with limit and cursor |
curl https://prd.oracle.somnia.host/api/caliber/72000
# {"status":"ok","result":{"id":"72000","rating":"AAA","score":100,...}}
An unrated question returns a status other than ok.
In the Somnia Explorer
The Somnia Explorer shows each question's band on its card in the question list and on its detail page.