Server definition
- Hash
- sha256:83dfce4f8209d287ef92ed40331756fac5c1034a76e27c65bc6ebd7c7c6eff3c
- What it is
- What a remote MCP server returned when asked what it offers: 8 tools
The blob, as servednamed by its sha256
{
"instructions": "Moltline's Research Desk: 7 research/study persona-skill products (research navigation, thesis advising, note-taking, reading comprehension, exam prep). Free: list_products, get_free_skill, format_citation. Premium: get_full_product, get_full_skill.",
"tools": [
{
"description": "Compute a confidence interval for a mean (normal approximation). FREE.\n\nTypical input {\"mean\": 72.4, \"std_dev\": 8.1, \"n\": 64,\n\"confidence_pct\": 95} returns {\"mean\": 72.4, \"margin_of_error\":\n1.9845, \"interval\": [70.4155, 74.3845], \"note\": \"...\"}.\n\nUse on data already collected, for a mean. Normal approximation, so it is\nunreliable on very small or heavily skewed samples. Not for proportions or\ntwo-group comparisons - the data server's ab_test compares two\nproportions. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"confidence 90/95/99, n>=2, std_dev>=0\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"confidence_pct": {
"default": 95,
"description": "Confidence level; must be 90, 95, or 99.\nDefault 95.",
"type": "number"
},
"mean": {
"description": "Sample mean.",
"type": "number"
},
"n": {
"description": "Sample size; at least 2.",
"minimum": 2,
"type": "integer"
},
"std_dev": {
"description": "Sample standard deviation; 0 or greater.",
"minimum": 0,
"type": "number"
}
},
"required": [
"mean",
"std_dev",
"n"
],
"type": "object"
},
"name": "confidence_interval",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Format a citation in APA 7, MLA 9, or Chicago author-date style. FREE.\n\nTypical input {\"style\": \"apa\", \"authors\": [\"Curie, Marie\"], \"year\":\n1911, \"title\": \"Radium and radioactivity\", \"container\": \"Century\nMagazine\"} returns {\"style\": \"apa\", \"citation\": \"Curie, M. (1911).\nRadium and radioactivity. Century Magazine.\", \"note\": \"...\"}.\n\nUse when the source details are already known and only the formatting is\nmissing. Not for finding or verifying a source. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"style must be apa, mla, or chicago\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"accessed": {
"default": "",
"description": "Optional access date for MLA web sources, e.g.\n\"12 Aug. 2026\".",
"type": "string"
},
"authors": {
"description": "Authors as \"Last, First\" strings in source order, at\nleast one, e.g. [\"Curie, Marie\"].",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array"
},
"container": {
"default": "",
"description": "Optional journal, book, or site name.",
"type": "string"
},
"publisher": {
"default": "",
"description": "Optional publisher name.",
"type": "string"
},
"style": {
"description": "Citation style: \"apa\", \"mla\", or \"chicago\"\n(case-insensitive).",
"type": "string"
},
"title": {
"description": "Title of the work being cited.",
"type": "string"
},
"url": {
"default": "",
"description": "Optional URL of the source.",
"type": "string"
},
"year": {
"description": "Publication year, e.g. 2024.",
"type": "integer"
}
},
"required": [
"style",
"authors",
"year",
"title"
],
"type": "object"
},
"name": "format_citation",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Load a product's free gateway skill with its complete instructions. FREE.\n\nTypical input {\"slug\": \"thesis-advisor\"} returns {\"slug\": ...,\n\"skill\": \"<skill name>\", \"instructions\": \"<full skill text>\"}.\n\nReturns exactly one skill - the product's free gateway skill - chosen\nautomatically from the slug, with no plan required. Use when the caller\nwants usable instructions immediately. Not for the product's other skills:\nthose are named and need get_full_skill with a skill_name, which requires\na paid plan. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"unknown slug '<value>'. Use list_products.\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"slug": {
"description": "Product slug exactly as returned by list_products,\ne.g. \"thesis-advisor\".",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_free_skill",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Load one product in full: its persona plus every paid skill. PREMIUM (license).\n\nTypical input {\"slug\": \"thesis-advisor\"} returns {\"slug\": ..., \"name\":\n..., \"persona\": \"<persona text>\", \"skills\": [{\"name\": ...,\n\"instructions\": ...}, ...], \"free_skill\": {...}}.\n\nReturns persona plus every skill for one product. Use when the caller\nwants the whole product. Not for a single skill (get_full_skill) and not\nfor a free look, which list_products and get_free_skill provide with no\nplan. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"unknown slug '<value>'\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"slug": {
"description": "Product slug exactly as returned by list_products,\ne.g. \"thesis-advisor\".",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_full_product",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Load one paid skill's complete instructions from a product. PREMIUM (license).\n\nTypical input {\"slug\": \"thesis-advisor\", \"skill_name\": \"Outline\nBuilder\"} returns {\"slug\": ..., \"skill\": ..., \"instructions\": \"<full\nskill text>\"}.\n\nReturns one named skill, selected by skill_name. Use when the caller wants\none specific paid skill. Not for the free gateway skill, which\nget_free_skill returns with no plan, and not for every skill at once\n(get_full_product). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"unknown slug '<value>'\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"skill_name": {
"description": "Exact skill name as listed in that product's \"skills\"\narray from list_products.",
"type": "string"
},
"slug": {
"description": "Product slug exactly as returned by list_products.",
"type": "string"
}
},
"required": [
"slug",
"skill_name"
],
"type": "object"
},
"name": "get_full_skill",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "List every product in the Research Desk line with its included skills. FREE.\n\nTakes no arguments. Returns a list of 7 product objects, each {\"slug\":\n\"thesis-advisor\", \"name\": ..., \"tagline\": ..., \"skills\": [\"Skill A\",\n...], \"free_skill\": \"Gateway Skill Name\"}. Use the returned slug values\nwith get_free_skill, get_full_product, or get_full_skill.\n\nReturns metadata only - no persona text and no skill instructions. Use\nwhen the caller wants to see what this server covers. Not for keyword\nsearch across the whole 138-product catalog, which the catalog server's\nsearch_catalog does, and not for instructions the caller can act on\n(get_free_skill). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_products",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"description": "Calculate the survey sample size needed for a confidence level and margin. FREE.\n\nUses maximum variance (p=0.5) with a finite-population correction when\npopulation is given. Typical input {\"population\": 5000,\n\"confidence_pct\": 95, \"margin_pct\": 5} returns {\"required_sample\": 357,\n\"assumptions\": \"p=0.5 (max variance), random sampling\"}.\n\nUse before collecting data, to size a survey. Not for analyzing data\nalready collected (stats_describe, confidence_interval). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"confidence_pct must be 90, 95, or 99\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"confidence_pct": {
"default": 95,
"description": "Confidence level; must be 90, 95, or 99.\nDefault 95.",
"type": "number"
},
"margin_pct": {
"default": 5,
"description": "Acceptable margin of error percentage; above 0 and at\nmost 50. Default 5.",
"exclusiveMinimum": 0,
"maximum": 50,
"type": "number"
},
"population": {
"default": 0,
"description": "Total population size; 0 (default) means unknown or\nvery large.",
"type": "integer"
}
},
"type": "object"
},
"name": "sample_size",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Describe a numeric dataset: center, spread, quartiles, and outliers. FREE.\n\nTypical input {\"numbers\": [12, 15, 14, 90, 13]} returns {\"n\": 5,\n\"mean\": 28.8, \"median\": 14.0, \"std_dev\": ..., \"min\": 12, \"max\": 90,\n\"q1\": ..., \"q3\": ..., \"iqr_outliers\": [90], \"skew\": \"right (mean >\nmedian)\"}.\n\nUse as a first summary of one numeric dataset. Not for interval estimates\n(confidence_interval) and not for planning a study (sample_size). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"no numbers\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"numbers": {
"description": "The dataset as a list of numbers; at least 1 value.",
"items": {
"type": "number"
},
"minItems": 1,
"type": "array"
}
},
"required": [
"numbers"
],
"type": "object"
},
"name": "stats_describe",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:83dfce4f8209d287ef92ed40331756fac5c1034a76e27c65bc6ebd7c7c6eff3c | sha256sum