Graph Paper

Check a plot document and get a link that opens it in Graph Paper. No account, no key.

Should I use this

Quality & Safety

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

Findings (2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin make_plot_link

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~804Tokens (tool definitions)
~2.0 KBTypical response size
Moderate attention impact (0.63% 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": {
    "graph-paper": {
      "url": "https://graph-paper.io/mcp"
    }
  }
}

Remote endpoints

https://graph-paper.io/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢make_plot_link(document)

Check a Graph Paper plot document and return the link that opens it. The link opens the plot as an editable draft in Graph Paper (https://graph-paper.io); the reader needs no account. Give the document as a JSON object in the format of get_plot_format. If the document has errors, the result lists each one with the path of the field and what to change, and no link; fix them and call the tool again. Warnings name the keys that were ignored.

Input Schema

{
  "type": "object",
  "properties": {
    "document": {
      "type": "object",
      "description": "The plot document: a JSON object with at least \"title\" and \"series\". See get_plot_format and list_examples."
    }
  },
  "required": [
    "document"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "True when the document is valid and url is given."
    },
    "url": {
      "type": "string",
      "description": "The link that opens the document."
    },
    "title": {
      "type": "string"
    },
    "dimension": {
      "type": "integer",
      "enum": [
        2,
        3
      ]
    },
    "category": {
      "type": "string",
      "enum": [
        "2d",
        "3d",
        "data"
      ]
    },
    "rows": {
      "type": "object",
      "description": "How many rows of each kind the document has.",
      "properties": {
        "series": {
          "type": "integer"
        },
        "variables": {
          "type": "integer"
        },
        "points": {
          "type": "integer"
        },
        "definitions": {
          "type": "integer"
        },
        "actions": {
          "type": "integer"
        },
        "markers": {
          "type": "integer"
        }
      }
    },
    "note": {
      "type": "string",
      "description": "With ok true: the formulas were not computed, and what to ask the person when a row does not work."
    },
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "The field, in JSON path notation such as \"series[0].fn\"; empty for the whole document."
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "path",
          "message"
        ]
      }
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "The field, in JSON path notation such as \"series[0].fn\"; empty for the whole document."
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "path",
          "message"
        ]
      }
    }
  },
  "required": [
    "ok",
    "warnings"
  ]
}
🟢get_plot_format(section)

Return the reference of the Graph Paper plot document format, as Markdown: every field of a plot document, the series types, the limits, and complete examples. Give section to get one section only (a heading of the page, such as "Variables" or "2D Series Types"); an unknown section returns the list of headings. Read it before you write a document for make_plot_link.

Input Schema

{
  "type": "object",
  "properties": {
    "section": {
      "type": "string",
      "description": "A heading of the format page. Leave it out for the whole page."
    }
  },
  "additionalProperties": false
}
🟢list_examples

Return the example plot documents of the Graph Paper format page, each with its title and its JSON. Each one is a valid document that make_plot_link accepts; start from the one closest to what you want.

Input Schema

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

Output Schema

{
  "type": "object",
  "properties": {
    "examples": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The heading the example is under."
          },
          "document": {
            "type": "object"
          }
        },
        "required": [
          "title",
          "document"
        ]
      }
    }
  },
  "required": [
    "examples"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools