ComputeFirst
by 321zz321 · remote · no sign-in to list tools · v1.0.0 · published by GitHub user 321zz321
Free deterministic tools for math, data transforms, dates, text, statistics, finance, and units.
15 tools: 1 can delete or cancel things, 11 change things and 3 only read.
Scanned Oct 21, 2026
- Deletes or cancels1Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things11Claude Code: ask: see these tools
- Only reads3Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http computefirst https://computefirst.net/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnexecute
The server marks "execute" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "execute" says "execute": a word for a change.
- Warnexecute_batch
The server marks "execute_batch" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "execute_batch" says "execute": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
15 tools
Deletes or cancels 1Claude Code: deny
remove_saved_toolRemove a tool id and version from the account's library.No findings
Why it is in this group
- The name "remove_saved_tool" says "remove": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Remove a tool id and version from the account's library. Without a key nothing changes.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
Changes things 11Claude Code: ask
activityThe account's recent calls and outcomes; pass next as before for older ones.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it The account's recent calls and outcomes; pass next as before for older ones. Without a key: signed_in:false.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
executeRun one ComputeFirst catalog tool by id and version with its JSON input.1 finding
Why it is in this group
- The name "execute" says "execute": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "execute" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "execute" says "execute": a word for a change.
Description, as the server wrote it Run one ComputeFirst catalog tool by id and version with its JSON input. Returns the deterministic result and an unmeasured savings receipt. Limits: computefirst.net/docs#limits.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
execute_batchRun 1–20 ComputeFirst catalog tools in one request.1 finding
Why it is in this group
- The name "execute_batch" says "execute": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "execute_batch" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "execute_batch" says "execute": a word for a change.
Description, as the server wrote it Run 1–20 ComputeFirst catalog tools in one request. Optional bindings fill an input key from an earlier result (JSON Pointer); include_result:false omits an intermediate. Steps after a failed dependency are skipped; nothing is retried automatically. Each success is one execution. Inputs, results and response: 256 KiB each. A factory work budget can skip an item with batch_work_limit; finance and exact decimal power/root/expression tools use the full factory allowance. Send additional factory operations separately. Split refused work; successful items are never retried automatically.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
feedbackTell ComputeFirst what helped or went wrong (a missing tool fits request_tool).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Tell ComputeFirst what helped or went wrong (a missing tool fits request_tool). A stable request_id makes retries safe. Leave out secrets and raw data.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
profileThe signed-in account: keys, privileges and tool-request status.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it The signed-in account: keys, privileges and tool-request status. Without a key: signed_in:false and the optional extras.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
report_savingsOptional, for the person: your model id and, if known, your own estimate of the tokens a call saved (estimated_tokens_saved).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Optional, for the person: your model id and, if known, your own estimate of the tokens a call saved (estimated_tokens_saved). Returns its dollar value at public list prices; unknown stays null. A measured comparison adds task_id, baseline_id, baseline, actual, whole_task:true, execution_ref.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
request_toolAsk for a tool that does not exist yet: the task, optionally example input and output.No findings
Why it is in this group
- The name "request_tool" says "request": a word for a change.
Description, as the server wrote it Ask for a tool that does not exist yet: the task, optionally example input and output. Optional contact_email (with email_consent:true), only if the person wants one email when it ships. Leave out secrets.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
save_toolSave a tool id and version to the account's library, with an optional note (saving again replaces the note).No findings
Why it is in this group
- The name "save_tool" says "save": a word for a change.
Description, as the server wrote it Save a tool id and version to the account's library, with an optional note (saving again replaces the note). Without a key nothing is saved.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
savingsSavings totals, optionally for one model: with a key, the account's measured and estimated totals; otherwise community verified totals.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Savings totals, optionally for one model: with a key, the account's measured and estimated totals; otherwise community verified totals. Unmeasured is not zero.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
sign_inOnly when the person explicitly asks for a free account (consent:true): creates one for their email (unverified) and returns an agent key once, for saved tools, history, personal s…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Only when the person explicitly asks for a free account (consent:true): creates one for their email (unverified) and returns an agent key once, for saved tools, history, personal savings and a higher limit. The person stores the key in their client settings; do not repeat it in the conversation. newsletter:true only if they ask.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
subscribeSubscribe an email to new-tool announcements, only when the person asks for them (consent:true).No findings
Why it is in this group
- The name "subscribe" says "subscribe": a word for a change.
Description, as the server wrote it Subscribe an email to new-tool announcements, only when the person asks for them (consent:true). Every email has an unsubscribe link.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 3Claude Code: allow
describeInput schema, limits and examples of one ComputeFirst catalog tool, by id and version.No findings
Why it is in this group
- The name "describe" says "describe": a word for reading.
Description, as the server wrote it Input schema, limits and examples of one ComputeFirst catalog tool, by id and version.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_saved_toolsTools saved in the account's library (id, version, note).No findings
Why it is in this group
- The name "list_saved_tools" says "list": a word for reading.
Description, as the server wrote it Tools saved in the account's library (id, version, note). Without a key: signed_in:false and no tools.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
searchSearch the ComputeFirst catalog (computefirst.net/tools) with an English task.No findings
Why it is in this group
- The name "search" says "search": a word for reading.
Description, as the server wrote it Search the ComputeFirst catalog (computefirst.net/tools) with an English task. Returns up to 5 tools (3 by default) with id, version and a 0–1 score; a confident first match includes its input contract. No match: request_tool can ask for one.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http computefirst https://computefirst.net/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__computefirst__search",
"mcp__computefirst__describe",
"mcp__computefirst__list_saved_tools"
],
"ask": [
"mcp__computefirst__execute",
"mcp__computefirst__execute_batch",
"mcp__computefirst__savings",
"mcp__computefirst__feedback",
"mcp__computefirst__request_tool",
"mcp__computefirst__subscribe",
"mcp__computefirst__sign_in",
"mcp__computefirst__profile",
"mcp__computefirst__activity",
"mcp__computefirst__save_tool",
"mcp__computefirst__report_savings"
],
"deny": [
"mcp__computefirst__remove_saved_tool"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as computefirst. Review it before you use it.
