ComputeFirst
Free deterministic tools for math, data transforms, dates, text, statistics, finance, and units.
Should I use this
Quality & Safety
Findings (1)
- LOWin request_tool
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"computefirst": {
"url": "https://computefirst.net/mcp"
}
}
}Remote endpoints
https://computefirst.net/mcpstreamable-httpWhat it can do
Tool inventory
Tools (15)
🟢search(query, limit, include_contract)
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.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"maxLength": 256
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 5
},
"include_contract": {
"type": "boolean",
"default": true
}
},
"required": [
"query"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"version"
],
"properties": {
"id": {
"type": "string"
},
"version": {
"type": "string"
},
"description": {
"type": "string"
},
"score": {
"type": "number"
},
"contract": {
"type": "object"
}
}
}
},
"method": {
"type": "string"
},
"hint": {
"type": "string"
}
},
"required": [
"results"
]
}🟢describe(id, version)
Input schema, limits and examples of one ComputeFirst catalog tool, by id and version.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9_-]+$",
"maxLength": 100
},
"version": {
"type": "string",
"maxLength": 100
}
},
"required": [
"id",
"version"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"version": {
"type": "string"
},
"description": {
"type": "string"
},
"input_schema": {
"type": "object"
}
},
"required": [
"id",
"version",
"input_schema"
]
}🟢execute(id, version, input, model)
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.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9_-]+$",
"maxLength": 100
},
"version": {
"type": "string",
"maxLength": 100
},
"input": {
"type": "object"
},
"model": {
"type": "string",
"maxLength": 256,
"description": "Optional: your model id, only so savings can be shown per model"
}
},
"required": [
"id",
"version",
"input"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"result": {},
"savings": {
"type": "object"
},
"invite": {
"type": "string"
}
},
"required": [
"result"
]
}🟢execute_batch(operations, model)
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.
Input Schema
{
"type": "object",
"properties": {
"operations": {
"type": "array",
"minItems": 1,
"maxItems": 20,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"version",
"input"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9_-]+$",
"minLength": 1,
"maxLength": 100
},
"version": {
"type": "string",
"pattern": "^[a-zA-Z0-9.+_-]+$",
"minLength": 1,
"maxLength": 100
},
"input": {
"type": "object"
},
"include_result": {
"type": "boolean",
"default": true,
"description": "False returns a success receipt only; the bounded result remains available to later bindings and consent-gated audit. Omission does not bypass the batch work budget."
},
"bindings": {
"type": "array",
"maxItems": 16,
"description": "Fill distinct top-level input keys from earlier successful results; keys must be absent from input.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"key",
"from",
"path"
],
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"from": {
"type": "integer",
"minimum": 0,
"maximum": 19,
"description": "Zero-based earlier operation index; no forward/self references."
},
"path": {
"type": "string",
"maxLength": 1024,
"description": "RFC 6901 JSON Pointer into that operation result, not its receipt. Empty selects the whole result."
}
}
}
}
}
}
},
"model": {
"type": "string",
"maxLength": 256,
"description": "Optional: your model id, only so savings can be shown per model"
}
},
"required": [
"operations"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"index",
"status"
]
}
},
"summary": {
"type": "object",
"required": [
"succeeded",
"failed"
],
"properties": {
"succeeded": {
"type": "integer"
},
"failed": {
"type": "integer"
}
}
},
"invite": {
"type": "string"
}
},
"required": [
"results",
"summary"
]
}🟢savings(model)
Savings totals, optionally for one model: with a key, the account's measured and estimated totals; otherwise community verified totals. Unmeasured is not zero.
Input Schema
{
"type": "object",
"properties": {
"model": {
"type": "string",
"maxLength": 100
}
},
"additionalProperties": false
}⚪feedback(category, message, request_id, execution_ref)
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.
Input Schema
{
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"missing_capability",
"useful",
"wrong_result",
"hard_to_use",
"other"
]
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"request_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"execution_ref": {
"type": "string",
"maxLength": 100
}
},
"required": [
"category",
"message",
"request_id"
],
"additionalProperties": false
}⚪request_tool(description, example_input, example_output, contact_email, email_consent)
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.
Input Schema
{
"type": "object",
"properties": {
"description": {
"type": "string",
"minLength": 1,
"maxLength": 4096
},
"example_input": {
"type": "string",
"maxLength": 4096
},
"example_output": {
"type": "string",
"maxLength": 4096
},
"contact_email": {
"type": "string",
"maxLength": 254
},
"email_consent": {
"type": "boolean"
}
},
"required": [
"description"
],
"additionalProperties": false
}⚪subscribe(email, consent)
Subscribe an email to new-tool announcements, only when the person asks for them (consent:true). Every email has an unsubscribe link.
Input Schema
{
"type": "object",
"properties": {
"email": {
"type": "string",
"maxLength": 254
},
"consent": {
"const": true
}
},
"required": [
"email",
"consent"
],
"additionalProperties": false
}⚪sign_in(email, consent, newsletter)
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.
Input Schema
{
"type": "object",
"properties": {
"email": {
"type": "string",
"maxLength": 254
},
"consent": {
"const": true
},
"newsletter": {
"type": "boolean"
}
},
"required": [
"email",
"consent"
],
"additionalProperties": false
}🟢profile
The signed-in account: keys, privileges and tool-request status. Without a key: signed_in:false and the optional extras.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢activity(limit, before)
The account's recent calls and outcomes; pass next as before for older ones. Without a key: signed_in:false.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50
},
"before": {
"type": "string",
"maxLength": 100
}
},
"additionalProperties": false
}🟢list_saved_tools
Tools saved in the account's library (id, version, note). Without a key: signed_in:false and no tools.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟡save_tool(id, version, note)
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.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9_-]+$",
"maxLength": 100
},
"version": {
"type": "string",
"maxLength": 100
},
"note": {
"type": "string",
"maxLength": 200
}
},
"required": [
"id",
"version"
],
"additionalProperties": false
}🔴remove_saved_tool(id, version)
Remove a tool id and version from the account's library. Without a key nothing changes.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9_-]+$",
"maxLength": 100
},
"version": {
"type": "string",
"maxLength": 100
}
},
"required": [
"id",
"version"
],
"additionalProperties": false
}🟢report_savings(model, provider, execution_ref, estimated_tokens_saved, task_id, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"model": {
"type": "string",
"maxLength": 100
},
"provider": {
"type": "string",
"maxLength": 40
},
"execution_ref": {
"type": "string",
"maxLength": 100
},
"estimated_tokens_saved": {
"type": "object",
"additionalProperties": false,
"required": [
"input",
"output"
],
"properties": {
"input": {
"type": "integer",
"minimum": 0
},
"output": {
"type": "integer",
"minimum": 0
}
}
},
"task_id": {
"type": "string",
"maxLength": 100
},
"baseline_id": {
"type": "string",
"maxLength": 100
},
"baseline": {
"type": "object",
"required": [
"input",
"cached_input",
"output"
]
},
"actual": {
"type": "object",
"required": [
"input",
"cached_input",
"output"
]
},
"whole_task": {
"const": true
}
},
"required": [
"model"
],
"additionalProperties": false
}Community
Evidence