Finnish WWII Battles by Name, With Dates (WarSampo)
ldfwarsa/search-battles
Searches the WarSampo Knowledge Graph for Finnish Second World War battles whose English name contains the text you give, case-insensitively: returns the battle IRI, its English label and its start and end dates (xsd:date), oldest first. Give a name fragment of 2 to 60 characters, for example summa or tali, and a result count of 1 to 100. A name that matches nothing returns an empty list. WarSampo data (CC BY) as served by Eden Engine; not an official Aalto University product.
Price
$0.0026 per call
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $0.50.
Data source
WarSampo Knowledge Graph (Aalto University SeCo)
WarSampo Knowledge Graph, Semantic Computing Research Group (SeCo), Aalto University / Linked Data Finland (ldf.fi), published under CC BY (https://creativecommons.org/licenses/by/4.0/). Data fields are passed through as the endpoint sends them. Served by Eden Engine; not an official Aalto University or WarSampo product.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
Connect once and your AI can find and run this tool, and any other it needs.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "ldfwarsa/search-battles" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "ldfwarsa/search-battles" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "ldfwarsa/search-battles", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "ldfwarsa/search-battles", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.0026 |
- Updated
- Oct 21, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"name",
"limit"
],
"properties": {
"name": {
"type": "string",
"pattern": "^[A-Za-z0-9 .,'\\u00C0-\\u024F-]{2,60}$",
"description": "Part of the battle's English name, 2 to 60 characters, matched anywhere ignoring case, for example 'summa' or 'tali'. Letters, digits, spaces, dots, commas, hyphens and apostrophes only."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "How many battles to return, 1 to 100."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"required": [
"head",
"results"
],
"properties": {
"head": {
"type": "object",
"properties": {
"vars": {
"type": "array",
"items": {
"type": "string"
}
}
},
"description": "`vars` lists the selected variable names.",
"additionalProperties": true
},
"meta": {
"type": "object",
"description": "Engine statistics where the endpoint adds them (query time, result size).",
"additionalProperties": true
},
"results": {
"type": "object",
"properties": {
"bindings": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "One object per solution, keyed by variable name. Each value is a term object: `type` (uri or literal), `value` (a string) and, for typed or language-tagged literals, `datatype` or `xml:lang`. A variable left unbound by an OPTIONAL is absent from its row. An empty list means no match."
}
},
"additionalProperties": true
}
},
"description": "The SPARQL 1.1 query results document (application/sparql-results+json), passed through as the endpoint sent it.",
"additionalProperties": true
}