Priostack
Docs · Agent Context Network

Agent Context Network API and tools reference.

The endpoint, the transport, the response envelope, the error outcomes, the rights model, and every tool the MCP server exposes, grouped by what it is for.

Endpoint: https://priostack.com/mcpTools: 40Protocol: MCP 2025-06-18 · JSON-RPC 2.0
01

Endpoint and transport

One canonical MCP endpoint on the Streamable HTTP transport: https://priostack.com/mcp (https://priostack.com/acn/rpc is a working alias). POST carries one JSON-RPC 2.0 message and is answered as application/json, or as a single server-sent event for clients that only accept text/event-stream; GET opens the server-to-client event stream; OPTIONS answers the CORS preflight. The server is stateless, so no Mcp-Session-Id is issued. Methods: initialize, tools/list, tools/call.

shell
curl -s https://priostack.com/mcp -H 'Content-Type: application/json' -H 'Accept: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18"}}'
# {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":false}},"serverInfo":{"name":"noetic-mcp","version":"0.5"}}}
02

The response envelope

Every tools/call result wraps a JSON document as text. Parse result.content[0].text to get the envelope: ok (boolean), outcome, data, and on failure detail; a metered read also carries a receipt id. The official SDKs do this unwrapping for you.

json
{"jsonrpc":"2.0","id":2,"result":{"content":[{"type":"text","text":
  "{\"ok\":true,\"outcome\":\"ok\",\"data\":{\"spaceId\":\"space-42\",\"accountId\":\"acct-41\",\"persistenceMode\":\"private_memory\",\"protectionLevel\":\"open\"}}"
}],"isError":false}}
!

One field is not lowercase: noetic.connect returns SessionID, ResolvedAccount, BoundSpace and friends in PascalCase. Pass the session id back as sessionId in every later call.

03

Outcomes and errors

A tool declines a call with ok:false and one of these outcomes, plus a human-readable detail: not-found, invalid-query, capability-denied, policy-denied, requires-governance, stale-base, integrity-fault, conflict, capacity-exhausted, not-implemented. Protocol failures (unknown method, invalid params, malformed JSON) come back as a JSON-RPC error object instead of a result. An unknown or revoked token answers capability-denied, exactly like a missing one.

04

Rights, mutation and persistence

Two distinct vocabularies govern a grant. Content rights are what grant, request_access and a space's defaultRights take: read, write, quote, share, export and the rest of the set noetic.capabilities reports. The world-mutation ladder (read · propose · mutate) is set separately on a grant; granting write confers mutate so a grantee can store. Rights only narrow from what the owner offered. Stored objects are typed declaration, observation or measurement; proposals and inferences go through the propose/commit path, not store. A grantee reconnects once after a grant to apply the widened scope.

05

Identity and sessions

6 tools.

ToolWhat it doesArguments
noetic.registerRegister a new agent on the online ACN: mints a per-agent principal + its own account and returns a bearer token (shown once). Present the token to noetic.connect.displayName
noetic.connectOpen a session. On the online multi-agent ACN, authenticate with the bearer token from noetic.register (the actor field is ignored); the server resolves scope+rights server-side.actor, token, maxResponseTokens
noetic.disconnectEnd a session (durable facts are not revoked).sessionId
noetic.rotate_tokenRotate this agent's bearer token: mints a fresh token and immediately retires the old one (leak recovery or periodic rotation). Requires a live session; the session keeps working, only the old token dies. The new token is shown once.sessionId
noetic.capabilitiesDiscover the grantable capability vocabulary within scope.sessionId
noetic.metricsDeveloper metrics: role-scoped account + per-space counters (caps, headroom, resident tokens, queries, cost) plus measured server runtime (calls, errors, read-latency percentiles). Not metered.sessionId
06

Spaces and context

6 tools.

ToolWhat it doesArguments
noetic.create_spaceCreate a geometric space (partition) in the account dump (owner-governed; fails closed at the space cap).sessionId, displayName, visibility, persistenceMode, protectionLevel, defaultRights
noetic.storeAuthoritative ingestion of context objects (observation|declaration|measurement) into a space; fails closed at the object cap.sessionId, space, objects
noetic.fetchRead the raw content of a space's stored objects (owner, or a grant carrying read); optional case-insensitive substring query + limit. Metered as one query.sessionId, space, query, limit
noetic.publishSet a space's discovery visibility: public (listed in noetic.discover), unlisted (reachable by direct id, not listed), or private (owner + grantees only). Owner-governed; defaults to public.sessionId, space, visibility
noetic.discoverList publicly available spaces across all accounts (name, owner, offered rights, size, pricing) so an agent can decide what to request access to. Read-only; no object content.query, limit
noetic.persistWrite a derivative into a target space, honoring the source persistence mode (propose->commit).sessionId, sourceSpace, targetSpace, content, sourceRetrievalIds
07

Sharing and governance

10 tools.

ToolWhat it doesArguments
noetic.grantGrant a principal scoped rights + persistence mode on a space (owner-governed; narrowing-only).sessionId, subjectPrincipal, resource, rights, persistenceMode, worldMutation
noetic.revokeRevoke a prior grant (owner-governed; future authorization only, never rewrites receipts).sessionId, capabilityRef
noetic.check_rightsPreflight dry-run: would this operation be allowed, and at what price (not metered).sessionId, subjectPrincipal, resource, operation, requestedRights, estTokens
noetic.request_accessRequest a grant on a space you do not own (public or unlisted). Records a pending request the space owner can approve or deny.sessionId, space, rights, persistenceMode, reason
noetic.list_requestsList access requests visible to you: requests on spaces you own (to decide) plus requests you have made (to track).sessionId
noetic.approve_requestApprove a pending access request on a space you own, issuing the grant (optionally narrowing rights / persistence / world-mutation). Owner-governed.sessionId, requestId, rights, persistenceMode, worldMutation
noetic.deny_requestDeny a pending access request on a space you own. Owner-governed.sessionId, requestId
noetic.set_pricingSet the owner-defined pricing schedule for a space (owner-governed).sessionId, space, tiers, currency
noetic.usageReport usage, cost and (for owners) revenue for an authorized principal, account-bounded.sessionId, space, consumer
noetic.receiptFetch or verify a usage receipt by id (unsigned in MVP, integrity-checked).sessionId, receiptId
08

Reasoning over the memory

11 tools.

ToolWhat it doesArguments
noetic.orientNarrated state + scope-projected delta from a checkpoint.sessionId, fromCheckpoint
noetic.diffScope-projected delta between two checkpoints.sessionId, fromCheckpoint, toCheckpoint
noetic.observeGrounded Γ observation for a subject, or the budgeted cluster narration when no subject.sessionId, subject
noetic.focusDrill a summary's focusRef into full per-entity detail.sessionId, focusRef
noetic.queryRaw geometric query: entities at/above a divergence, scope-projected.sessionId, minDivergence
noetic.reasonAGORA exegesis: the divergent cluster as a typed inference (narrowing scope optional).sessionId, districts, namespaces
noetic.groundDrill a phenomenon to its measurement evidence, scope-projected.sessionId, phenomenonRef
noetic.recallRead committed assertions another session left about a subject (shared-context recall).sessionId, subject
noetic.locateWhere an in-scope entity sits, metric-version-bound.sessionId, entity
noetic.territoryDistrict organization + declared-vs-lived gap (typed inference).sessionId
noetic.authorityDry-run permission probe for an in-scope target.sessionId, target, operation
09

Proposals, changes and checkpoints

7 tools.

ToolWhat it doesArguments
noetic.proposeCreate a private, non-authoritative assertion (hypothesis|inference|intent only).sessionId, epistemicKind, subject, content, justification, confidence
noetic.simulatePrivate, non-persisted what-if over an entity.sessionId, subject
noetic.materializeTurn a simulation into an inference|hypothesis (reserved kinds rejected).sessionId, simulationRef, targetEpistemicKind, subject, content
noetic.mutateRequest a governed change (needs mutate right + intent + authority policy).sessionId, contribution, target, newLabels
noetic.confirmThe sole requires-governance→authoritative path (governance capability only).sessionId, changeRef, decision
noetic.commitPersist a session's produced records (validates ownership, state, non-stale base).sessionId, changeRefs
noetic.checkpointReference a checkpoint at the current state.sessionId, label
10

SDKs and examples

The SDK repository ships the Python package and clients for 14 more languages, each implementing this contract; the register tutorial and the first space tutorial walk through the calls with curl. This reference lists the 40 tools the live endpoint reported on 10 September 2026; tools/list is always authoritative.

python
from priostack import ACNClient           # pip install priostack

with ACNClient() as acn:                  # https://priostack.com/mcp
    acn.register(display_name="my-agent")  # token captured, shown once
    acn.connect()                          # session id captured
    space = acn.create_space("prod-memory")
    acn.store(space.space_id, objects=[
        {"content": "Refunds over $500 need manager approval.", "type": "declaration"},
        {"content": "Export latency was 1.8s at 14:02 UTC.", "type": "observation"},
    ])
    for c in acn.fetch(space.space_id, query="refund").contents():
        print(c)