Backend capabilities and data scope
This reference describes the released SDKs, Python neo4j-agent-memory 0.7.0 and TypeScript @neo4j-labs/agent-memory 0.5.0. Check the installed SDK’s API reference before using a method introduced after its release. NAMS is a continuously shipped service; /v1 identifies its REST API, not an SDK release.
Backend and language
Each section below covers one data type. Within it, each term names a backend and language, and its description gives that combination’s behavior for the operation.
Conversations and messages
| Python with Bolt |
Session-oriented writes and conversation readback |
| Python with NAMS |
Create a conversation and pass its returned |
| TypeScript with NAMS REST |
Create a conversation and use its returned ID |
Entities and relationships
- Entity writes/search
-
Python with Bolt add_entityreturns(Entity, DeduplicationResult); client-side configuration. Message ingestion resolves extracted mentions against stored entities by default; see Tune entity resolutionPython with NAMS add_entityreturnsEntity; server-managed extraction/deduplicationTypeScript with NAMS REST longTerm.addEntity/searchEntities; server-managed processing - Client-created relationships
-
Python with Bolt Supported with
add_relationship(source, target, relationship_type, …);attributesare returned on the model but not persisted in 0.7.0Python with NAMS Unsupported; inspect relationships produced by supported service processing
TypeScript with NAMS REST Direct relationship-write methods are unsupported on REST
- Geospatial search and graph adoption
-
Python with Bolt Supported Bolt-specific operations
Python with NAMS Not exposed. The
long_termlocation methods are not defined (AttributeError).get_locationson the client andadopt_existing_graphonclient.schemaraiseNotSupportedErrorTypeScript with NAMS REST Not exposed as equivalent REST operations
Preferences and facts
| Python with Bolt |
Supported; see the long-term API for user-scoped preference reads |
| Python with NAMS |
Unsupported. The preference and fact methods NAMS defines raise |
| TypeScript with NAMS REST |
Unsupported on REST; bridge compatibility methods are not hosted APIs |
Reasoning
| Python with Bolt |
Traces, steps, and tool calls |
| Python with NAMS |
Steps and tool calls are stored on a conversation; the trace lifecycle and outcome are held in the client instance. |
| TypeScript with NAMS REST |
Use |
Extraction
- Extraction configuration and local models
-
Python with Bolt Client-side pipeline, providers and schema settings
Python with NAMS Server-managed;
MemorySettingsembedding,extractionandresolutionvalues are ignored with aUserWarning. Standalone extractors still run in your processTypeScript with NAMS REST Server-managed
- Extraction readiness
-
Python with Bolt The
long_termaccessor’swait_for_extractionis a compatibility no-op; theshort_termaccessor has noget_extraction_statusPython with NAMS Conversation status, and a bounded
wait_for_extractioncall onlong_termTypeScript with NAMS REST Check the selected SDK’s
waitForExtractionavailability
Custom Cypher and platform accessors
- Custom Cypher
-
Python with Bolt Read queries through
client.query.cypher; direct database access permits writesPython with NAMS Read-only service queries; not a workaround for unsupported writes
TypeScript with NAMS REST Read-only service queries where exposed by the SDK
- User registry, buffered writer, consolidation
-
Python with Bolt Python
users,buffered, andconsolidationaccessorsPython with NAMS Not portable Bolt features; the accessors return a placeholder whose method calls raise
NotSupportedErrorTypeScript with NAMS REST Not equivalent REST subclients
Ontologies and agent skills
| Python with Bolt |
Ontologies through |
| Python with NAMS |
Ontologies through the supported accessor; skills use REST/MCP, not invented SDK methods |
| TypeScript with NAMS REST |
Ontology accessor where present in the selected artifact; skills use REST/MCP |
The TypeScript test bridge is a development/conformance transport. Its operation names and successful test doubles do not establish a hosted REST feature. An integration adapter also cannot make an unsupported backend operation available.
For exact parameters, result shapes, defaults and exceptions, see Python API, TypeScript API, and REST API.
Hosted cleanup and retained resources
The selected NAMS contract provides conversation and entity deletion. It has no verified public DELETE route for reasoning steps, tool calls, skill runs or skills. Conversation deletion is not proof that these records or extracted entities were removed. Closing an SDK client deletes no service data.
Skills generation operates over the selected workspace, and a workspace data key does not grant workspace administration. Read-only Cypher cannot delete records. See the hosted conversation lesson and the Skills workflow for the cleanup each lesson performs and the resources it retains.
Identity and retrieval scope
| Identifier or option | Meaning and limit |
|---|---|
NAMS workspace |
The service tenancy boundary. Selected by a workspace-bound key or the deployment’s supported workspace header. Separate from a conversation user identifier. See authentication. |
Conversation/session ID |
Selects a conversation for operations that implement that filter. The application must authorize access to the ID; knowing an ID is not authentication. |
Python |
Accepted on particular writes and user-specific accessors. It is not a universal parameter and does not automatically filter entity, preference or trace searches. |
TypeScript conversation |
Conversation ownership metadata and an explicit list/filter input where supported. Reusing it does not resume a conversation or automatically retrieve all earlier conversations. |
Python |
Requires user identifiers on particular implemented write paths. It is not database access control and does not add filters to every query. |
TypeScript |
Currently unused by the implementation; provides no isolation. |
|
Bolt’s
|
long_term.get_preferences_for(user_identifier) follows a specific user’s preference relationship on Bolt. In contrast, search_preferences is a semantic search and is not automatically limited to that user. get_session_traces selects a session; similarity search over traces has a different scope. Entity knowledge can be shared within the selected database/workspace.
MCP surfaces
The Python self-hosted server’s core profile registers six tools. Its extended profile registers 16 tools with Bolt and 20 with NAMS, including four NAMS-specific tools. Registration does not mean every underlying operation works on every backend: core preference/fact tools can still raise NotSupportedError with NAMS. See self-hosted tool applicability.
The separately hosted NAMS MCP server has its own scope-dependent tool surface. Use tools/list for the authenticated principal and consult the hosted reference; a self-hosted registration count does not describe that service.
Conformance and limits
Bronze, Silver, Gold and Platinum are client TCK conformance labels, not NAMS pricing or access tiers. See service limits for request constraints and backend tradeoffs for choosing a deployment.
Preference associations can share a node: Bolt’s embedding-based duplicate lookup is global within a category. An existing preference can be linked to multiple users; superseding it affects those links. The scoped example disables embedding deduplication and uses explicit revision IDs.
See also
-
MemoryClient API reference — the Python signatures behind these capability differences.
-
TypeScript SDK API reference — the TypeScript surface, REST/NAMS-only.
-
REST API reference — the wire contract both SDKs call.
-
NAMS limits and behavior — request-level quotas and runtime behavior.
-
Bolt and NAMS backends — why the two backends diverge.