← HelicalCONTENT HISTORY
WHAT CHANGED
Update to Helical
Snapshot Oct 24, 2026 · 13:41 UTC · version 1.0.2
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save Helical and check future changes in Following.
Up to 10 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Read the user's Helical credit balance, tell them what a run will cost and when they are actually charged, and explain a run refused for insufficient credit. Use when the user asks what their balance is, whether they can afford a run, what an embedding or fine-tune will cost, or why a run would not start.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 271
}
],
"name": "check-credits",
"skill_md_contents": "---\nname: check-credits\ndescription: >-\n Read the user's Helical credit balance, tell them what a run will cost and when they are\n actually charged, and explain a run refused for insufficient credit. Use when the user\n asks what their balance is, whether they can afford a run, what an embedding or\n fine-tune will cost, or why a run would not start.\n---\n\n# Credits: read the balance, explain the charge\n\n## The balance is readable\n\n`whoami()` returns the signed-in `email`, the current `credits_balance`, and the `console`\nURL. When the user asks how many credits they have, that number is the answer — give it.\n\n**One credit is one USD**, so a credit figure is a dollar figure and there is nothing to\nconvert.\n\nThe figure is current as of the call, and it moves as runs are charged and refunded. Read\nit again rather than reusing one from earlier in the conversation.\n\n## What a run costs\n\nA run costs **a fixed amount per job plus a rate per processed cell**, not per token:\n\n```\ncredits = jobs × (credits_per_job + cells × passes × credits_per_cell)\n```\n\n- `jobs` is how many jobs the launch runs, and `cells` is the cells in each. An embedding\n launch is **one job**.\n- `credits_per_job` pays for the work a job does before its first cell, so it is the same\n for ten cells or a million. On a small dataset it is most of the cost.\n- `passes` is **1 for an embedding**. For fine-tuning it is **6 × the epoch count**: a\n training step does far more work per cell than an embedding. A validation dataset adds\n its own cells **once per epoch**. So fine-tuning a dataset costs many times what\n embedding it does. The per-job amount is paid once, not once per epoch. The `listModels`\n tool description states the current pass counts; trust it over this page if they differ.\n- Both rates are on every `listModels` entry, and differ per model. A model whose rates are\n `null` is not priced and cannot be run here; it is not free.\n- A fine-tuned model is charged at the rates of the `base_model` it descends from; it has no\n rates of its own and could not have them, since the user creates it at run time.\n- There is no deduplication — the same cell twice is two processed cells.\n\nUse this when the user is deciding **whether** to run: `cellCount` from `listDatasets` or\n`getDataset`, and the two rates from `listModels`. For example, with a model at\n`credits_per_job` 0.03 and `credits_per_cell` 0.000003, embedding 300,000 cells is\n`1 × (0.03 + 300000 × 1 × 0.000003)` = **0.93 credits**. Fine-tuning the same 300,000 cells\nfor 2 epochs, with a 30,000-cell validation dataset, is\n`0.03 + (300000 × 2 × 6 + 30000 × 2) × 0.000003` = **11.01 credits**. Read the real rates from\n`listModels` rather than reusing these.\n\n**But your arithmetic is an estimate, not the quote.** When a run is actually queued,\n`triggerEmbedding` or `triggerFinetuning` prices it and returns the platform's own figure,\nwhich is what the charge will read. Queuing is free and starts nothing, so prefer that\nfigure once it exists, and relay it rather than recomputing.\n\n## When the charge actually happens\n\nThis is usually the user's real question, and it is reassuring:\n\n- Queuing a run charges nothing.\n- The credit is taken **when the run starts**, at approval.\n- A run that **fails or is cancelled is refunded in full**.\n\nSo a failed run costs nothing. Say so plainly when one fails — it is the first thing they\nwill want to know.\n\n## When the balance will not cover it\n\nA **402 `insufficient_balance`** can come back either when the run is queued or when it is\napproved. Either way nothing launched and nothing was charged — but **the confirmation is spent**.\nA later change to the balance does not make it approvable again; the run has to be re-requested\nfrom the trigger tool, which mints a fresh quote.\n\nCredits are managed in their Helical account, not through this plugin.\n\nRetrying the same request unchanged will not help, and the error says so. Do not loop.\n\n## Where the account lives\n\nThe account lives on the console, **console.helical.bio**: the site the user signed in to when\nthey connected this plugin. Use the `console` URL `whoami` returned. Account settings, usage\nhistory and docs live there.\n\nIt is **not** `helical.bio`. That is the marketing site and holds nothing about their\naccount, so sending them there is the same wrong turn as inventing a menu. Beyond the pages\nnamed above, describe the destination rather than guessing a deeper URL.\n\nDo not describe a profile menu, an avatar dropdown, or a workspace billing screen. That is\na different Helical product, and inventing navigation sends a paying customer looking for\nsomething that does not exist.\n\n\n## Conventions\n\nRead the balance with `whoami`, never guess it · one credit is one USD · re-read rather\nthan reuse · a fixed amount per job plus a rate per processed cell, no deduplication · your arithmetic estimates, the trigger\nquotes — prefer the quote · charged at start, refunded in full on failure or cancellation ·\na 402 spends the confirmation, so re-request the run once the balance covers it ·\nthe console URL the platform gave you, never `helical.bio`, never an invented menu.\n"
}SHA-256 of public snapshot: 6fc746b60ec9ff8c59d2c1db99bd37d272dd14ad0fde7a72b3c96d5bf31f6480