Skip to main content
Glama
Luissalet

Laplace's Hoard MCP Server

by Luissalet

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LAPLACE_URLYesThe URL of the running Laplace's Hoard app, e.g. http://127.0.0.1:8812

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
calcA

Exact arithmetic. Never do arithmetic in your head: call this, even for "simple" sums.

Write Python-like syntax: + - * / // % ** (or ^), parentheses, comparisons. Functions: sqrt cbrt root(x, n) exp ln log(x, base) log10 log2, trig, floor ceil round(x, n) abs, min max sum mean median (numbers or one list), factorial binomial gcd lcm mod, isprime nextprime factorint (alone), and percentages: pct(15, 2347) = 15% of 2347, pct_change(old, new) = % change, ratio(a, b). Constants: pi e tau inf. Numbers are exact: 0.1 + 0.2 = 3/10. Examples: "pct(21, 1250)", "(1.05^10 - 1) * 100", "mean([3, 5, 8])". Returns {id, cite, exact, decimal (text, precision significant digits), is_exact (true when decimal is the exact value), latex}. No variables: use math for x, y. Cite the number as its cite, e.g. [L-000042].

Keywords: calculate, compute, how much is, percentage, percent of, discount, VAT, interest, average, square root, factorial, is prime, calcular, cuánto es, cuánto son, porcentaje, tanto por ciento, descuento, IVA, interés, media, raíz cuadrada, factorial, es primo.

mathA

Symbolic math with SymPy: solve equations, derivatives, integrals, limits, series, matrices.

operation is one of: simplify, expand, factor, apart, together, solve, nsolve, diff, integrate, limit, series, summation, product, matrix, dsolve, inequality. Syntax as in calc, plus variables; an equation is written x**2 - 5*x + 6 = 0 (or ==).

  • solve: expression="2*x + 1 = 7" (or expressions=[...] for a system, variables=["x", "y"]); domain real|complex. Each solution has values (exact), numeric and verified (substituted back) - check it.

  • diff: expression, variable, order. integrate: expression, variable, optional lower/upper for a definite integral. limit: expression, variable, point (e.g. "oo"), direction "+"/"-". series: variable, point, order. summation/product: variable, lower, upper.

  • nsolve: numeric root near x0. inequality: expression="x**2 < 4".

  • dsolve: dy/dx = expression, in symbols x and y (e.g. "y - x").

  • matrix: matrix_op det|inv|rank|rref|eigenvals|transpose|multiply and matrix=[[1, 2], [3, 4]] (matrix2 for multiply). variable can be omitted when the expression has only one symbol. Hard timeout (10 s): on timeout, simplify the input instead of retrying. Cite results as their cite, e.g. [L-000042].

Keywords: solve for x, equation, derivative, integral, differentiate, simplify, factor, limit, series, matrix determinant, inverse matrix, eigenvalues, resolver, ecuación, despejar, derivada, integral, simplificar, factorizar, límite, serie, matriz, determinante, autovalores.

units_convertA

Convert a physical quantity to another unit, e.g. quantity="3.5 km/h", to="m/s".

Handles compound inputs ("5 ft 11 in" to "cm"), temperatures with their offsets ("100 degF" to "degC" is 37.78, not a plain scale), and derived units (kWh, psi, mph, g/cm**3). Unit names are English/SI symbols (m, km, mi, ft, in, kg, lb, g, L, gal, degC, degF, K, s, min, h, km/h, mph, J, kWh, W, Pa, bar, psi) or their common Spanish names (metros, kilómetros, millas, pies, pulgadas, libras, kilogramos, litros, horas, minutos...). A decimal comma with no dot in the input ("3,5 km") is read as 3.5, not 35. No currencies (rates need the network). Returns {id, cite, to_magnitude, to_unit, formatted} rounded to 12 significant digits. Cite as its cite, e.g. [L-000042].

Keywords: convert, how many, in meters, in kilograms, miles to km, pounds to kilos, temperature, fahrenheit, celsius, convertir, cuántos, pasar a, en metros, en kilos, millas a kilómetros, libras a kilos, temperatura, grados.

statsA

Descriptive statistics and hypothesis tests (SciPy), with a neutral one-line interpretation.

test is one of: describe, ttest_1samp (vs mu), ttest_ind (Welch), ttest_rel (paired), mannwhitneyu, wilcoxon, chi2_contingency and fisher_exact (data = table, e.g. [[8, 2], [1, 9]]), pearson, spearman, linregress (x in data/column, y in data2/column2), proportion_ci (Wilson; successes, trials, confidence), normal_ci (mean CI), binom_test (successes, trials, p0). Numbers come inline (data, data2) or from a registered dataset: dataset + column (+ column2), group_by = a column with exactly two values for two-sample tests, where = a row filter such as "region = 'North'". Dataset columns use every row, not a sample. Report the p_value and effect size as given; the interpretation states significance only - never add causal claims. Cite as its cite.

Keywords: statistics, t-test, is it significant, p-value, correlation, regression, confidence interval, average, standard deviation, median, estadística, prueba t, es significativo, valor p, correlación, regresión, intervalo de confianza, media, desviación típica, mediana.

date_calcA

Date arithmetic: days between dates, adding time, business days, weekdays, ages, time zones.

operation and its arguments:

  • diff: start, end, unit days|weeks|months|years (also returns the calendar breakdown years/months/days).

  • add: start plus days/weeks/months/years (negative to subtract).

  • business_days: start, end; weekends and public holidays excluded, both ends counted (include_end=false to stop the day before). Default Spain, Madrid calendar; pass country (ISO code: FR, DE, US...) and subdivision.

  • weekday / iso_week: value. age: birth_date (+ on, default today).

  • convert_tz: value, from_tz, to_tz (IANA names: Europe/Madrid, America/New_York, UTC). parse: text. Dates: prefer YYYY-MM-DD. "today"/"hoy" works. Numeric dates are read day-first as in Spain (03/04/2026 = 3 April); Spanish month names work. Cite as its cite, e.g. [L-000042].

Keywords: how many days between, days until, business days, working days, add days, deadline, time zone, what day of the week, how old, cuántos días entre, cuántos días faltan, días laborables, días hábiles, sumar días, plazo, zona horaria, qué día de la semana, qué edad tiene.

data_listA

List the registered datasets: name, kind, row_count, column names.

Call this first when the user mentions a table or file and you do not know its dataset name. Query a dataset by its name in SQL. An empty list means nothing is registered yet: use data_register with the path.

Keywords: what data do you have, list datasets, tables, files, spreadsheets, qué datos hay, qué tablas hay, lista de datasets, archivos, hojas de cálculo.

data_registerA

Register a local file or folder so it can be queried with SQL: CSV/TSV, Parquet, JSON/NDJSON, Excel, SQLite.

path is an absolute path on this computer (e.g. C:\Users\me\ventas.xlsx). The dataset name defaults to the file name made SQL-safe ("Ventas 2024" becomes Ventas_2024) - use the returned name. Excel registers one dataset per sheet ("__"), SQLite one per table, a folder all files matching options.glob (default "*.csv"). CSV options: delimiter, header, encoding (utf-8/utf-16/latin-1; auto-detected when omitted, so Windows-1252 exports work without setting anything), date_format (e.g. "%d/%m/%Y"; two-digit-year day-first dates like "13/02/25" are auto-detected already), decimal_separator and thousands_separator. Spanish-style numbers ("-1.150,00", "51,05") are detected automatically and become exact numbers - the result lists them under numbers_converted; pass decimal_separator="." to keep such a column as text, or both separators to force another convention. Excel also takes skip_rows (a title row above the real header is detected and skipped automatically; set this to override). Returns the schema and profile (like data_describe); a single-row result with nested list columns also gets a hint suggesting UNNEST. Re-registering the same path refreshes it. Not read-only: it copies the data into the local catalogue (the original file is never modified).

Keywords: load this file, open this spreadsheet, register dataset, import CSV, read Excel, cargar este archivo, abrir esta hoja de cálculo, registrar datos, importar CSV, leer Excel.

data_describeA

Schema, row_count, per-column profile (nulls %, distinct, min/max/mean/sd, top values) and 5 sample rows.

Before answering anything about a table, call this, then data_query: never guess column names, types or row counts. row_count here is the true size of the dataset. Sample rows are examples, not the data - do not summarise the table from them; aggregate with data_query instead.

Keywords: describe this dataset, what columns, schema, how many rows, column types, summary of the table, describe este dataset, qué columnas, esquema, cuántas filas, tipos de columna, resumen de la tabla.

data_queryA

Run one read-only SQL query (DuckDB dialect) over the registered datasets.

Allowed: SELECT / WITH / DESCRIBE / SUMMARIZE / EXPLAIN / PIVOT, one statement; anything that writes or reads files directly is rejected. Refer to datasets by name: SELECT region, SUM(amount) AS total FROM sales GROUP BY region ORDER BY total DESC. Let SQL do the counting and summing - do not add up returned rows yourself. Returns {id, cite, columns, rows (at most limit, default 50, max 1000), row_count (rows returned), total_rows (rows the query produced), truncated}. Long text cells are cut at 500 characters. Call data_describe first if you have not seen the schema.

Keywords: query the data, SQL, filter rows, group by, total of, sum of, average of, count, top 10, consultar los datos, filtrar, agrupar por, total de, suma de, media de, contar, los 10 primeros.

data_chartA

Draw a chart from a read-only SQL query and save it; only returns the image if you ask.

kind: bar, line, area, scatter, histogram (x only), pie (x = category, y = value), heatmap (x and y). x, y and color are column names of the query result, so aggregate in SQL first, e.g. sql="SELECT region, SUM(amount) AS total FROM sales GROUP BY region", kind="bar", x="region", y="total". bar/line/area without y count rows. Uses at most 5000 rows.

The chart is always saved and logged with its own id, visible in the app's Work log (its detail view shows the image). include_image defaults to false and returns only a short JSON summary (id, cite, row_count, encoding) - a text-only model must not receive an unrequested image, it can crash the turn. Only set include_image=true when you can see images and actually need to look at this one; otherwise just tell the person the returned chart_url (or [id] in the app), or call this again with include_image=true if you need to read values off the chart yourself.

Keywords: chart, plot, graph, bar chart, line chart, histogram, pie chart, visualize, gráfico, gráfica, gráfico de barras, gráfico de líneas, histograma, gráfico circular, visualizar.

work_logA

Recent computations from the work log (yours and the human's), newest first, each with its id.

Use it to reuse a number computed earlier instead of recomputing or remembering it, or to look one up by id: query="L-000042" returns that entry in full. engine filters by calc|math|units|stats|dates|data; query searches operation and input text. Items are short summaries (limit default 10, max 50; has_more tells you there are older ones).

Keywords: what did I calculate, previous result, earlier computation, history, look up L-, qué calculé, resultado anterior, cálculo previo, historial.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.4/5.0

Scored across 11 tools

Disambiguation4/5

The tools map cleanly to distinct domains—arithmetic, symbolic math, units, stats, dates, data registration/query/charting, and history—so confusion is rare. The main overlap is between calc and stats, since calc includes mean/median and stats also covers descriptive statistics, so a query about 'average' could route to either. The data_* tools are clearly separated by lifecycle stage.

Naming Consistency4/5

Most multi-word tools use a consistent snake_case pattern (units_convert, date_calc, data_list, data_query, data_chart, work_log). The three single-word names (calc, math, stats) are predictable domain shortcuts and don't break readability, but they deviate from a strict verb_noun convention. Overall the naming is consistent enough that an agent can infer function from the name.

Tool Count5/5

11 tools is well-scoped for a general-purpose computation and data analysis server. Each tool covers a meaningful capability without redundant extras, such as having separate tools for every statistical test or SQL variant. The count feels intentional, and each tool earns its place.

Completeness4/5

The surface covers the full cycle for computation: exact/symbolic math, units, dates, statistics, and data ingestion → description → querying → visualization → history lookup. Minor gaps exist—there is no unregister/drop operation for datasets and no currency conversion—but these are explicitly out of scope or easily worked around. No common workflow dead-ends appear for the stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues