SDKs & toolsPython referenceEnvironments, memory and more

Python SDK: Environments, memory and more

⚠️
Preview — this feature is being built; the design below is the spec.

The supporting resources agents use.

from syntic import Syntic
 
client = Syntic()  # reads SYNTIC_API_KEY
MethodEndpointReturns
environments.createPOST /v1/environmentsEnvironment
environments.rebuildPOST /v1/environments/{environment_id}/rebuildEnvironment
memory_stores.memories.searchPOST /v1/memory_stores/{store_id}/memories/searchlist[Memory]
memory_stores.consolidations.createPOST /v1/memory_stores/{store_id}/consolidationsMemoryConsolidation
vaults.secrets.setPUT /v1/vaults/{vault_id}/secrets/{name}VaultSecret (metadata only)
deployments.runs.listGET /v1/deployments/{deployment_id}/runsSyncPage[DeploymentRun]
skills.versions.createPOST /v1/skills/{skill_id}/versionsSkillVersion
user_profiles.createPOST /v1/user_profilesUserProfile
tunnels.createPOST /v1/tunnelsTunnel

Methods

environments.create

Define a sandbox image. Maps to POST /v1/environments.

result = client.environments.create(
    name="data-analysis",
    base_image="syntic/python:3.12",
    packages={"pip": ["pandas==2.2.3"]},
)

environments.rebuild

Build the image again. Maps to POST /v1/environments/{environment_id}/rebuild.

result = client.environments.rebuild('env_01JC5B2D4F6H8K0M2P4R')

memory_stores.memories.search

Semantic search within a scope. Maps to POST /v1/memory_stores/{store_id}/memories/search.

result = client.memory_stores.memories.search(
    'mem_01JC1A3C5E7G9J1L3N5Q',
    query="account manager",
    scope="customer:4821",
)

memory_stores.consolidations.create

Start a consolidation job. Maps to POST /v1/memory_stores/{store_id}/consolidations.

result = client.memory_stores.consolidations.create(
    'mem_01JC1A3C5E7G9J1L3N5Q',
    strategies=["merge_duplicates"],
    dry_run=True,
)

vaults.secrets.set

Write a secret (write-only). Maps to PUT /v1/vaults/{vault_id}/secrets/{name}.

result = client.vaults.secrets.set(
    'vlt_01JC2B4D6F8H0K2M4P6R',
    'crm-token',
    value="…",
    allowed_destinations=["mcp.example.com"],
)

deployments.runs.list

Recent runs of a deployment. Maps to GET /v1/deployments/{deployment_id}/runs.

for item in client.deployments.runs.list('dep_01JC6C8E0G2J4L6N8Q0S'):
    print(item.id if hasattr(item, 'id') else item)

skills.versions.create

Upload a new skill version from a directory; the SDK zips it. Maps to POST /v1/skills/{skill_id}/versions.

result = client.skills.versions.create('skill_01JBXM4', directory="./skills/invoice-reconciler")

user_profiles.create

Create an end-user profile. Maps to POST /v1/user_profiles.

result = client.user_profiles.create(external_id="cust-4821", locale="en-GB")

tunnels.create

Create an MCP tunnel. Maps to POST /v1/tunnels.

result = client.tunnels.create(
    name="erp-onprem",
    allowed_targets=["http://erp-mcp.internal:8080/mcp"],
)

Conventions

Every method accepts extra_headers, extra_query, extra_body and timeout keyword arguments, and has an async twin on AsyncSyntic. List methods return pages that iterate across all pages automatically.

See the Python SDK overview for installation, errors and retries.

Was this page helpful?