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.1.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.1-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mif_tools-0.2.1.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.1.tar.gz
Algorithm Hash digest
SHA256 a2ddbfd7410506f106fcbc35405c3454089d43a3c4518fed6950134f5948c6ce
MD5 b97132dc24232fc3f932e4645831bb82
BLAKE2b-256 713e64dd9ed181c5cfdb959d102819fca87cf88b425e7f9ac4e2009fd97c0dac

See more details on using hashes here.

Provenance

The following attestation bundles were made for mif_tools-0.2.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: mif_tools-0.2.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d68703bfdc70b3ba948e0d7d9e00fa394ac881aac338c51cff119e13602964f8
MD5 a5004629edf1a54573a4c157f64b95cb
BLAKE2b-256 25440d393eb234d6c7b3b6b7bd50bf409598c76cb39021ca26e5b99d6e95d028

See more details on using hashes here.

Provenance

The following attestation bundles were made for mif_tools-0.2.1-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