ust-mcp 1.0.0-rc.2 → 1.0.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -37,6 +37,7 @@ Or in any MCP client config:
37
37
  | `ust_combine_attestation` | Build an attestation over N constituents (auto Merkle root) |
38
38
  | `ust_resolve` | Resolve name authority → `authoritative` / `self-asserted` |
39
39
  | `ust_anchor_verify` | Verify a time-anchor's Merkle inclusion proof |
40
+ | `ust_verify_stream` | Verify a RANGE (e.g. ust(001)…ust(007) fetched from an archive) as one authority's complete, prev-chained stream → `proven`/`provisional` (retrieval is the product's job, not the protocol's) |
40
41
  | `ust_key_id` | Derive a `key_id` from a public key |
41
42
  | `ust_canon` | Canonicalize a value (the exact bytes UST hashes/signs) |
42
43
 
package/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  // ust-mcp — the agent-facing MCP surface over `ust-protocol` (+ `ustate`). Two surfaces (bd 9oov):
2
- // PROTOCOL MCP = universal (create/verify/combine/resolve/anchor over the stateless base) — built here.
2
+ // PROTOCOL MCP = universal (create/verify/combine/resolve/anchor/verify-stream over the stateless base) — built here.
3
3
  // PRODUCT MCP = noosphere business (pricing, archive depth, receipts) — separate, stubbed below.
4
4
  // Methods are derived FROM the record's fields. This module is TRANSPORT-AGNOSTIC: it exports the tool
5
5
  // registry + `dispatch()`; the stdio/SSE JSON-RPC server (via @modelcontextprotocol/sdk) is a thin shell the
@@ -53,6 +53,12 @@ export const tools = [
53
53
  inputSchema: { type: 'object', required: ['content_hash', 'proof'], properties: { content_hash: { type: 'string' }, proof: { type: 'object' } } },
54
54
  handler: ({ content_hash, proof }) => P.verifyAnchor(content_hash, proof),
55
55
  },
56
+ {
57
+ name: 'ust_verify_stream',
58
+ description: 'VERIFY A RANGE as one authority\'s complete stream — e.g. you fetched ust(001)…ust(007) from an archive: every frame LIGHT-verifies, they are prev-chained with no gaps, all belong to ONE publisher (mixed publishers → E-AUTHORITY), and with a covering checkpoint the interval is provably complete. Returns { complete: "proven" | "provisional" | "none" } or an error (E-PREV broken/forked chain · E-AUTHORITY mixed authority · E-SIG bad frame). Retrieval is NOT the protocol\'s job — pass the records you already have.',
59
+ inputSchema: { type: 'object', required: ['frames'], properties: { frames: { type: 'array' }, genesis: { type: 'object' }, checkpoint: { type: 'object' } } },
60
+ handler: ({ frames, genesis, checkpoint }) => P.verifyStream(frames, { genesis, checkpoint }),
61
+ },
56
62
  {
57
63
  name: 'ust_key_id',
58
64
  description: 'Derive the key_id for a public key: H("ust:keylog", raw_pubkey_bytes) — domain-separated over the base64url-decoded key.',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ust-mcp",
3
- "version": "1.0.0-rc.2",
3
+ "version": "1.0.0-rc.3",
4
4
  "description": "Model Context Protocol (MCP) server for UST — agent-facing verbs over ust-protocol: verify, build/create, combine, resolve name-authority, anchor. An agent needs only this server plus its own key.",
5
5
  "author": "THE LAB (https://thelab.md)",
6
6
  "type": "module",
package/server.mjs CHANGED
@@ -6,7 +6,7 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
6
6
  import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js';
7
7
  import { listTools, dispatch } from './index.mjs';
8
8
 
9
- const server = new Server({ name: 'ust-mcp', version: '1.0.0-rc.1' }, { capabilities: { tools: {} } });
9
+ const server = new Server({ name: 'ust-mcp', version: '1.0.0-rc.3' }, { capabilities: { tools: {} } });
10
10
  server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: listTools() }));
11
11
  server.setRequestHandler(CallToolRequestSchema, async (req) => {
12
12
  const r = dispatch(req.params.name, req.params.arguments || {});