Skip to main content

MIF (Memory Interchange Format) — vendor-neutral memory portability for AI agents

Project description

mif-tools

Vendor-neutral memory portability for AI agents. Convert between memory formats (mem0, markdown, generic JSON) and the Memory Interchange Format (MIF).

Install

pip install mif-tools

# With schema validation support:
pip install mif-tools[validate]

CLI

# Convert mem0 export to MIF
mif convert memories.json --from mem0 --to shodh -o memories.mif.json

# Convert with auto-detection
mif convert memories.json -o output.mif.json

# Convert MIF to markdown
mif convert memories.mif.json --to markdown -o memories.md

# Validate MIF document
mif validate memories.mif.json

# Inspect any memory file
mif inspect memories.json

# List available formats
mif formats

Python API

from mif import load, dump, convert, MifDocument, Memory

# Load from any format (auto-detects)
doc = load(open("mem0_export.json").read())
print(f"{len(doc.memories)} memories loaded")

# Access memories
for mem in doc.memories:
    print(f"[{mem.memory_type}] {mem.content}")

# Convert between formats
markdown = dump(doc, format="markdown")
mif_json = dump(doc, format="shodh")

# One-liner conversion
result = convert(input_data, from_format="mem0", to_format="shodh")

# Create from scratch
doc = MifDocument(memories=[
    Memory(
        id="123e4567-e89b-12d3-a456-426614174000",
        content="User prefers dark mode",
        created_at="2026-01-15T10:30:00Z",
        memory_type="observation",
        tags=["preferences", "ui"],
    )
])
print(dump(doc))

# Validate
from mif import validate
is_valid, errors = validate(mif_json)

Supported Formats

Format ID Description
MIF v2 (Shodh) shodh Native MIF v2 JSON, lossless round-trip
mem0 mem0 mem0 JSON array ([{"memory": "..."}])
Generic JSON generic JSON array with content field
Markdown markdown YAML frontmatter blocks (Letta/Obsidian style)

MCP Integration

Any MCP memory server can add MIF support:

from mif import load, dump

# In your export_memories tool handler:
def handle_export(user_id: str) -> str:
    memories = my_storage.get_all(user_id)
    return dump(memories)

# In your import_memories tool handler:
def handle_import(data: str) -> dict:
    doc = load(data)  # auto-detects mem0, markdown, generic, MIF
    imported = 0
    for mem in doc.memories:
        my_storage.save(mem.id, mem.content, mem.created_at)
        imported += 1
    return {"memories_imported": imported}

License

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mif_tools-0.2.2.tar.gz (31.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mif_tools-0.2.2-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file mif_tools-0.2.2.tar.gz.

File metadata

  • Download URL: mif_tools-0.2.2.tar.gz
  • Upload date:
  • Size: 31.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mif_tools-0.2.2.tar.gz
Algorithm Hash digest
SHA256 d722cfba997f59e8318bdbdaab4b5ec303c7f3d577e9e1915e7b236db88a5029
MD5 7e46331761b422b254f71db006ff6081
BLAKE2b-256 b0ac76fd76b2f204fcbc24529c4a386d26bf412a19806bbddba8e73543fc0ac1

See more details on using hashes here.

Provenance

The following attestation bundles were made for mif_tools-0.2.2.tar.gz:

Publisher: publish.yml on varun29ankuS/mif-spec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mif_tools-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: mif_tools-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mif_tools-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c133cfed2a875f58d3ac0b359f77c98ce4e4e50fcd7aa49886fabccb9f925469
MD5 08a78ad09eca1640874e35e26da91e12
BLAKE2b-256 456c030697aa20b94859e4aa4a71d13fbac6f0ef517487cdc558b2b4be146338

See more details on using hashes here.

Provenance

The following attestation bundles were made for mif_tools-0.2.2-py3-none-any.whl:

Publisher: publish.yml on varun29ankuS/mif-spec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page