Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add WellApp-ai/Well --skill querying-well-datagit clone --depth 1 https://github.com/WellApp-ai/WellWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/wellapp-ai/well/querying-well-data)<a href="https://agentmods.dev/skills/wellapp-ai/well/querying-well-data"><img src="https://agentmods.dev/badge/skills/wellapp-ai/well/querying-well-data.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00058 | $0.00674 |
| Opus 5 | $0.00029 | $0.00337 |
| Sonnet 5 | $0.00012 | $0.00135 |
| Haiku 4.5 | $0.00006 | $0.00067 |
Grade A, and why
querying-well-data scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 46 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Querying Well data
Well exposes a workspace's financial graph through three MCP tools:
well_get_schema()— list every available root (entity type).well_get_schema({ root })— list the fields available on one root, with types and semantic context.well_query_records({ root, fields, whereClause?, orderBy?, limit? })— read rows.well_get_entity({ root, id })— fetch one record by id.
The one rule: discover before you query
Always call well_get_schema(root) first, pick the fields you need from what it returns, then call well_query_records. Field paths are arrays: "invoices.issuer.name" → ["invoices", "issuer", "name"]. Do not guess field names — they vary by root and are documented in the schema response (each field carries a type and often a context explaining what it means).
The roots you can read
Calling well_get_schema() with no argument returns the full set. It includes far more than invoices and companies — in particular the accounting graph:
- Commercial documents:
invoices,invoice_items,invoice_transactions - Parties:
companies,people,payment_means - Banking:
accounts,transactions,account_balances - Accounting graph (read-only, posted by Well's pipelines):
ledger_accounts,journals,journal_entries - Reference:
tax_rates,exchange_rates,categories,connectors - Workspace:
memberships,tasks,workspace_connectors
If you are about to answer a financial question by reconstructing it from raw invoices, stop and check well_get_schema() first — the posted ledger (journal_entries, ledger_accounts) is almost always the correct, more accurate source. See the well:compte-de-resultat and well:balance-sheet skills.
Filtering
whereClause is a Hasura-style boolean expression. Use the operator the field's type allows (from the schema):
numeric/date→_eq,_gt,_lt,_gte,_lteenum→_eq,_neq,_in,_nin,_is_nulltext→_eq,_like,_ilike- relations → nest:
{ "issuer": { "name": { "_ilike": "%acme%" } } }
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 7d ago First seen · 46 lines · 58 tokens per session scan A 2a2dc5664967
querying-well-data is a skill published in the GitHub repository WellApp-ai/Well (340 stars, last pushed 1mo ago), licensed MIT. It adds 58 tokens to every session and 674 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
bullmq
Skill "bullmq" from ashish7802/awesome-api-skills, covering bullmq skill, ecosystem graph preview, recommended next skills, quick start and production patterns.
convex
Convex manages your database, server functions, and client state. You write server functions in TypeScript, and Convex automatically syncs the results to your React frontend via WebSockets.
drizzle
Skill "drizzle" from ashish7802/awesome-api-skills, covering drizzle orm skill, ecosystem graph preview, recommended next skills, quick start and production patterns.
mysql
Skill "mysql" from ashish7802/awesome-api-skills, covering mysql skill, ecosystem graph preview, recommended next skills, quick start and production patterns.
neon
Neon separates compute and storage, allowing instant database branching and autoscaling. For most Node.js applications, use the @neondatabase/serverless driver over standard pg to leverage WebSocket connections, which bypass serverless environment connection limits.
paddle
Paddle acts as a Merchant of Record, meaning they handle sales tax (VAT, GST) calculations and remittance for you. Use the @paddle/paddle-node SDK to manage subscriptions and invoices.