Moltline Research Desk

7 research navigation, thesis, note-taking and citation skill products. 6 of 8 free.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
90%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,865Tokens (tool definitions)
~1.2 KBTypical response size
Significant attention impact (2.24% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "research": {
      "url": "https://mcp.moltlinestudio.com/research"
    }
  }
}

Remote endpoints

https://mcp.moltlinestudio.com/researchstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_products

List every product in the Research Desk line with its included skills. FREE. Takes no arguments. Returns a list of 7 product objects, each {"slug": "thesis-advisor", "name": ..., "tagline": ..., "skills": ["Skill A", ...], "free_skill": "Gateway Skill Name"}. Use the returned slug values with get_free_skill, get_full_product, or get_full_skill. Returns metadata only - no persona text and no skill instructions. Use when the caller wants to see what this server covers. Not for keyword search across the whole 138-product catalog, which the catalog server's search_catalog does, and not for instructions the caller can act on (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.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "result"
  ],
  "x-fastmcp-wrap-result": true
}
🟢get_free_skill(slug)

Load a product's free gateway skill with its complete instructions. FREE. Typical input {"slug": "thesis-advisor"} returns {"slug": ..., "skill": "<skill name>", "instructions": "<full skill text>"}. Returns exactly one skill - the product's free gateway skill - chosen automatically from the slug, with no plan required. Use when the caller wants usable instructions immediately. Not for the product's other skills: those are named and need get_full_skill with a skill_name, which requires a 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.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Product slug exactly as returned by list_products,\ne.g. \"thesis-advisor\"."
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "additionalProperties": true
}
🟢format_citation(style, authors, year, title, container, ...)

Format a citation in APA 7, MLA 9, or Chicago author-date style. FREE. Typical input {"style": "apa", "authors": ["Curie, Marie"], "year": 1911, "title": "Radium and radioactivity", "container": "Century Magazine"} returns {"style": "apa", "citation": "Curie, M. (1911). Radium and radioactivity. Century Magazine.", "note": "..."}. Use when the source details are already known and only the formatting is missing. 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.

Input Schema

{
  "type": "object",
  "properties": {
    "style": {
      "type": "string",
      "description": "Citation style: \"apa\", \"mla\", or \"chicago\"\n(case-insensitive)."
    },
    "authors": {
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": "array",
      "description": "Authors as \"Last, First\" strings in source order, at\nleast one, e.g. [\"Curie, Marie\"]."
    },
    "year": {
      "type": "integer",
      "description": "Publication year, e.g. 2024."
    },
    "title": {
      "type": "string",
      "description": "Title of the work being cited."
    },
    "container": {
      "default": "",
      "type": "string",
      "description": "Optional journal, book, or site name."
    },
    "publisher": {
      "default": "",
      "type": "string",
      "description": "Optional publisher name."
    },
    "url": {
      "default": "",
      "type": "string",
      "description": "Optional URL of the source."
    },
    "accessed": {
      "default": "",
      "type": "string",
      "description": "Optional access date for MLA web sources, e.g.\n\"12 Aug. 2026\"."
    }
  },
  "required": [
    "style",
    "authors",
    "year",
    "title"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "additionalProperties": true
}
🟢get_full_product(slug)

Load one product in full: its persona plus every paid skill. PREMIUM (license). Typical input {"slug": "thesis-advisor"} returns {"slug": ..., "name": ..., "persona": "<persona text>", "skills": [{"name": ..., "instructions": ...}, ...], "free_skill": {...}}. Returns persona plus every skill for one product. Use when the caller wants the whole product. Not for a single skill (get_full_skill) and not for a free look, which list_products and get_free_skill provide with no 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>'"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Product slug exactly as returned by list_products,\ne.g. \"thesis-advisor\"."
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "additionalProperties": true
}
🟢get_full_skill(slug, skill_name)

Load one paid skill's complete instructions from a product. PREMIUM (license). Typical input {"slug": "thesis-advisor", "skill_name": "Outline Builder"} returns {"slug": ..., "skill": ..., "instructions": "<full skill text>"}. Returns one named skill, selected by skill_name. Use when the caller wants one specific paid skill. Not for the free gateway skill, which get_free_skill returns with no plan, and not for every skill at once (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.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Product slug exactly as returned by list_products."
    },
    "skill_name": {
      "type": "string",
      "description": "Exact skill name as listed in that product's \"skills\"\narray from list_products."
    }
  },
  "required": [
    "slug",
    "skill_name"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "additionalProperties": true
}
🟢stats_describe(numbers)

Describe a numeric dataset: center, spread, quartiles, and outliers. FREE. Typical input {"numbers": [12, 15, 14, 90, 13]} returns {"n": 5, "mean": 28.8, "median": 14.0, "std_dev": ..., "min": 12, "max": 90, "q1": ..., "q3": ..., "iqr_outliers": [90], "skew": "right (mean > median)"}. Use as a first summary of one numeric dataset. Not for interval estimates (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.

Input Schema

{
  "type": "object",
  "properties": {
    "numbers": {
      "items": {
        "type": "number"
      },
      "minItems": 1,
      "type": "array",
      "description": "The dataset as a list of numbers; at least 1 value."
    }
  },
  "required": [
    "numbers"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "additionalProperties": true
}
🟢sample_size(population, confidence_pct, margin_pct)

Calculate the survey sample size needed for a confidence level and margin. FREE. Uses maximum variance (p=0.5) with a finite-population correction when population is given. Typical input {"population": 5000, "confidence_pct": 95, "margin_pct": 5} returns {"required_sample": 357, "assumptions": "p=0.5 (max variance), random sampling"}. Use before collecting data, to size a survey. Not for analyzing data already 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.

Input Schema

{
  "type": "object",
  "properties": {
    "population": {
      "default": 0,
      "type": "integer",
      "description": "Total population size; 0 (default) means unknown or\nvery large."
    },
    "confidence_pct": {
      "default": 95,
      "type": "number",
      "description": "Confidence level; must be 90, 95, or 99.\nDefault 95."
    },
    "margin_pct": {
      "default": 5,
      "exclusiveMinimum": 0,
      "maximum": 50,
      "type": "number",
      "description": "Acceptable margin of error percentage; above 0 and at\nmost 50. Default 5."
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "additionalProperties": true
}
🟢confidence_interval(mean, std_dev, n, confidence_pct)

Compute a confidence interval for a mean (normal approximation). FREE. Typical input {"mean": 72.4, "std_dev": 8.1, "n": 64, "confidence_pct": 95} returns {"mean": 72.4, "margin_of_error": 1.9845, "interval": [70.4155, 74.3845], "note": "..."}. Use on data already collected, for a mean. Normal approximation, so it is unreliable on very small or heavily skewed samples. Not for proportions or two-group comparisons - the data server's ab_test compares two proportions. 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.

Input Schema

{
  "type": "object",
  "properties": {
    "mean": {
      "type": "number",
      "description": "Sample mean."
    },
    "std_dev": {
      "minimum": 0,
      "type": "number",
      "description": "Sample standard deviation; 0 or greater."
    },
    "n": {
      "minimum": 2,
      "type": "integer",
      "description": "Sample size; at least 2."
    },
    "confidence_pct": {
      "default": 95,
      "type": "number",
      "description": "Confidence level; must be 90, 95, or 99.\nDefault 95."
    }
  },
  "required": [
    "mean",
    "std_dev",
    "n"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "additionalProperties": true
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools