Every Number
Turn an Excel or CSV export into a dashboard where every number has a receipt. No account.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"spreadsheet-dashboard": {
"url": "https://everynumber.app/mcp"
}
}
}원격 엔드포인트
https://everynumber.app/mcpstreamable-http할 수 있는 일
도구 목록
도구 (1)
🟡make_dashboard_from_file(file_url, file_content, file_name, content_encoding, sheet, ...)
Turn a spreadsheet export (Excel or CSV, up to 10 MB) into an Every Number dashboard. Returns a read-only dashboard link and every number on it with its receipt: the definition, the rows it used, and the rows it left out with the reason. Fixed rules lay out the screen and a database counts every number; no AI reads the file. Send the file as file_url (a Google Sheet shared as 'Anyone with the link', a Dropbox link, or a file in a public GitHub repository) or as file_content (CSV text, or base64 for Excel) with file_name. No account needed. Anyone with the link can open the dashboard, and it is deleted 24 hours after upload unless the person saves it. Limits: 5 files per 10 minutes and 20 per day from one place.
입력 스키마
{
"type": "object",
"properties": {
"file_url": {
"description": "A link to the file: a Google Sheet shared as 'Anyone with the link', a Dropbox link, a file in a public GitHub repository or gist, or an Every Number sample such as https://everynumber.app/samples/tickets/tickets-export-2026-10-18.csv. Send this or file_content.",
"type": "string",
"maxLength": 2048
},
"file_content": {
"description": "The file itself, up to 10 MB: CSV or TSV text as it is, or an Excel file encoded as base64. Send this or file_url.",
"type": "string",
"maxLength": 13982040
},
"file_name": {
"description": "The file's name with its extension, such as orders-october.csv or pipeline.xlsx. Needed with file_content. It also becomes the dashboard's title.",
"type": "string",
"maxLength": 200
},
"content_encoding": {
"description": "How file_content is written. Default: base64 for .xlsx, .xlsm and .xls, text for everything else.",
"type": "string",
"enum": [
"text",
"base64"
]
},
"sheet": {
"description": "For an Excel file with several sheets, the name of the sheet to read. Default: the sheet with the most data.",
"type": "string",
"maxLength": 200
},
"file": {
"description": "A file the person attached in ChatGPT. ChatGPT fills this in. Other assistants send file_url or file_content instead.",
"type": "object",
"properties": {
"download_url": {
"type": "string",
"maxLength": 4096
},
"file_id": {
"type": "string",
"maxLength": 200
},
"mime_type": {
"type": "string",
"maxLength": 200
},
"file_name": {
"type": "string",
"maxLength": 200
}
},
"required": [
"download_url",
"file_id"
]
}
}
}출력 스키마
{
"type": "object",
"properties": {
"dashboard_url": {
"type": "string",
"description": "The dashboard, read-only. Anyone with this link can open it until it's deleted."
},
"title": {
"type": "string"
},
"decision": {
"type": "string",
"description": "The question the screen is laid out to answer, picked by rules from the columns."
},
"screen": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"why": {
"type": "string"
}
},
"required": [
"name",
"why"
],
"additionalProperties": false
},
"expires_at": {
"type": "string",
"description": "When the dashboard and the rows we read are deleted, unless it's saved (ISO 8601)."
},
"keep": {
"type": "string"
},
"file": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"sheet": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"sheets": {
"type": "array",
"items": {
"type": "string"
}
},
"rows": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"columns": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"data_through": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"sheet",
"sheets",
"rows",
"columns",
"data_through"
],
"additionalProperties": false
},
"headline": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
},
"change": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"compared_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"number": {
"type": "string",
"description": "key of the number in numbers"
}
},
"required": [
"label",
"value",
"change",
"compared_to",
"number"
],
"additionalProperties": false
},
"description": "The numbers across the top of the dashboard."
},
"findings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"number": {
"type": "string",
"description": "key of the number in numbers"
}
},
"required": [
"text",
"number"
],
"additionalProperties": false
},
"description": "What this file says, in sentences filled from the numbers."
},
"numbers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"label": {
"type": "string"
},
"value": {
"type": "string",
"description": "The number as the dashboard shows it."
},
"exact": {
"description": "The same number with more precision, when it differs.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"raw": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"why": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"receipt": {
"type": "object",
"properties": {
"receipt_id": {
"type": "string",
"description": "The receipt's fingerprint. Same file and same definition give the same ID."
},
"definition": {
"type": "string",
"description": "The rule behind the number, in plain English."
},
"source_file": {
"type": "string"
},
"data_through": {
"description": "The last date in the data (YYYY-MM-DD), if the file has dates.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"rows_in_file": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"rows_used": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"rows_outside_definition": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Rows the definition doesn't cover, such as other statuses."
},
"rows_left_out": {
"type": "array",
"items": {
"type": "object",
"properties": {
"reason": {
"type": "string"
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"rows": {
"type": "string",
"description": "Row numbers in the file, such as 'Rows 4, 17 and 3 more'."
}
},
"required": [
"reason",
"count",
"rows"
],
"additionalProperties": false
},
"description": "Rows skipped on upload (totals, blanks) and rows the definition leaves out, each with the reason."
},
"math": {
"type": "array",
"items": {
"type": "string"
},
"description": "The arithmetic from the rows in the file to the number, one step per line."
},
"checks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"text": {
"type": "string"
}
},
"required": [
"ok",
"text"
],
"additionalProperties": false
},
"description": "Checks the number passed (ok true) or should be read with (ok false)."
}
},
"required": [
"receipt_id",
"definition",
"source_file",
"data_through",
"rows_in_file",
"rows_used",
"rows_outside_definition",
"rows_left_out",
"math",
"checks"
],
"additionalProperties": false
}
},
"required": [
"key",
"label",
"value",
"exact",
"raw",
"why",
"error",
"receipt"
],
"additionalProperties": false
}
},
"how_counted": {
"type": "string"
}
},
"required": [
"dashboard_url",
"title",
"decision",
"screen",
"expires_at",
"keep",
"file",
"headline",
"findings",
"numbers",
"how_counted"
],
"additionalProperties": false
}커뮤니티
증거