Skeletable MCP
A public library of tables where each cell links to the exact words that prove it, allowing agents to access source-backed data with citations and claim checks for topics like AI pricing, laws, and hardware specs.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://skeletable.com/mcpWhat you can do with it
- Query AI model API prices per million tokens
- Check AI provider data terms for training and retention
- Find US data breach notification law requirements
- Compare e-reader specifications and features
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- skeletable 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 9 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
9 advertised
list_tables
Find tables in the library. Each result gives its slug, the question it answers, its size and when it was last read.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"query": {
"type": "string",
"maxLength": 200,
"description": "Words to look for in titles, questions, columns and rows. Leave out to list everything."
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_table
Read a table: its scope, its columns with the rule for each, and its rows. A null value means no acceptable source stated it.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 120,
"description": "From list_tables"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_cell
The evidence for one value: the source, the exact quote, what kind of source it is and when it was read. For a missing value, where we looked, and `absent` means the source was read and gives no such value. `url` is the cell's lasting address, showing its proof, for citing. `confirmed` says how a second reader backed it up, and without it the value has been read once. `conflicts` lists sources that state something else, `history` lists past values, and `watch` says whether the quote was still on its page at the last check.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug",
"row",
"column"
],
"properties": {
"row": {
"type": "string",
"maxLength": 200,
"description": "The row's key, from get_table"
},
"slug": {
"type": "string",
"maxLength": 120,
"description": "From list_tables"
},
"column": {
"type": "string",
"maxLength": 80,
"description": "The column's id, from get_table"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}check_claim
Test a statement against one cell, such as whether a value in a draft or an answer is right. The verdict is `matches`, `differs` (with what the source states), `disputed` (sources disagree, see `conflicts`) or `unknown` (no acceptable source stated it, so say so). It compares values and doesn't judge meaning, so read the quote before relying on a text verdict. Use list_tables and get_table to find the cell first.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug",
"row",
"column",
"value"
],
"properties": {
"row": {
"type": "string",
"maxLength": 200,
"description": "The row's key, from get_table"
},
"slug": {
"type": "string",
"maxLength": 120,
"description": "From list_tables"
},
"value": {
"type": "string",
"maxLength": 300,
"description": "The value being claimed"
},
"column": {
"type": "string",
"maxLength": 80,
"description": "The column's id, from get_table"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}propose_change
Suggest a new value for a cell, with its proof. The quote must be word for word from the source and state the value. The owner reviews it before anything changes. Needs a token sent as a Bearer token.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug",
"row",
"column",
"value",
"source",
"quote"
],
"properties": {
"row": {
"type": "string",
"maxLength": 200,
"description": "The row's exact key, from get_table"
},
"note": {
"type": "string",
"maxLength": 500,
"description": "Why this should change"
},
"slug": {
"type": "string",
"maxLength": 120,
"description": "From list_tables"
},
"quote": {
"type": "string",
"maxLength": 400,
"description": "The exact words on that page"
},
"value": {
"type": "string",
"maxLength": 300,
"description": "The new value, following the column's rule"
},
"column": {
"type": "string",
"maxLength": 80,
"description": "The column's id, from get_table"
},
"source": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "The page that states it"
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}create_table
Make a private draft table, ready to fill. Only `title`, `columns` and `rows` are needed now, but give `question`, `scope`, and a `rule` for each column if you can: a person has to supply them before publishing. Returns the column ids fill_cells needs, and the sheet's link, so tell your person to open it and watch it fill. Needs a token.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"columns",
"rows"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120
},
"maxItems": 200,
"minItems": 1
},
"owner": {
"type": "string",
"maxLength": 60,
"description": "A team you're on. Leave out for your own account"
},
"scope": {
"type": "string",
"maxLength": 800,
"description": "What belongs in the table and what doesn't"
},
"title": {
"type": "string",
"maxLength": 120
},
"topic": {
"type": "string",
"maxLength": 40,
"description": "A broad subject, like Law or Consumer tech"
},
"columns": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"type"
],
"properties": {
"rule": {
"type": "string",
"maxLength": 500,
"description": "What counts as this value, so two readers would fill it in the same way"
},
"type": {
"enum": [
"text",
"number",
"boolean"
],
"type": "string"
},
"unit": {
"type": "string",
"maxLength": 30
},
"label": {
"type": "string",
"maxLength": 80
}
}
},
"maxItems": 20,
"minItems": 1
},
"question": {
"type": "string",
"maxLength": 300,
"description": "The question the table answers"
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}add_columns
Add columns to a draft you run, such as a blank one a person started. Returns the new column ids for fill_cells. Needs a token.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug",
"columns"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 120
},
"columns": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"type"
],
"properties": {
"rule": {
"type": "string",
"maxLength": 500,
"description": "What counts as this value, so two readers would fill it in the same way"
},
"type": {
"enum": [
"text",
"number",
"boolean"
],
"type": "string"
},
"unit": {
"type": "string",
"maxLength": 30
},
"label": {
"type": "string",
"maxLength": 80
}
}
},
"maxItems": 20,
"minItems": 1
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}add_rows
Add rows to a draft you run, as you find what belongs in it. A name it already has is skipped. Needs a token.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug",
"rows"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120
},
"maxItems": 200,
"minItems": 1
},
"slug": {
"type": "string",
"maxLength": 120
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}fill_cells
Fill up to 25 cells of a draft you run. Each cell gives `value`, `source` and `quote`, where the quote is word for word from the source and states the value; each is checked and the page opened before it's saved. If no acceptable source states it, give `checked` with the pages you read instead of a value, and add `none_stated` only if you read the whole source and it has no such value. Bad cells come back with a reason and don't stop the rest. Needs a token.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug",
"cells"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 120,
"description": "From create_table or list_tables"
},
"cells": {
"type": "array",
"items": {
"type": "object",
"required": [
"row",
"column"
],
"properties": {
"row": {
"type": "string",
"maxLength": 200
},
"quote": {
"type": "string",
"maxLength": 400
},
"value": {
"type": "string",
"maxLength": 300
},
"column": {
"type": "string",
"maxLength": 80,
"description": "The column's id, from get_table"
},
"source": {
"type": "string",
"maxLength": 2000
},
"checked": {
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
},
"maxItems": 10
},
"none_stated": {
"type": "boolean"
}
}
},
"maxItems": 25,
"minItems": 1
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 363 ms
- 95th percentile latency
- 363 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 363 ms · metadata changed · 9 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http skeletable-mcp https://skeletable.com/mcpCodex
codex mcp add skeletable-mcp --url https://skeletable.com/mcpCursor
{
"mcpServers": {
"skeletable-mcp": {
"url": "https://skeletable.com/mcp"
}
}
}Cline
{
"mcpServers": {
"skeletable-mcp": {
"type": "streamableHttp",
"url": "https://skeletable.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"skeletable-mcp": {
"type": "http",
"url": "https://skeletable.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http skeletable-mcp https://skeletable.com/mcpClaude Desktop
{
"mcpServers": {
"skeletable-mcp": {
"url": "https://skeletable.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"skeletable-mcp": {
"serverUrl": "https://skeletable.com/mcp"
}
}
}Let your agent find its tools
Find servers like Skeletable MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.