Every Number
Turn an Excel or CSV export into a dashboard where every number has a receipt. No account.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"spreadsheet-dashboard": {
"url": "https://everynumber.app/mcp"
}
}
}Puntos de conexión remotos
https://everynumber.app/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (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.
Esquema de entrada
{
"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"
]
}
}
}Esquema de salida
{
"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
}Comunidad
Evidencia