For the complete documentation index, see llms.txt.
Estimate simplified baseball WAR for position players or pitchers.
One POST adds WAR Calculator to your app, site, workflow, or agent — formula, validation, edge cases, and docs already handled.
prefer a UI? Open the WAR Calculator on miniwebtool.com →
POST https://api.miniwebtool.com/v1/tools/war-calculator/run
| Field | Type | Req. |
|---|---|---|
player_type
position | pitcher
|
str |
— |
pa
|
int |
— |
hits
|
int |
— |
doubles
|
int |
— |
triples
|
int |
— |
home_runs
|
int |
— |
walks
|
int |
— |
hbp
|
int |
— |
stolen_bases
|
int |
— |
caught_stealing
|
int |
— |
position
C | 1B | 2B | 3B | SS | LF | CF | RF | DH
|
str |
— |
innings_played
|
float |
— |
errors
|
int |
— |
league_avg_obp
|
float |
— |
league_avg_slg
|
float |
— |
innings_pitched
|
float |
— |
earned_runs
|
int |
— |
strikeouts
|
int |
— |
walks_allowed
|
int |
— |
hits_allowed
|
int |
— |
home_runs_allowed
|
int |
— |
league_era
|
float |
— |
league_fip
|
float |
— |
pitcher_type
SP | RP
|
str |
— |
65536 bytes.hash_only{
"request_id": "01K...",
"tool": "war-calculator",
"tool_version": "2026-04-22",
"credits_used": 1,
"result": { ... }
}
1,000 free calls/mo · no card · key arrives by email
curl -X POST https://api.miniwebtool.com/v1/tools/war-calculator/run \
-H 'Authorization: Bearer mwt_live_YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"player_type":"position","pa":600,"hits":150,"doubles":30,"triples":3,"home_runs":25,"walks":60,"hbp":5,"stolen_bases":15,"caught_stealing":5,"position":"SS","innings_played":1350,"errors":10,"league_avg_obp":0.32,"league_avg_slg":0.41}'
import requests
resp = requests.post(
'https://api.miniwebtool.com/v1/tools/war-calculator/run',
headers={'Authorization': 'Bearer mwt_live_YOUR_KEY'},
json={'player_type': 'position', 'pa': 600, 'hits': 150, 'doubles': 30, 'triples': 3, 'home_runs': 25, 'walks': 60, 'hbp': 5, 'stolen_bases': 15, 'caught_stealing': 5, 'position': 'SS', 'innings_played': 1350, 'errors': 10, 'league_avg_obp': 0.32, 'league_avg_slg': 0.41},
)
resp.raise_for_status()
data = resp.json()
print(data)
const resp = await fetch(
'https://api.miniwebtool.com/v1/tools/war-calculator/run',
{
method: 'POST',
headers: {
'Authorization': 'Bearer mwt_live_YOUR_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({"player_type":"position","pa":600,"hits":150,"doubles":30,"triples":3,"home_runs":25,"walks":60,"hbp":5,"stolen_bases":15,"caught_stealing":5,"position":"SS","innings_played":1350,"errors":10,"league_avg_obp":0.32,"league_avg_slg":0.41}),
}
);
const data = await resp.json();
console.log(data);
<?php
$ch = curl_init('https://api.miniwebtool.com/v1/tools/war-calculator/run');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer mwt_live_YOUR_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'player_type' => 'position',
'pa' => 600,
'hits' => 150,
'doubles' => 30,
'triples' => 3,
'home_runs' => 25,
'walks' => 60,
'hbp' => 5,
'stolen_bases' => 15,
'caught_stealing' => 5,
'position' => 'SS',
'innings_played' => 1350,
'errors' => 10,
'league_avg_obp' => 0.32,
'league_avg_slg' => 0.41
]),
]);
$resp = curl_exec($ch);
curl_close($ch);
print_r(json_decode($resp, true));
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://api.miniwebtool.com/v1/tools/war-calculator/run')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = (uri.scheme == 'https')
req = Net::HTTP::Post.new(uri)
req['Authorization'] = 'Bearer mwt_live_YOUR_KEY'
req['Content-Type'] = 'application/json'
req.body = {
'player_type' => 'position',
'pa' => 600,
'hits' => 150,
'doubles' => 30,
'triples' => 3,
'home_runs' => 25,
'walks' => 60,
'hbp' => 5,
'stolen_bases' => 15,
'caught_stealing' => 5,
'position' => 'SS',
'innings_played' => 1350,
'errors' => 10,
'league_avg_obp' => 0.32,
'league_avg_slg' => 0.41
}.to_json
resp = http.request(req)
puts JSON.parse(resp.body).inspect
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
body, _ := json.Marshal(map[string]interface{}{
"player_type": "position",
"pa": 600,
"hits": 150,
"doubles": 30,
"triples": 3,
"home_runs": 25,
"walks": 60,
"hbp": 5,
"stolen_bases": 15,
"caught_stealing": 5,
"position": "SS",
"innings_played": 1350,
"errors": 10,
"league_avg_obp": 0.32,
"league_avg_slg": 0.41,
})
req, _ := http.NewRequest("POST", "https://api.miniwebtool.com/v1/tools/war-calculator/run", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer mwt_live_YOUR_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(string(out))
}
import java.net.URI;
import java.net.http.*;
var client = HttpClient.newHttpClient();
var req = HttpRequest.newBuilder()
.uri(URI.create("https://api.miniwebtool.com/v1/tools/war-calculator/run"))
.header("Authorization", "Bearer mwt_live_YOUR_KEY")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("{\"player_type\":\"position\",\"pa\":600,\"hits\":150,\"doubles\":30,\"triples\":3,\"home_runs\":25,\"walks\":60,\"hbp\":5,\"stolen_bases\":15,\"caught_stealing\":5,\"position\":\"SS\",\"innings_played\":1350,\"errors\":10,\"league_avg_obp\":0.32,\"league_avg_slg\":0.41}"))
.build();
var resp = client.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.body());
https://api.miniwebtool.com/v1/tools/war-calculator/run
Authorization: Bearer <key> and Content-Type: application/json. Copy-paste snippets in 7 languages are under Code examples.
{request_id, tool, tool_version, credits_used, result}. The typed output lives in result.
Estimate simplified baseball WAR for position players or pitchers. Use it to add this utility without rebuilding formulas, validation, examples, and documentation.
1 credit per successful call. Failed calls (validation errors, 5xx) don't bill.
Required fields: (none). Full schema at /v1/openapi.json.
Yes — same input, same output, forever. Tool version 2026-04-22; output shape is stable within a major version.
Yes. Connect to https://api.miniwebtool.com/v1/mcp over the Model Context Protocol. The agent discovers `war-calculator` with its JSON Schema automatically, so the model can plan while MiniWebtool handles the exact tool result.
JSON with a stable envelope: `{request_id, tool, tool_version, credits_used, result}`. Errors are RFC 7807 `application/problem+json`.
Every endpoint on this site is also exposed via the
Model Context Protocol at
https://api.miniwebtool.com/v1/mcp.
Claude, Cursor, and any MCP-capable agent can discover this tool
(war-calculator)
and its JSON Schema automatically — no client codegen.
# List tools the agent can call
curl -s https://api.miniwebtool.com/v1/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \
| jq '.result.tools[] | select(.name=="war-calculator")'