Skip to main content
Glama
vosesoftware

ModelRisk MCP

Official
by vosesoftware

fit_copula_to_data

Fit multiple copula families to multi-column data, rank by AIC/SIC/HQIC, and output the best-fitting copula with its tail-dependence type for joint-tail risk assessment.

Instructions

ModelRisk: Fit parametric copulas to a multi-column data range and rank them by goodness of fit — the DEPENDENCE STRUCTURE fitted from data, not merely constructed. Tries Normal, T, Clayton, Frank and Gumbel families (VoseFitObject), scores each with AIC / SIC / HQIC, and reports the winner plus its tail-dependence character (lower = crash-together, upper = boom-together, both = T, none = Normal/Frank) — the joint-tail risk a single correlation coefficient throws away. Runs on a transient scratch sheet that is always deleted; the data is not modified. Pair with fit_all_data_and_wire to insert the fitted copula into the model.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sheetYesSheet holding the data.
familiesNoCopula families to try. Omit for the default 5-family set.
workbookYesWorkbook file name, e.g. 'model.xlsx'.
criterionNoRanking criterion: 'SIC' (default), 'AIC', or 'HQIC'.SIC
data_rangeYesA1 range of the multi-column data, e.g. 'A1:C500'.
uncertaintyNoFit with parameter uncertainty (second-order). Default False.
data_in_rowsNoTrue if each variable is a ROW, not a column. Default False.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteYesInterpretation of the winning family's tail behaviour.
skippedNoFamilies that could not be fitted, with a reason each.
criterionYesCriterion the ranking is sorted by (AIC / SIC / HQIC).
candidatesYesSuccessfully-fitted copula families, best first.
data_rangeYes
best_familyNoTop-ranked copula family, or null if every fit failed.
n_variablesYesNumber of variables (columns) the copula spans.
sample_sizeYesNumber of joint observations (rows).
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the burden. It discloses technical details: uses VoseFamilyFitObject, scores with AIC/SIC/HQIC, reports winner plus tail-dependence character (explaining 'lower = crash-together', etc.), and explicitly states it runs on a transient scratch sheet that is always deleted and that data is not modified. This is comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is slightly verbose but every sentence earns its place. It is front-loaded with the main purpose and ends with a pairing recommendation. Minor redundancy exists (e.g., 'the DEPENDENCE STRUCTURE fitted from data, not merely constructed' could be tighter), but overall it is well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (7 params, output schema exists), the description covers the return value (winner plus tail-dependence character), mentions the transient scratch sheet, and references a sibling tool. It provides sufficient context for an AI agent to use the tool correctly without additional documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds value beyond the schema by explaining the default family set (Normal, T, Clayton, Frank, Gumbel), the semantics of the criterion parameter, and clarifying that data_range is multi-column. It also explains the data_in_rows parameter meaning. This enriched context helps the AI agent understand parameter intent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Fit parametric copulas to a multi-column data range and rank them by goodness of fit') and distinguishes the tool from siblings by emphasizing it fits dependence structure from data rather than merely constructing it. It also lists the families tried and scoring criteria, leaving no ambiguity about the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises pairing with fit_all_data_and_wire to insert the fitted copula, providing clear when-to-use guidance. It also notes the transient scratch sheet and that data is not modified. However, it does not explicitly state when not to use this tool or list exclusion criteria, which would have pushed it to 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vosesoftware/modelrisk-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server