Skeletable

io.github.eftpmc由 GitHub 账号 eftpmc 发布v1.0.0更新于 Nov 3, 2026

有来源依据的公开表格,附引用、声明核查和可复核的更正。

AI 翻译由 AI 模型根据下方的原文描述翻译,可能有误。

原文描述

Source-backed public tables with citations, claim checks, and reviewable corrections.

已验证Streamable HTTP可网页运行

概览

Skeletable 的托管 MCP 服务(skeletable.com);无需登录;Streamable HTTP;16 个工具。

暂无 AI 概览:以下信息来自注册中心条目和服务本身。

端点
skeletable.com
最近检查

安装

在 SourceWeft 中

  1. 打开 控制台中的 Skeletable,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.eftpmc%2Fskeletable/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "skeletable": {
      "type": "http",
      "url": "https://skeletable.com/mcp"
    }
  }
}

README

Skeletable

Tables for people and agents, where every value records where it came from: a linked page, a person, a file or another app, or a model. Use one for a tracker, a dataset or a list. A new table works this way by default. A table can also require proof, as every table in the public library does: then each value links to the source and exact words that state it, or says where we looked. People read tables on the site, and agents read and build them through an MCP server.

Connect

The server takes MCP over HTTP at /mcp. Reading needs no account. Proposing a change or building a draft needs a token from Settings, sent as a Bearer token. An agent can only write to drafts its person runs, each value still passes every check, and a person publishes.

sh
claude mcp add --transport http skeletable https://skeletable.com/mcp
ToolWhat it does
list_tablesFind a table by what it covers
get_tableRead a table: its scope, columns, a summary of each column, and its rows, live or as a saved version
get_cellOne value's source, exact quote and date, or where we looked
check_claimTest a statement against a cell: it matches, differs, is disputed, or is unknown
export_tableA table as CSV, live or a saved version, with chosen columns, and optionally each value's source, quote and origin
propose_changeSuggest a new value with its proof, for the owner to review
create_tableMake a private draft, ready to fill. proof: "optional" makes one for working data
add_columnsAdd columns to a draft, including AI columns with an instruction
add_rowsAdd up to 500 rows a call, each by name or with its values. A row it already has gets the new values
fill_cellsFill a draft's cells with proof, or say where you looked. Where proof is optional, a value can give its origin instead. Replies list only what failed
data_linkA private CSV address for a notebook, script or spreadsheet, with the lines to load it
save_versionFreeze a table as a numbered version with a link that never changes
fork_tableCopy a public table, or one you run, into your account as a private draft
set_instructionMake a column an AI column, change its instruction, or clear it
next_ai_cellsThe next prompts for a table's AI columns, each with a fingerprint
fill_ai_cellsSave the agent's answers to an AI column

Datasets

A table whose proof is optional is a dataset. Its values say where they came from: a linked page, a person, a file, or a model. On top of that:

  • AI columns have an instruction, like Classify {Pitch} as Horror, Puzzle or Racing. The person's own agent answers it for each row through next_ai_cells and fill_ai_cells, so Skeletable never runs a model itself. Each answer records the model and a fingerprint of its prompt, so a changed row shows its answer is out of date. A value a person typed is never overwritten.
  • Versions freeze a table with a lasting link, at /owner/slug/v/2 and, for a public table, /data/owner/slug/v2.csv.
  • Column summaries show what each column holds: categories with counts, text lengths, number ranges, and where values came from.
  • Data links at /d/<key>.csv load a private table into pandas or Google Sheets. ?columns=a,b picks columns and ?names=0 drops row names.
  • Forks copy a public table into your account to extend or relabel, and remember where they came from.

What's here

tables/          The tables, how they're scored, and their check resultspackages/tables  The table format and its checksapps/mcp         The server: the MCP endpoint and the JSON the site readsapps/web         The site, built with shadcn/ui and served by the serverdocker/          The server's image, which Railway builds

Licensing

The source code is licensed under Apache-2.0. Published table data is licensed separately under CC BY 4.0, as shown in the data responses.

Review table changes

Each table has Overview, Proposals, and History tabs, with an Open sheet button for the editor. Signed-in contributors can create a titled proposal with up to 20 cell changes, a reason, and a source and exact quote for each value. Bundles remain open for review, including when submitted by an owner. Existing single-cell owner saves still apply immediately after validation.

Account owners and editors can accept all changes in a bundle or close it. Acceptance is transactional and refuses a bundle if any cell has a newer version than the one recorded at submission. Close a stale proposal and submit an updated one. Accepted values remain in the existing version history. Discussion threads, revision restore, and editing an open proposal are not implemented yet.

Develop

Requirements: Node 22+ and pnpm 10 (corepack enable).

sh
pnpm installpnpm dev
CommandWhat it does
pnpm devRun the server on port 4200
pnpm dev:webRun the site on port 5173, reading from that server
pnpm testRun tests
pnpm lintLint
pnpm typecheckType-check every package
pnpm buildProduction build
pnpm tables validate <file>Check a table's shape, numbers and text against its quotes
pnpm tables verify <file>Open each source and look for every quote
pnpm tables watch <file>See whether live quotes are still on their pages, and save the result
pnpm tables sample <file>Draw a repeatable sample of cells for spot-checking

New tables start as JSON files in tables/, and the server loads them into Postgres when DATABASE_URL is set, or serves them directly when it isn't. It refuses to start if a table fails its checks.

Sign-in needs DATABASE_URL, GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET. PUBLIC_URL sets the site's address, and OWNER_EMAIL says who runs the official account.

Database tests run when TEST_DATABASE_URL is set. They wipe that database.

来源:README.md,提交 dcc1701

工具

16

list_tables

Find tables in the library. Each result gives its slug, the question it answers, its size and when it was last read.

输入参数query

get_table

Read a table: its scope, its columns with the rule for each, a summary of what each column holds, and its rows. A null value is blank. `origins` says where a row's unquoted values came from, `ai` says how far each AI column has got, and `versions` lists saved versions. For a big table, read the summaries first and page through rows with `offset` and `limit`.

输入参数slug必填limitoffsetversion

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.

输入参数row必填slug必填column必填

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.

输入参数row必填slug必填value必填column必填

export_table

A table as CSV, ready to save as a file or load into a notebook. The first column is each row's name unless `names` is false. `columns` picks columns by id, in that order. With `proof`, each column is followed by its source and quote, and in a table whose proof is optional, by where each value came from. An empty field means no value.

输入参数slug必填namesproofcolumnsversion

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.

输入参数row必填noteslug必填quote必填value必填column必填source必填

create_table

Make a private draft table, ready to fill, for anything from a tracker to a dataset. Its values say where they came from unless you set `proof` to `required`. 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.

输入参数rowsownerproofscopetitletopiccolumnsquestiontemplate

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.

输入参数slug必填columns必填

add_rows

Add up to 500 rows to a table you run. Each row is a name, or an object with its `values` by column id or label, so a whole tracker or dataset goes in a few calls. A row without a `key` gets the next free number. A name the table already has gets the values given for it, so syncing again from the same source is one call; with no values it's skipped. Say where the values came from with `origin` (`entered`, `imported` with a `note` naming the file or email, `link` with a `source`, or `generated`, which is the default without a source). Rows with values can go into a published table too; rows by name only into a draft. A table that requires proof takes rows by name only. Needs a token.

输入参数rows必填slug必填

fill_cells

Set up to 200 cells of a table you run. Usually a cell gives `value` and `origin` (`entered`, `imported` with a `note` like the file or email it came from, `link` with its `source`, or `generated`). Left out, the origin is `link` when there's a `source` and `generated` when there isn't. These can go into a published table too, and never replace a quoted value. A date is written YYYY-MM-DD, and a column with choices takes only one of them. In a table that requires proof, a cell instead gives `value`, `source` and `quote`, word for word from the source; each page is opened before it's saved, so send at most 25 of these at once, and only into a draft. If no acceptable source states it, give `checked` with the pages you read, and `none_stated` only if you read the whole source and it has no such value. The reply counts what saved and lists only the cells that didn't, with a reason, and `unchecked` names quoted values whose page couldn't be read. Needs a token.

输入参数slug必填cells必填

save_version

Freeze a table you run as it stands now, as a numbered version with a lasting link that never changes. Do this before training on a dataset or citing a table, and name the version you used. Needs a token.

输入参数noteslug必填

fork_table

Copy a table into your own account as a private draft, to extend or relabel: any published public table, or one you run. Every value keeps its proof or origin, and the copy remembers where it came from. Needs a token.

输入参数slug必填ownertitle

set_instruction

Make a column an AI column, change its instruction, or turn it back into a plain column with an empty one. The instruction says what to work out for each row and names other columns in braces, like "Classify {Pitch} by genre". Its values never overwrite what a person typed, linked or quoted. Needs proof to be optional and a token.

输入参数slug必填column必填choicesinstruction必填

next_ai_cells

The next prompts to answer for a table's AI columns, up to 200 at a time: blank cells first, then answers whose row or instruction has changed. Answer each prompt yourself, then send the answers back with fill_ai_cells, each with its `row` and `basis`. Repeat until it says `done`. `redo` also re-answers generated values that came from outside the instruction. Needs a token.

输入参数redoslug必填limitcolumn

fill_ai_cells

Save up to 200 answers to an AI column, each with the `row` and `basis` next_ai_cells gave it. An answer outside the column's choices, or to a prompt that has since changed, comes back with a reason. Each value is saved as generated, with the instruction and `model`. Needs a token.

输入参数slug必填model必填column必填answers必填

版本历史

1
  1. v1.0.0最新Nov 3, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分