MData 0.1.0

dotnet add package MData --version 0.1.0
                    
NuGet\Install-Package MData -Version 0.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MData" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MData" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="MData" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MData --version 0.1.0
                    
#r "nuget: MData, 0.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package MData@0.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MData&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=MData&version=0.1.0
                    
Install as a Cake Tool

MData (Markdown Data)

MData (short for Markdown Data) is a structured data format that's easy for humans and AI to read.

I developed this format to enable rigorous, testable interoperability for data that is passed between AI and native code.

It renders in any Markdown viewer, minimizes token use, and can be parsed into typed objects by any MData implementation.

Goals:

  • Portability — Match JSON: plain text, language-agnostic, trivially transmissible.
  • Token Efficiency — Reduced syntactical overhead means faster and cheaper AI operations.
  • Human Readability — Documents read like technical documents, not serialized objects.
  • Minimal Syntax — Five constructs, small enough to memorize.
  • Round-trip Idempotence - Serialization is canonical: deserialize then serialize produces identical output.

Philosophy: The schema lives with the code; the document stays clean. Type information, nullability, and collection semantics are expressed in the schema, not in the document syntax. This keeps documents minimal and human-legible, and keeps the format stable across schema evolution.


Format at a Glance

Construct Syntax Meaning
Scalar key: value Property
Array key: followed by - item lines List of scalars
Object scope # Heading Nested object or collection element
Multiline string key: followed by > lines Multi-line string property
Comment ``` fenced block ``` Ignored by parser

Heading level encodes nesting depth. Whether a heading is a single object or one element in a collection is determined entirely by the schema.


Example

MData:

# Config
name: my-app
version: 2

# Servers

## Server
host: localhost
port: 8080

## Server
host: db.internal
port: 5432

C#:

[MData]
public class Config
{
    [Scalar] public string Name { get; set; } = "";
    [Scalar] public int Version { get; set; }
    [Child]  public List<Server> Servers { get; set; } = [];
}

[MData(Collection = true)]
public class Server
{
    [Scalar] public string Host { get; set; } = "";
    [Scalar] public int Port { get; set; }
}

Documentation

Document Contents
docs/spec.md Format specification
docs/schema.md Schema definition, self-describing format reference
docs/architecture.md Design decisions, implementation guidance
docs/json-to-mdata.md JSON → MData conversion reference (AI-oriented)
docs/csharp.md C# implementation reference — install, attributes, serializer API

Several projects share a similar design space with MData. The distinctions below are intended to help you choose the right tool for your use case.

Markform

Markform is a structured Markdown document format designed around a form-filling workflow. Documents define typed, validated fields (via YAML frontmatter and HTML comment-style tags) that can be filled by humans via CLI/web UI or by AI agents via tool calls. It includes JSON Schema export and Vercel AI SDK integration.

MData is a serialization format for structured data exchange. It does not model a workflow, collect input, or validate against a schema at the document level — schema semantics live in host-language code. If you need a form-as-document workflow for agents, Markform is purpose-built for that; if you need a compact, round-trippable wire format for typed objects, MData is the closer fit.

Chartifact

Chartifact (Microsoft) is a document presentation format for interactive data reports, dashboards, and slideshows. Documents embed reactive components (charts, tables, Mermaid diagrams) as fenced JSON blocks inside Markdown. A runtime renders and synchronizes components via shared variables.

MData has no runtime and no rendering semantics. It encodes plain structured data — scalars, arrays, and nested objects — with no visualization layer. If you need a shareable interactive document with charts and reactive state, Chartifact addresses that; if you need a minimal data encoding format for programmatic serialization, MData is the narrower tool.

The MDATA Cognitive Model

The MDATA Cognitive Model (Yan Jia et al., Springer) is an academic knowledge representation framework. MDATA here stands for Multi-dimensional Data Association and inTelligent Analysis. It is a temporal and spatial knowledge graph model that extends traditional knowledge graphs with spatiotemporal characteristics, and is applied to domains such as cybersecurity and open-source intelligence analysis.

Despite the shared acronym, the two projects are unrelated in purpose and origin. MData (Markdown Data) is a developer-facing text serialization format with no connection to knowledge graph theory or the academic MDATA research program.


License

MIT

Authors

Created by Ted Brown, coffee, and Claude. 2026

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0 109 3/25/2026