SwarmOps
ReferenceMcp toolsrepo_info
View as Markdown

repo_info#

What the store is and holds: its id and name, the changeset main points at, and how many changesets and refs it has.

Metadata
Since
0.1.0
Mutates
no
Identity required
no
Envelope op
repo_info
Cli command
swarmops info
Request type
InfoReq
Annotations
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true}
Max result chars
null
CLI command
swarmops info

Input schema#

arguments is a InfoReq: swarmops schema InfoReq prints the type. A field the type does not know is ignored.

It takes no fields: pass {}.

JSON Schema#

As tools/list gives it: each $ref replaced by its definition, so that it stands alone.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "`info`: describe the store. It has no options yet.",
  "title": "InfoReq",
  "type": "object"
}

Annotations#

It only reads the store.

AnnotationValueMeaning
destructiveHintfalseTrue: a tool that changes the store may overwrite or delete what is there, not only add to it.
idempotentHinttrueTrue: calling it again with the same arguments changes nothing more.
openWorldHintfalseTrue: it reaches beyond a closed set of things. Every tool here stays inside the store.
readOnlyHinttrueTrue: the tool does not change its environment, the store.

Its entry in tools/list carries no _meta.

CLI command#

swarmops info runs the same operation and prints the same envelope.

Examples#

{
  "id": 2,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "repo_info"
  }
}
{
  "id": 2,
  "jsonrpc": "2.0",
  "result": {
    "content": [
      {
        "text": "{\"ok\":true,\"op\":\"repo_info\",\"api\":1,\"result\":{\"repo_id\":\"[repo_id]\",\"name\":\"store\",\"store_version\":1,\"changesets\":0,\"refs\":0},\"meta\":{\"repo\":\"[tmp]/store\",\"elapsed_ms\":\"[elapsed_ms]\",\"resolved\":{},\"auth\":\"trust\"}}",
        "type": "text"
      }
    ],
    "isError": false,
    "structuredContent": {
      "api": 1,
      "meta": {
        "auth": "trust",
        "elapsed_ms": "[elapsed_ms]",
        "repo": "[tmp]/store",
        "resolved": {}
      },
      "ok": true,
      "op": "repo_info",
      "result": {
        "changesets": 0,
        "name": "store",
        "refs": 0,
        "repo_id": "[repo_id]",
        "store_version": 1
      }
    }
  }
}

The server ran as swarmops mcp --repo [tmp]/store --as agent/worker-17, after initialize. Recorded by the MCP tests. A name in square brackets, such as [tmp] or [c1], stands for what differs from run to run: the test's temporary directory, an id, a time, the version.

Details#

It takes no arguments: pass {}. Call it first to check that the server's store is there: a store that is not there fails every call with E_NOT_A_REPO, and the server serves on. The store is opened anew for each call, so the counts include what other processes committed.

Return information#

A tool result: the envelope, whose op is repo_info, as structuredContent and again as the text of its one content block. isError is true exactly when the envelope's ok is false. On success the envelope's result is what swarmops info returns.

Errors#

A failed call is a tool result with isError: true; the envelope's error.code is one of the error codes.

  • E_INVALID_ARG: arguments that do not fit InfoReq, a field named twice among them included, or that break one of the server's own rules.
  • E_NOT_A_REPO: the server's store is not there; the server serves on.
  • E_INTERNAL: the operation panicked, a bug.

Then the errors of the operation, as swarmops info lists them.

See also#

Edit on GitHub

On this page