Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

pyeconomics

PYPI · PYECONOMICS

Tested, cited economics and finance models and data, with a provenance manifest per result.

Available components

+4 this week 72 Trust /100

Last scanned (16 minutes ago)

Scores higher than 69% of PyPI servers

Category Finance and Payments

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security49
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs uv_build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 4 of 28 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to pyeconomics-dev/pyeconomics). View diagnostics → Pass
  • Clear OSI-approved license (Apache-2.0).Pass
  • Actively maintained (last published 8 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability85
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 2773 tokens (~126/item across 22 items; 21 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Tools include usage examples.Pass
Stability & Change Management30
  • Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 21 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
  • Supports UI / widget rendering.Pass
What we tested

Checks we ran (16)

  • Known CVEs
  • Install scripts
  • Dependency health
  • Source repository
  • Provenance
  • License
  • Maintenance
  • Security disclosure
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol
  • Capabilities

Checks we could not complete (1)

These are gaps on our side, not findings about this package. We only credit what we can confirm, so a category made up entirely of them scores 0.

  • Malware scan in Supply Chain SecurityMalware scan not yet available for this package.

Does not apply to this package (2)

  • Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
  • Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.

The score does not measure everything. What the score does not measure →

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 6 Nov 26 −11
    • Malware scan: pass → unverified ▼ security
    • Stability: unverified → 0.30 ▲ functional
  • 5 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 3 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
  • 2 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 30 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
  • 29 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 28 Oct 26 68

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 6 Nov 2026 · Analysed pypi/pyeconomics@1.0.0b1

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo pyeconomics-dev/pyeconomics
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/pyeconomics-dev/pyeconomics/.github/workflows/release.yml@refs/tags/v1.0.0b1
Rekor log index 3533491420
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:7241d43093e9f3b44f19d6fb83de32c32d1174ee301c94f545ad1fc951895b76

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend Known build tool uv_build

Background: Why install scripts are a supply-chain risk →

Dependencies 28 packages
Packages resolved 28
Stale 4
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 21 exposed · ~2,747 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
corporate_capital_budgeting ~161

Project NPV, IRR, MIRR, fractional payback, profitability index and equivalent annual annuity. Runs Capital budgeting (corporate.capital_budgeting, version 2) on the given inputs and returns its canonical result: the validated inputs, the outputs, the warnings and the manifest. Every number carries its unit in the input schema; rates are decimals.

NameTypeReqDescription
cash_flowsarrayyesSigned project cash flows at t=0, 1, ...; negative means paid out
finance_ratenumber–MIRR financing rate per period for negative flows
ratenumberyesDiscount rate per period
reinvestment_ratenumber–MIRR reinvestment rate per period for positive flows
NameTypeReqDescription
inputs–yes–
manifest–yes–
model_id–yes–
model_version–yes–
outputs–yes–
warningsarrayyes–
{"cash_flows":[-100,60,60],"finance_rate":0.1,"rate":0.1,"reinvestment_rate":0.1}
corporate_cost_of_capital ~116

CAPM, WACC with preferred equity, Hamada unlevering/relevering, and country risk premium. Runs Cost of capital and beta (corporate.cost_of_capital, version 1) on the given inputs and returns its canonical result: the validated inputs, the outputs, the warnings and the manifest. The required calculation field selects one of: capm, country_risk_premium, relever_beta, unlever_beta, wacc. Every number carries its unit in the input schema; rates are decimals.

Input schema present but exposes no named parameters.

NameTypeReqDescription
inputs–yes–
manifest–yes–
model_id–yes–
model_version–yes–
outputs–yes–
warningsarrayyes–
{"beta":1.2,"calculation":"capm","equity_risk_premium":0.05,"risk_free_rate":0.03}
{"calculation":"wacc","cost_of_debt":0.06,"cost_of_equity":0.12,"cost_of_preferred":0,"debt":400,"equity":600,"preferred":0,"tax_rate":0.25}
{"beta":1.2,"calculation":"unlever_beta","debt_to_equity":0,"tax_rate":0.25}
{"beta":1,"calculation":"relever_beta","debt_to_equity":0.5,"tax_rate":0.2}
{"bond_volatility":0.2,"calculation":"country_risk_premium","equity_volatility":0.3,"sovereign_spread":0.02}
{"calculation":"wacc","cost_of_debt":0.06,"cost_of_equity":0.12,"cost_of_preferred":0,"debt":400,"equity":600,"preferred":0,"tax_rate":0.25}
derivatives_binomial_tree ~231

Cox-Ross-Rubinstein binomial prices of European and American calls and puts with a dividend yield, with delta and gamma from the tree. Runs Binomial option tree (derivatives.binomial_tree, version 1) on the given inputs and returns its canonical result: the validated inputs, the outputs, the warnings and the manifest. Every number carries its unit in the input schema; rates are decimals.

NameTypeReqDescription
dividend_yieldnumber–Dividend yield per year, continuously compounded
exercisestring–European (at expiry only) or American (at any step) exercise
option_type––A call (the right to buy) or a put (to sell)
risk_free_ratenumberyesRisk-free rate per year, continuously compounded
spotnumberyesPrice of the underlying asset now
stepsinteger–Number of time steps in the tree
strikenumberyesStrike price
volatilitynumberyesVolatility of the asset's return per year
yearsnumberyesTime to expiry, in years
NameTypeReqDescription
inputs–yes–
manifest–yes–
model_id–yes–
model_version–yes–
outputs–yes–
warningsarrayyes–
{"dividend_yield":0,"exercise":"american","option_type":"put","risk_free_rate":0.1,"spot":50,"steps":5,"strike":50,"volatility":0.4,"years":0.4167}
{"dividend_yield":0.06,"exercise":"american","option_type":"call","risk_free_rate":0.05,"spot":100,"steps":500,"strike":100,"volatility":0.25,"years":1}
derivatives_black_scholes_merton ~105

Price, Greeks and implied volatility of European calls and puts on an asset with a continuous dividend yield. Runs Black-Scholes-Merton options (derivatives.black_scholes_merton, version 1) on the given inputs and returns its canonical result: the validated inputs, the outputs, the warnings and the manifest. The required calculation field selects one of: implied_volatility, price. Every number carries its unit in the input schema; rates are decimals.

Input schema present but exposes no named parameters.

NameTypeReqDescription
inputs–yes–
manifest–yes–
model_id–yes–
model_version–yes–
outputs–yes–
warningsarrayyes–
{"calculation":"price","dividend_yield":0,"option_type":"call","risk_free_rate":0.1,"spot":42,"strike":40,"volatility":0.2,"years":0.5}
{"calculation":"price","dividend_yield":0.05,"option_type":"put","risk_free_rate":0.1,"spot":100,"strike":95,"volatility":0.2,"years":0.5}
{"calculation":"implied_volatility","dividend_yield":0,"option_price":1.875,"option_type":"call","risk_free_rate":0.1,"spot":21,"strike":20,"years":0.25}
describe_model ~78

Describes one model: its formula, assumptions, limitations, references, examples, data bindings, input and output schemas (JSON Schema 2020-12, every number with its unit; rates are decimals) and its model card.

NameTypeReqDescription
model_idstringyesA model id, or an alias of one, as search_models lists them.
NameTypeReqDescription
aliasesarrayyes–
assumptionsarrayyes–
bindingsarrayyes–
cardstringyesThe model card as MyST Markdown.
changelogarrayyes–
chartsarrayyes–
cost–yes–
domainstringyes–
evidence–yes–
examplesarrayyes–
extrastring|nullyes–
formulaarrayyesLaTeX, one line per item.
idstringyes–
input_schemaobjectyesThe model's JSON Schema 2020-12 input document.
invariantsarrayyes–
limitationsarrayyes–
no_invariants_reasonstring|nullyes–
output_schemaobjectyesThe model's JSON Schema 2020-12 output document.
referencesarrayyes–
summarystringyes–
tagsarrayyes–
titlestringyes–
versionintegeryes–

No examples provided.

equity_dividend_discount ~102

Gordon, two-stage and H-model values, PVGO and the Gordon implied return. Runs Dividend discount valuation (equity.dividend_discount, version 1) on the given inputs and returns its canonical result: the validated inputs, the outputs, the warnings and the manifest. The required calculation field selects one of: gordon, h_model, implied_return, pvgo, two_stage. Every number carries its unit in the input schema; rates are decimals.

Input schema present but exposes no named parameters.

NameTypeReqDescription
inputs–yes–
manifest–yes–
model_id–yes–
model_version–yes–
outputs–yes–
warningsarrayyes–
{"calculation":"gordon","growth":0,"next_dividend":2,"required_return":0.1}
{"calculation":"h_model","dividend":2,"growth":0.12,"half_life":5,"required_return":0.1,"terminal_growth":0.04}
{"calculation":"two_stage","growth":0.02,"next_dividend":2,"required_return":0.1,"terminal_growth":0.02,"years":10}
{"calculation":"pvgo","earnings":3,"price":50,"required_return":0.1}
{"calculation":"implied_return","growth":0.02,"next_dividend":2,"price":50}
{"calculation":"gordon","growth":0.02,"next_dividend":2,"required_return":0.1}
equity_free_cash_flow ~104

FCFF from EBIT, FCFE from net income, and one- or two-stage firm or equity valuation. Runs Free cash flow and DCF valuation (equity.free_cash_flow, version 1) on the given inputs and returns its canonical result: the validated inputs, the outputs, the warnings and the manifest. The required calculation field selects one of: fcfe, fcff, valuation. Every number carries its unit in the input schema; rates are decimals.

Input schema present but exposes no named parameters.

NameTypeReqDescription
inputs–yes–
manifest–yes–
model_id–yes–
model_version–yes–
outputs–yes–
warningsarrayyes–
{"calculation":"fcff","capex":70,"depreciation":50,"ebit":200,"tax_rate":0.25,"working_capital_change":10}
{"calculation":"fcfe","capex":70,"depreciation":50,"net_borrowing":20,"net_income":120,"working_capital_change":10}
{"basis":"firm","calculation":"valuation","discount_rate":0.1,"growth":0,"net_debt":200,"next_cash_flow":100,"terminal_growth":0,"years":0}
{"basis":"firm","calculation":"valuation","discount_rate":0.1,"growth":0,"net_debt":200,"next_cash_flow":100,"terminal_growth":0.02,"years":0}
fixed_income_bond_pricing ~125

Full and flat price and accrued interest of a fixed-coupon bond from its yield, and its yield to maturity, to a call and to worst from its price. Runs Bond price and yield (fixed_income.bond_pricing, version 2) on the given inputs and returns its canonical result: the validated inputs, the outputs, the warnings and the manifest. The required calculation field selects one of: price_from_yield, yield_from_price, yield_to_call, yield_to_worst. Every number carries its unit in the input schema; rates are decimals.

Input schema present but exposes no named parameters.

NameTypeReqDescription
inputs–yes–
manifest–yes–
model_id–yes–
model_version–yes–
outputs–yes–
warningsarrayyes–
{"calculation":"price_from_yield","convention":"treasury","coupon_rate":0.0875,"day_count":"act_act_icma","end_of_month":true,"face_value":100,"first_period":"short","frequency":"semiannual","issue_date":null,"maturity":"2020-05-15","redemption":100,"settlement":"1990-05-15","yield_to_maturity":0.0884}
{"calculation":"price_from_yield","convention":"street","coupon_rate":0.045,"day_count":"act_act_icma","end_of_month":true,"face_value":100,"first_period":"short","frequency":"semiannual","issue_date":null,"maturity":"2036-01-15","redemption":100,"settlement":"2026-03-02","yield_to_maturity":0.05}
{"calculation":"yield_from_price","convention":"street","coupon_rate":0.045,"day_count":"act_act_icma","end_of_month":true,"face_value":100,"first_period":"short","frequency":"semiannual","issue_date":null,"maturity":"2036-01-15","price":96.5,"price_type":"flat","redemption":100,"settlement":"2026-01-15"}
{"calculation":"yield_to_call","call_date":"2031-01-15","call_price":101,"convention":"street","coupon_rate":0.045,"day_count":"act_act_icma","end_of_month":true,"face_value":100,"first_period":"short","frequency":"semiannual","issue_date":null,"maturity":"2036-01-15","price":103,"price_type":"flat","redemption":100,"settlement":"2026-01-15"}
{"calculation":"yield_to_worst","call_dates":["2029-01-15","2031-01-15","2033-01-15"],"call_prices":[102,101,100],"convention":"street","coupon_rate":0.045,"day_count":"act_act_icma","end_of_month":true,"face_value":100,"first_period":"short","frequency":"semiannual","issue_date":null,"maturity":"2036-01-15","price":104,"price_type":"flat","redemption":100,"settlement":"2026-01-15"}
fixed_income_curve_bootstrap ~108

Bootstrap spot rates and discount factors from par yields, par yields from spot rates, and forward rates between maturities. Runs Spot, par and forward curves (fixed_income.curve_bootstrap, version 1) on the given inputs and returns its canonical result: the validated inputs, the outputs, the warnings and the manifest. The required calculation field selects one of: forward_rate, from_par, from_spot. Every number carries its unit in the input schema; rates are decimals.

Input schema present but exposes no named parameters.

NameTypeReqDescription
inputs–yes–
manifest–yes–
model_id–yes–
model_version–yes–
outputs–yes–
warningsarrayyes–
{"calculation":"from_par","compounding":"periodic","frequency":"semiannual","par_yields":[0.04,0.041,0.042,0.0425,0.043,0.0435]}
{"calculation":"from_spot","compounding":"continuous","frequency":"semiannual","spot_rates":[0.05,0.058,0.064,0.068]}
{"calculation":"forward_rate","compounding":"periodic","far_rate":0.04,"far_years":2,"frequency":"annual","near_rate":0.03,"near_years":1}
fixed_income_duration ~108

Macaulay and modified duration from a yield, effective and key-rate duration off a spot curve, and DV01 of a fixed-coupon bond. Runs Bond duration (fixed_income.duration, version 2) on the given inputs and returns its canonical result: the validated inputs, the outputs, the warnings and the manifest. The required calculation field selects one of: dv01, effective, key_rate, macaulay_modified. Every number carries its unit in the input schema; rates are decimals.

Input schema present but exposes no named parameters.

NameTypeReqDescription
inputs–yes–
manifest–yes–
model_id–yes–
model_version–yes–
outputs–yes–
warningsarrayyes–
{"calculation":"macaulay_modified","coupon_rate":0.045,"day_count":"act_act_icma","end_of_month":true,"face_value":100,"first_period":"short","frequency":"semiannual","issue_date":null,"maturity":"2036-01-15","redemption":100,"settlement":"2026-01-15","yield_to_maturity":0.045}
{"bump":0.0001,"calculation":"effective","coupon_rate":0.045,"curve_rates":[0.043,0.042,0.041,0.042,0.045,0.048],"curve_tenors":[0.5,1,2,5,10,30],"day_count":"act_act_icma","end_of_month":true,"face_value":100,"first_period":"short","frequency":"semiannual","issue_date":null,"maturity":"2036-01-15","redemption":100,"settlement":"2026-01-15"}
{"bump":0.0001,"calculation":"key_rate","coupon_rate":0.045,"curve_rates":[0.043,0.042,0.041,0.042,0.045,0.048],"curve_tenors":[0.5,1,2,5,10,30],"day_count":"act_act_icma","end_of_month":true,"face_value":100,"first_period":"short","frequency":"semiannual","issue_date":null,"key_tenors":[2,5,10,30],"maturity":"2036-01-15","redemption":100,"settlement":"2026-01-15"}
{"calculation":"dv01","coupon_rate":0.045,"day_count":"act_act_icma","end_of_month":true,"face_value":1000000,"first_period":"short","frequency":"semiannual","issue_date":null,"maturity":"2036-01-15","redemption":100,"settlement":"2026-01-15","yield_to_maturity":0.045}
foundations_returns ~95

Holding-period, arithmetic, geometric, harmonic, annualized, log and real returns. Runs Return toolkit (foundations.returns, version 1) on the given inputs and returns its canonical result: the validated inputs, the outputs, the warnings and the manifest. The required calculation field selects one of: annualized, holding_period, log, means, real. Every number carries its unit in the input schema; rates are decimals.

Input schema present but exposes no named parameters.

NameTypeReqDescription
inputs–yes–
manifest–yes–
model_id–yes–
model_version–yes–
outputs–yes–
warningsarrayyes–
{"beginning_value":100,"calculation":"holding_period","ending_value":108,"income":2}
{"calculation":"means","returns":[0.1,-0.05,0.2]}
{"calculation":"annualized","period_return":0.01,"periods":1,"periods_per_year":12}
{"calculation":"log","direction":"simple_to_log","returns":[0.1,-0.05,0.2]}
{"calculation":"real","inflation":0.03,"nominal":0.05}
foundations_time_value ~130

Present and future values of sums, annuities and perpetuities, the five-key solve, NPV, IRR, XNPV, XIRR and amortization schedules. Runs Time value of money (foundations.time_value, version 2) on the given inputs and returns its canonical result: the validated inputs, the outputs, the warnings and the manifest. The required calculation field selects one of: amortization, future_value, irr, npv, present_value, solve, xirr, xnpv. Every number carries its unit in the input schema; rates are decimals.

Input schema present but exposes no named parameters.

NameTypeReqDescription
inputs–yes–
manifest–yes–
model_id–yes–
model_version–yes–
outputs–yes–
warningsarrayyes–
{"calculation":"present_value","due":false,"future_value":0,"growth":0,"payment":500,"periods":240,"rate":0.006666666666666667}
{"calculation":"future_value","due":true,"growth":0,"payment":200,"periods":10,"present_value":500,"rate":0.005}
{"calculation":"solve","due":false,"future_value":0,"payment":-200,"periods":48,"present_value":8000,"rate":null}
{"calculation":"npv","cash_flows":[-70000,12000,15000,18000,21000,26000],"rate":0.1}
{"calculation":"irr","cash_flows":[-70000,12000,15000,18000,21000,26000]}
{"calculation":"xnpv","cash_flows":[-10000,2750,4250,3250,2750],"dates":["2008-01-01","2008-03-01","2008-10-30","2009-02-15","2009-04-01"],"rate":0.09}
{"calculation":"xirr","cash_flows":[-10000,2750,4250,3250,2750],"dates":["2008-01-01","2008-03-01","2008-10-30","2009-02-15","2009-04-01"]}
{"calculation":"amortization","periods":10,"principal":10000,"rate":0.006666666666666667}
get_series ~185

Reads a series from the data catalog (a concept id) or from one provider (provider:series), with its source records and the attributions it must be shown with: at most the server's limit of observations, the most recent ones. Data whose terms do not let it reach an AI assistant is never returned.

NameTypeReqDescription
as_ofstring–Read the data as published on this date.
endstring–The last observation date wanted.
providerstring–For a concept, only this provider's candidates.
startstring–The first observation date wanted.
targetstringyesA catalog concept id (such as us.unemployment.rate) or provider:series (such as bls:LNS14000000).
vintagestring–A vintage label: latest, first_release, all or as_of:YYYY-MM-DD.
NameTypeReqDescription
attributionsarrayyes–
conceptstring|nullyes–
frameobjectyes–
skippedarrayyes–
sourcesarrayyes–

No examples provided.

international_parity_conditions ~117

Covered and uncovered interest parity, relative and absolute purchasing power parity, the international Fisher effect and real exchange rates. Runs International parity conditions (international.parity_conditions, version 1) on the given inputs and returns its canonical result: the validated inputs, the outputs, the warnings and the manifest. The required calculation field selects one of: absolute_ppp, covered_interest_parity, international_fisher, real_exchange_rate, relative_ppp, uncovered_interest_parity. Every number carries its unit in the input schema; rates are decimals.

Input schema present but exposes no named parameters.

NameTypeReqDescription
inputs–yes–
manifest–yes–
model_id–yes–
model_version–yes–
outputs–yes–
warningsarrayyes–
{"base_rate":0.03,"calculation":"covered_interest_parity","compounding":"continuous","frequency":"annual","quote_rate":0.01,"spot":0.75,"years":2}
{"base_rate":0.045,"calculation":"uncovered_interest_parity","compounding":"periodic","frequency":"annual","quote_rate":0.005,"spot":150,"years":1}
{"base_inflation":0.035,"calculation":"relative_ppp","quote_inflation":0.02,"spot":1.25,"years":5}
{"base_price":4.95,"calculation":"absolute_ppp","quote_price":5.69,"spot":1.1}
{"base_inflation":0.01,"base_rate":0.02,"calculation":"international_fisher","quote_inflation":0.03,"quote_rate":0.05}
{"base_inflation":0.02,"base_price_level":115,"calculation":"real_exchange_rate","quote_inflation":0.03,"quote_price_level":120,"spot":1.1,"spot_change":0.05}
list_sources ~55

Lists every data provider with its licence class, whether its terms let its data reach an AI assistant (llm_use) and whether this server's policy permits it, its attribution and its terms page, and whether a key is configured.

Input schema present but exposes no named parameters.

NameTypeReqDescription
sourcesarrayyes–

No examples provided.

macro_policy_rule ~147

Taylor (1993 and 1999), balanced-approach, shortfalls, adjusted and first-difference rules, smoothed and floored, on a gap measured in output or unemployment, and over forecast paths. Runs Monetary-policy rules (macro.policy_rule, version 1) on the given inputs and returns its canonical result: the validated inputs, the outputs, the warnings and the manifest. The required calculation field selects one of: adjusted_taylor_1993, balanced_approach, balanced_approach_shortfalls, first_difference, path, taylor_1993, taylor_1999. Every number carries its unit in the input schema; rates are decimals.

Input schema present but exposes no named parameters.

NameTypeReqDescription
inputs–yes–
manifest–yes–
model_id–yes–
model_version–yes–
outputs–yes–
warningsarrayyes–
{"calculation":"taylor_1993","gap_measure":null,"inflation":0.03,"inflation_target":0.02,"inflation_weight":0.5,"lower_bound":null,"natural_unemployment":0.042,"neutral_nominal_rate":null,"neutral_real_rate":0.01,"okun_coefficient":2,"output_gap":null,"previous_rate":null,"resource_weight":0.5,"smoothing":0,"unemployment":0.043}
{"calculation":"taylor_1999","gap_measure":null,"inflation":0.025,"inflation_target":0.02,"inflation_weight":0.5,"lower_bound":null,"natural_unemployment":null,"neutral_nominal_rate":null,"neutral_real_rate":0.005,"okun_coefficient":2,"output_gap":0.01,"previous_rate":null,"resource_weight":1,"smoothing":0,"unemployment":null}
{"calculation":"balanced_approach","gap_measure":null,"inflation":0.026,"inflation_target":0.02,"inflation_weight":0.5,"lower_bound":null,"natural_unemployment":0.042,"neutral_nominal_rate":0.03,"neutral_real_rate":null,"okun_coefficient":2,"output_gap":null,"previous_rate":null,"resource_weight":1,"smoothing":0,"unemployment":0.044}
{"calculation":"balanced_approach_shortfalls","gap_measure":null,"inflation":0.02,"inflation_target":0.02,"inflation_weight":0.5,"lower_bound":null,"natural_unemployment":0.042,"neutral_nominal_rate":null,"neutral_real_rate":0.005,"okun_coefficient":2,"output_gap":null,"previous_rate":null,"resource_weight":1,"smoothing":0,"unemployment":0.035}
{"calculation":"adjusted_taylor_1993","cumulative_shortfall":0.01,"gap_measure":null,"inflation":0.02,"inflation_target":0.02,"inflation_weight":0.5,"lower_bound":0.00125,"natural_unemployment":0.042,"neutral_nominal_rate":null,"neutral_real_rate":0.005,"okun_coefficient":2,"output_gap":null,"previous_rate":null,"resource_weight":0.5,"smoothing":0,"unemployment":0.05}
{"calculation":"first_difference","gap_measure":null,"inflation":0.03,"inflation_target":0.02,"inflation_weight":0.5,"lower_bound":null,"natural_unemployment":0.042,"natural_unemployment_lagged":null,"okun_coefficient":2,"output_gap":null,"output_gap_lagged":null,"previous_rate":0.0425,"resource_weight":0.5,"smoothing":0,"unemployment":0.042,"unemployment_lagged":0.04}
{"calculation":"taylor_1999","gap_measure":null,"inflation":0.03,"inflation_target":0.02,"inflation_weight":0.5,"lower_bound":0.00125,"natural_unemployment":null,"neutral_nominal_rate":null,"neutral_real_rate":0.01,"okun_coefficient":2,"output_gap":0.005,"previous_rate":0.0375,"resource_weight":1,"smoothing":0.85,"unemployment":null}
{"calculation":"path","cumulative_shortfall":0,"gap_measure":null,"inflation_high_path":[0.033,0.032,0.03,0.028,0.026],"inflation_low_path":[0.027,0.024,0.022,0.02,0.019],"inflation_path":[0.03,0.028,0.026,0.024,0.022],"inflation_target":0.02,"inflation_weight":0.5,"lower_bound":null,"natural_unemployment_lagged_path":null,"natural_unemployment_path":null,"neutral_nominal_rate":null,"neutral_real_rate":0.01,"okun_coefficient":2,"output_gap_high_path":[0.015,0.013,0.011,0.009,0.007],"output_gap_lagged_path":null,"output_gap_low_path":[0.005,0.002,0,-0.002,-0.003],"output_gap_path":[0.01,0.008,0.006,0.004,0.002],"previous_rate":null,"resource_weight":null,"rule":"taylor_1993","smoothing":0,"unemployment_high_path":null,"unemployment_lagged_path":null,"unemployment_low_path":null,"unemployment_path":null}
performance_risk_adjusted ~191

Sharpe, Sortino, Treynor, Jensen's alpha, information ratio and tracking error, M², Calmar and up- and down-capture ratios from return series. Runs Risk-adjusted performance (performance.risk_adjusted, version 1) on the given inputs and returns its canonical result: the validated inputs, the outputs, the warnings and the manifest. Every number carries its unit in the input schema; rates are decimals.

NameTypeReqDescription
benchmark_returnsarrayyesBenchmark return each period, aligned with the portfolio's
minimum_acceptable_returnnumber–Minimum acceptable return per period, for the Sortino ratio
periods_per_yearnumberyesPeriods in a year, such as 12 or 252
returnsarrayyesPortfolio return each period
risk_free_returnsarray–Risk-free return each period; omit for zero
NameTypeReqDescription
inputs–yes–
manifest–yes–
model_id–yes–
model_version–yes–
outputs–yes–
warningsarrayyes–
{"benchmark_returns":[0.018,-0.01,0.029,0.011,-0.025,0.012,0.022,-0.002,0.01,0.016,-0.028,0.02],"minimum_acceptable_return":0,"periods_per_year":12,"returns":[0.021,-0.013,0.034,0.008,-0.022,0.015,0.027,-0.005,0.012,0.019,-0.031,0.024],"risk_free_returns":[0.002,0.002,0.002,0.002,0.002,0.002,0.002,0.002,0.002,0.002,0.002,0.002]}
portfolio_mean_variance ~106

Portfolio expected return and risk, the minimum-variance frontier with short sales, and the minimum-variance and tangency portfolios. Runs Mean-variance portfolios (portfolio.mean_variance, version 1) on the given inputs and returns its canonical result: the validated inputs, the outputs, the warnings and the manifest. The required calculation field selects one of: frontier, minimum_variance, portfolio, tangency. Every number carries its unit in the input schema; rates are decimals.

Input schema present but exposes no named parameters.

NameTypeReqDescription
inputs–yes–
manifest–yes–
model_id–yes–
model_version–yes–
outputs–yes–
warningsarrayyes–
{"calculation":"portfolio","correlations":[[1,0.3],[0.3,1]],"covariance":null,"expected_returns":[0.1,0.06],"volatilities":[0.2,0.1],"weights":[0.6,0.4]}
{"calculation":"frontier","correlations":[[1,0.3,0.2],[0.3,1,0.5],[0.2,0.5,1]],"covariance":null,"expected_returns":[0.08,0.12,0.15],"max_return":null,"min_return":null,"points":5,"volatilities":[0.15,0.2,0.25]}
{"calculation":"minimum_variance","correlations":[[1,0.3,0.2],[0.3,1,0.5],[0.2,0.5,1]],"covariance":null,"expected_returns":[0.08,0.12,0.15],"volatilities":[0.15,0.2,0.25]}
{"calculation":"tangency","correlations":[[1,0.3,0.2],[0.3,1,0.5],[0.2,0.5,1]],"covariance":null,"expected_returns":[0.08,0.12,0.15],"risk_free_rate":0.03,"volatilities":[0.15,0.2,0.25]}
risk_value_at_risk ~123

VaR and expected shortfall as positive losses by the parametric normal, Cornish-Fisher, historical, Monte Carlo and RiskMetrics EWMA methods. Runs Value-at-risk and expected shortfall (risk.value_at_risk, version 1) on the given inputs and returns its canonical result: the validated inputs, the outputs, the warnings and the manifest. The required calculation field selects one of: cornish_fisher, ewma, historical, monte_carlo, parametric. Every number carries its unit in the input schema; rates are decimals.

Input schema present but exposes no named parameters.

NameTypeReqDescription
inputs–yes–
manifest–yes–
model_id–yes–
model_version–yes–
outputs–yes–
warningsarrayyes–
{"calculation":"parametric","confidence":0.99,"horizon":10,"mean":0,"position_value":1000000,"volatility":0.012}
{"calculation":"cornish_fisher","confidence":0.99,"excess_kurtosis":2,"horizon":1,"mean":0.0005,"position_value":1,"skewness":-0.5,"volatility":0.012}
{"calculation":"historical","confidence":0.9,"horizon":1,"interpolation":"linear","position_value":1,"returns":[-0.031,0.012,-0.008,0.004,-0.019,0.022,0.001,-0.012,0.009,-0.002]}
{"calculation":"monte_carlo","confidence":0.99,"degrees_of_freedom":4,"distribution":"student_t","horizon":1,"mean":0,"position_value":1,"seed":7,"simulations":20000,"volatility":0.012}
{"calculation":"ewma","confidence":0.95,"decay":0.94,"horizon":1,"position_value":1,"returns":[0.004,-0.011,0.007,-0.002,0.013,-0.009]}
run_model ~222

Runs any registered model on its inputs, or binds its inputs to the data catalog first (as of a date, or the latest), and returns the canonical result: the validated inputs, the outputs, the warnings and the manifest of every source read. Data whose terms do not let it reach an AI assistant is never used.

NameTypeReqDescription
as_ofstring–Bind the model's data as published on this date (YYYY-MM-DD).
conceptsobject–Field names mapped to catalog concept ids that replace their bindings' concepts.
inputsobject–The model's inputs, as its input schema (describe_model) gives them. With a bind, each one given replaces the value the data would supply.
model_idstringyesA model id, or an alias of one.
parametersobject–Values of the bound concepts' parameters.
profilestring–The named set of bindings to read; 'default' binds the latest data.
vintage––The vintage policy of every binding, in place of their own.
NameTypeReqDescription
inputsobjectyes–
manifest–yes–
model_idstringyes–
model_versionintegeryes–
outputsobjectyes–
warningsarrayyes–

No examples provided.

search_models ~138

Searches the registered economics and finance models by words in their ids, titles, tags, domains and summaries, best match first, or lists every model of a domain. Each entry gives the model's id, title, summary, domain, cost class and whether it can bind its inputs to data.

NameTypeReqDescription
domain––Only the models of this domain.
limitinteger–The most entries a search returns, best first.
querystring–Words to look for in each model's id, title, tags, domain and summary. Without it, every model of the domain (or every model) is listed, sorted by id.
NameTypeReqDescription
modelsarrayyes–

No examples provided.

Install

How do I install the pyeconomics MCP server?

pyeconomics runs locally as a PyPI package, launched with uvx --from 'pyeconomics[mcp]==1.0.0b1' pyeconomics mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

pypi · pyeconomics

# add to Claude Code
claude mcp add pyeconomics-dev-pyeconomics -- uvx --from 'pyeconomics[mcp]==1.0.0b1' pyeconomics mcp
Common questions

What is the pyeconomics MCP server?

pyeconomics is an MCP server listed in the public MCP registry as io.github.pyeconomics-dev/pyeconomics. Tested, cited economics and finance models and data, with a provenance manifest per result. This page covers its PyPI package (pyeconomics).

Is the pyeconomics MCP server safe to use?

pyeconomics scores 72 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 6 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the pyeconomics MCP server expose?

pyeconomics exposes 21 tools: corporate_capital_budgeting, corporate_cost_of_capital, derivatives_binomial_tree, derivatives_black_scholes_merton, describe_model, and 16 more. Their descriptions and schemas cost roughly 2,747 tokens of context every time the server is loaded.

Is the pyeconomics MCP server still maintained?

pyeconomics is still listed as active in the MCP registry. We last reached this channel on 6 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the pyeconomics MCP server under?

pyeconomics declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

What did VerifyMCP test on the pyeconomics MCP server?

VerifyMCP ran 16 checks on pyeconomics, covering Known CVEs, Install scripts, Dependency health, Source repository and 12 more. One item could not be completed, a gap on our side rather than a finding about pyeconomics: Malware scan. Endpoint Security and Transport & Reachability do not apply to a PyPI package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.