MCP serverAnalytics a model can call, with the reasoning left in.

39 tools over option pricing, portfolio risk, interest rate curves, execution cost and backtest validation — each one reporting how the number was produced, and refusing rather than guessing when it cannot be.

The first minute

The server and its five libraries are not on the package index yet, so today it installs from source. Both halves of that are one command, and nothing has to be resolved by name once the libraries are in place:

pip install \
  "git+https://github.com/DaniyalMlk/moneyness.git" \
  "git+https://github.com/DaniyalMlk/shortfall.git" \
  "git+https://github.com/DaniyalMlk/tenor.git" \
  "git+https://github.com/DaniyalMlk/slippage.git" \
  "git+https://github.com/DaniyalMlk/holdout.git"
pip install "git+https://github.com/DaniyalMlk/abacus.git"

abacus tools          # what it can do
abacus stdio          # serve over stdio

After the first release the whole thing becomes pip install abacus-mcp, or uvx abacus-mcp stdio with no install at all. This page will say so when that is true rather than before — a documented command that does not work is worse than an undocumented one, because it fails in the reader's terminal rather than on the page.

Registering it with a client means one entry naming that command. The README has the exact shape for the common ones.

What makes it different from a calculator

The numbers come from five libraries underneath rather than from a wrapper around somebody else's API, which means the server can say how it got an answer, and can decline to give one.

The method is named, because the number does not identify it. A one-day 99% value at risk of 2.3% under a normal assumption and 3.1% from the sample are the same quantity estimated two ways, and nothing about either figure says which it is.

Nonsense is refused before it is priced. A price outside the range attainable by any non-negative volatility has no implied volatility, an option cannot expire in the past, and weights summing to 1.4 are a typo rather than a portfolio. Each comes back as a result a model can repair, naming the field and what would be accepted, rather than as a stack trace.

Claims are measured. Every specific figure in this documentation is checked by a named test, and the validated numbers page lists which.

Where to go next

Conventions first if you are about to call something — they are the mistakes that produce a plausible number rather than an error. The tool reference when you know what you want. The libraries underneath if you would rather import than serve.