Softwiro MCP
An official MCP server by Softwiro that allows AI agents to execute calculations using Softwiro's free Arabic Excel templates and 23 built-in calculators (such as VAT, BMI, and gold zakat) via stateless HTTP requests without requiring authentication or storing user data.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://softwiro.com/api/mcpWhat its tools do
6 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to softwiro.com ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Calculate gym membership renewals and outstanding balances using Excel templates
- Compute VAT totals for items at specific tax rates
- Determine gold zakat amounts based on live market prices
- Run quick calculators for BMI, calories, or due dates
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- softwiro-templates 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 6 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
6 advertised
list_templates
Search the catalog of about 70 free Arabic Excel templates (students, clinics, shops, farms, rent, installments, payroll, recipe costing, gym...). Returns id, Arabic title, description, sector, page URL and download URL for each match. Use it first whenever the user needs a tracking sheet or a multi-row calculation a business spreadsheet could do. For a single quick calculation (VAT, BMI, gold zakat) use list_calculators instead. Read-only, nothing is stored. An empty query returns the whole catalog.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Optional search text in Arabic or English, for example \"gym\" or \"اشتراكات\". Matched against id, title, description and sector. Omit to list every template."
}
}
}{
"title": "List Excel templates",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_schema
Returns the structure of one template: its sheets, the record tables (header row, first and last row, capacity) with each column marked as input or formula, example values, dropdown values, the settings cells (label, cell address, sample value) and the result cells. Call it after list_templates and before calculate, so the data you send uses the exact sheet and column names and only fills input columns. Read-only. Fails with "unknown template id" if the id did not come from list_templates.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Template id from list_templates, for example gym-memberships."
}
}
}{
"title": "Get template structure",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}calculate
Fills a template with the records and settings you send, recalculates it with the template's own formulas, and returns the results: the summary cells listed in get_schema plus the calculated columns of every row you sent. Nothing is saved on the server: the workbook exists only for this request, so calling it again with the same input gives the same output (templates that use TODAY() follow the server's date). Call get_schema first. Sends your records into the template and returns what its own formulas calculate. records: [{sheet, table (index in schema, default 0), rows: [{"<column header or letter>": value}]}] fills a record table (only typed/input columns; calculated columns are returned in rows[].calculated). mode: "replace" (default, clears the sample rows first) or "append". cells: {"Sheet name!B3": value} sets settings cells. read: ["Sheet name!B5"] limits which cells come back (default: the sheet results listed in the schema). Dates: send "YYYY-MM-DD". Nothing is stored. Limits: 500 rows, 500 cells, 15 seconds. Fails with a message naming the bad sheet, column or cell, or "unknown template id".
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Template id from list_templates."
},
"mode": {
"enum": [
"replace",
"append"
],
"type": "string",
"description": "\"replace\" (default) clears the template's sample rows before writing yours; \"append\" adds your rows after them."
},
"read": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional cell addresses to return, for example [\"Sheet name!B5\"]. Default: the result cells listed in the schema."
},
"cells": {
"type": "object",
"description": "Settings cells to set, as { \"Sheet name!B3\": value }. Cells that hold formulas are ignored and reported in warnings."
},
"records": {
"type": "array",
"items": {
"type": "object"
},
"description": "Rows to write into record tables: [{ sheet: \"sheet name\", table?: index in the schema (default 0), rows: [{ \"<column header or letter>\": value }] }]. Fill input columns only; calculated columns come back in the result."
}
}
}{
"title": "Calculate in a template",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_download
Returns two links for one template: xlsx (the free Excel file to download, no sign-in) and online (the template page on softwiro.com, where the sheet can also be filled in the browser). Use it when the user wants the file itself to keep and edit, because calculate saves nothing. Read-only. Fails with "unknown template id" if the id did not come from list_templates.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Template id from list_templates, for example gym-memberships."
}
}
}{
"title": "Get template download links",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_calculators
Lists the 23 quick calculators with their input names: 13 from Softwiro (VAT, BMI, calories, due date, ovulation, break-even, garment costing, fabric requirements, piece-rate pay, pharmacy margin, reorder point, no-show cost, study timetable) and 10 gold calculators from Qintar (zakat, nisab, making charge, bar and pound prices, fair-price check, sell-now, unit conversion, budget, gold vs certificates vs dollar, swapping old gold for new). Use it for a one-off calculation that does not need a spreadsheet, then call run_calculator. For multi-row tracking sheets use list_templates instead. Read-only, nothing is stored.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Optional search text in Arabic or English, for example \"zakat\" or \"vat\". Matched against id, title, description and group. Omit to list all 23."
}
}
}{
"title": "List calculators",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}run_calculator
Runs one calculator from list_calculators and returns its result as JSON, with the same numbers as the calculator's page on the website. Nothing is stored. The gold calculators fetch live prices from qintar.app and include the price date; if prices are unavailable they return an error instead of guessing. Invalid or missing inputs fail with a message naming the field. Results are indicative: the zakat and gold calculators are not a fatwa, and the health calculators are not medical advice.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Calculator id from list_calculators, for example vat-calculator or gold-zakat."
},
"inputs": {
"type": "object",
"description": "The inputs for that calculator, using the input names that list_calculators shows for the id. Dates are YYYY-MM-DD; prices are EGP per gram."
}
}
}{
"title": "Run a calculator",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 591 ms
- 95th percentile latency
- 591 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 591 ms · metadata changed · 6 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http softwiro-mcp https://softwiro.com/api/mcpCodex
codex mcp add softwiro-mcp --url https://softwiro.com/api/mcpCursor
{
"mcpServers": {
"softwiro-mcp": {
"url": "https://softwiro.com/api/mcp"
}
}
}Cline
{
"mcpServers": {
"softwiro-mcp": {
"type": "streamableHttp",
"url": "https://softwiro.com/api/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"softwiro-mcp": {
"type": "http",
"url": "https://softwiro.com/api/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http softwiro-mcp https://softwiro.com/api/mcpClaude Desktop
https://softwiro.com/api/mcpWindsurf
{
"mcpServers": {
"softwiro-mcp": {
"serverUrl": "https://softwiro.com/api/mcp"
}
}
}Let your agent find its tools
Find servers like Softwiro MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run Softwiro MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.