protogrid

Search / com.sumoffice/office

SumOffice — real Word and Excel for agents

R0· no sign-in

Real Word and Excel for agents: open your .docx/.xlsm, read, propose, apply, get it back intact.

v0.3.1 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality79good
Trust95of 100
Uptime, 30 days100%
Latency p50426 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "office": {
      "type": "http",
      "url": "https://view.sumoffice.com/mcp"
    }
  }
}
claude mcp add --transport http office https://view.sumoffice.com/mcp
[mcp_servers.office]
url = "https://view.sumoffice.com/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "office": {
      "type": "remote",
      "url": "https://view.sumoffice.com/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "office": {
      "type": "http",
      "url": "https://view.sumoffice.com/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=office&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vdmlldy5zdW1vZmZpY2UuY29tL21jcCJ9"
}
{
  "servers": {
    "office": {
      "type": "http",
      "url": "https://view.sumoffice.com/mcp"
    }
  }
}
{
  "mcpServers": {
    "office": {
      "httpUrl": "https://view.sumoffice.com/mcp"
    }
  }
}
extensions:
  "office":
    enabled: true
    name: "office"
    type: streamable_http
    uri: "https://view.sumoffice.com/mcp"
    timeout: 300

Quality 79 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene71 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • fail
    tools.annotationsno tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: sheet_find (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); macro_list (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); macro_read_source (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
  • pass
    tools.token_costabout 2,314 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

21 tools, about 2,314 tokens to load them all · tool set 67757ca954b5 · checked 2026-10-19 21:10 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 95 / 100

provenance85
liveness100
freshness100
hygiene95

+repository +dns-namespace +website +reachable +uptime-100% +updated-28d-ago -unpinned-packages(1)

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://view.sumoffice.com/mcp streamable-httpnoneyes100%426 ms2025-11-252026-10-19
packageregistryversionruntimesecrets
docker.io/hissih/sumoffice-mcp:0.3.1ociunpinneddocker

Tools (21)

document_applyApply a proposal from document_propose_replacement to the document in this session's cabin (not to your original file). Stale proposal (the document moved on) is refused by the engine — propose again. Repeating an applied proposal is a no-op.
document_commentsComments (author, text, anchor, resolved) and tracked changes — up to 50.
document_describeName, pages, paragraphs, words, number of comments and tracked changes, whether track changes is on. For documents; call first.
document_export_pdfLay out the document as it is now in this session's cabin (after applied proposals, or as opened) and return a PDF download link valid for 24 hours, plus the page count. Documents only; for workbooks use document_save_copy.
document_findParagraphs containing the text (case-insensitive), with snippets around the match.
document_openOpen one of the demo files by name: documents footnotes, comments, forms, rtl, wild-horse, workshop, offer, tools; workbooks workbook, functions, macros, queries, gep, vba-web, sqlite, order-desk, onrr, cashflow, pivot, chart, notes, check, xtools. Default is footnotes. For your own file use document_open_file. Opens a separate editor cabin for this session.
document_open_fileOpen YOUR file in a private editor cabin for this session: a .docx/.doc/.odt document or an .xlsx/.xlsm/.xlsb/.xls/.ods workbook, up to 50 MB. Give exactly one of: url (https link the server can fetch), base64 (file bytes; then name with the extension is required). Nothing in the file is executed. The file is kept for 24 hours and then deleted. After opening, use document_* tools for a document or sheet_* / macro_* / query_* / workbook_inspect for a workbook; sheet_propose_edits → sheet_apply and document_propose_replacement → document_apply change the copy in the cabin; document_save_copy returns a download link of the edited file.
document_propose_replacementPropose the full new text of one paragraph (paragraph_index from document_read). Nothing changes yet: the editor core builds the change on a copy and returns before/after plus checks (numbers, dates, links kept). Then call document_apply with the proposal_id. Read the paragraph first.
document_readParagraph text as a window: from = index of the first paragraph (0-based), count = how many (max 40). The answer carries next — where to continue, null at the end. A missing paragraph is a refusal, not an invention.
document_save_copyWrite the document or workbook as it is now in this session's cabin (after applied proposals) to a copy and return a download link valid for 24 hours. Your original file is never touched. A workbook with macros comes back as .xlsm with the VBA project intact; a document keeps its styles, comments and tracked changes.
macro_listList VBA modules and runnable macros (entry points) in this workbook with their route and blockers. Runs nothing.
macro_planPlan a macro run without running it: route, whether the engine can run it natively, blockers, instruction budget.
macro_read_sourceRead the source text of one procedure (module + procedure name from macro_list). Read-only; runs nothing.
query_explainExplain one Power Query query by name: its steps in order, where it loads, its connection. Reads only; refreshes nothing.
query_listList Power Query queries in this workbook: names, step chain, load target, connections. Reads only; refreshes nothing.
sheet_applyApply a proposal from sheet_propose_edits to the workbook in this session's cabin (not to your original file); the engine recalculates. Refused if the workbook revision moved on since the proposal — propose again. Repeating an applied proposal is a no-op.
sheet_describeWorkbook overview: every sheet tab with its used range, the current revision, and the header row of the sheet that is open. Call this first, then pass the tab name you need as "sheet" to sheet_read and sheet_find.
sheet_findFind cells whose value or formula contains the text (case-insensitive) in the used range of a sheet. ALWAYS pass "sheet" with the exact tab name when the workbook has more than one sheet: without it only the sheet that happens to be open is searched.
sheet_propose_editsPropose new contents for up to 20 cells (formulas like =SUM(B2:B9), or numbers/text). Nothing changes in the workbook: the engine previews the edits on the current revision and reports what would change and whether errors appear; the person decides whether to apply. Read the cells first. Do not overwrite input numbers unless the task says so. Then call sheet_apply with the proposal_id.
sheet_readRead a rectangular range like A1:F20 (max 60 rows × 26 columns): values and formulas. Empty cells are omitted. ALWAYS pass "sheet" with the exact tab name when the workbook has more than one sheet — without it you read whichever sheet happens to be open, and the answer will quietly be about the wrong sheet. Call sheet_describe first if you do not know the tab names.
workbook_inspectMap the whole application model of this workbook in one call: sheets; VBA modules, procedures, which can run here and which are blocked and why; event handlers; external objects (CreateObject) and Windows API (Declare) dependencies; project references; Power Query queries; data connections; form controls, ActiveX, embedded objects (preserved). Runs nothing. Call this first for questions like 'how is this workbook built' or 'what does it depend on'.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.sumoffice/office",
  "title": "SumOffice — real Word and Excel for agents",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://view.sumoffice.com/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.3.1",
  "packages": [
    {
      "transport": {
        "type": "stdio"
      },
      "identifier": "docker.io/hissih/sumoffice-mcp:0.3.1",
      "runtimeHint": "docker",
      "registryType": "oci",
      "runtimeArguments": [
        {
          "name": "-v",
          "type": "named",
          "value": "{files_dir}:/work",
          "variables": {
            "files_dir": {
              "isRequired": true,
              "description": "Absolute path to the folder with the files the agent may open"
            }
          },
          "isRequired": true,
          "description": "Folder with your documents, mounted at /work"
        }
      ]
    }
  ],
  "repository": {
    "url": "https://github.com/SumOfficeApp/sumoffice-mcp",
    "source": "github"
  },
  "websiteUrl": "https://sumoffice.com/mcp",
  "description": "Real Word and Excel for agents: open your .docx/.xlsm, read, propose, apply, get it back intact."
}