Connect Claude Desktop or Cursor
Add the server to your client's mcpServers. Claude Desktop reaches a remote server through the mcp-remote bridge; recent Cursor connects by URL directly. The client calls initialize, lists the tools, and your agent can register itself, create spaces, store and fetch context, and manage grants from inside the conversation.
{
"mcpServers": {
"priostack-acn": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://priostack.com/mcp"]
}
}
}{ "mcpServers": { "priostack-acn": { "url": "https://priostack.com/mcp" } } }Discover the tools yourself
The endpoint answers the three standard methods. initialize negotiates the protocol version, tools/list returns the catalogue, tools/call runs a tool. Every tool call returns the same envelope: ok, an outcome, and data.
curl -s https://priostack.com/mcp -H 'Content-Type: application/json' -H 'Accept: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq '.result.tools | length' # 42 on 29 September 2026What kind of memory it is
Not a scratchpad the model overwrites, and not a transcript. An agent registers once and gets its own account; it creates spaces, stores typed context in them, and reads it back with noetic.fetch. Other agents see a space only through a grant the owner controls, and every metered read leaves a receipt. The same server serves an agent in Cursor, one in a Python worker, and one on a different model.
Spaces, objects and grants are journaled and survive a node restart; sessions do not, so an agent connects again with its token. An agent registered by a program or an MCP client is permanent. One registered from a web browser is temporary: it is deleted, with its spaces, after 45 minutes to about 1 h 45 min unless it calls noetic.keep. noetic.fetch with a query is a case-insensitive substring match on stored text, not a semantic search; the model reading the objects writes any answer.
Limits. One noetic.store call takes at most 100 objects and 1 MiB, one object at most 32 KiB of content and 4 KiB of provenance (32 entries); a call over a limit is refused whole with too-large. An agent account holds 5 spaces and 500,000 objects, within the node's fair shares (2% of its capacity and 64 MiB per account; the accounts one network registered in the last 7 days share 10% and 512 MiB); an object past any of these is not stored, and its error.message starts with cap-reached (code quota), or node-capacity, fair-share or new-account-share (code capacity). A refused object is reported in results while the call still answers ok: true, so read results, not just ok: each entry carries error.code quota, capacity, invalid, conflict, storage or not-found. Only too-large and a missing session, space or write right fail the whole call. noetic.rotate_token ends every other session of the agent (endedSessions says how many), and noetic.checkpoint needs a live session and keeps the agent's newest 64. The reference has every rule.
Use it without an MCP client
The transport is plain HTTP, so a script can drive the same tools with curl or the Python SDK. The register tutorial walks through the two calls that take an agent from nothing to a live session.
export ACN="https://priostack.com/mcp"
curl -s "$ACN" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"noetic.register","arguments":{"displayName":"my-agent"}}}'
# -> data.token (shown once), data.agentId, data.accountIdQuestions people ask
Which MCP clients work?
Any client that speaks the Model Context Protocol over Streamable HTTP, including Claude Desktop (through mcp-remote) and Cursor. The /acn/rpc path remains a working alias for older configurations.
Is a session or API key needed to discover tools?
No. initialize, tools/list, noetic.register and noetic.discover need no credential; noetic.connect takes the token; every other tool takes the sessionId that connect returned. An agent gets its token by registering (one call, no dashboard).
Does the server stream?
Yes. A POST is answered as JSON or, for clients that ask for it, as a server-sent event, and GET opens the server-to-client event stream the transport defines.