Skip to content

Quick Start

An ACO is just a Markdown file with structured YAML frontmatter. You can create one right now with a text editor — no dependencies required.


The minimal valid ACO has exactly six required fields. Create a file called my-first-aco.md:

---
id: "550e8400-e29b-41d4-a716-446655440000"
acp_version: "0.2"
object_type: "aco"
source_type: "manual"
created: "2026-04-10T12:00:00Z"
author:
id: "your-user-id"
name: "Your Name"
---
Your knowledge content goes here. This is standard Markdown.
You can use **bold**, _italics_, `code`, headers, lists, and anything else CommonMark supports.

That is a valid ACO. You can open it in Obsidian, any text editor, or process it with any Markdown parser.

FieldWhat it is
idGlobally unique identifier. UUID v7 recommended; UUID v4 accepted.
acp_versionProtocol version. Use "0.2" for the current spec.
object_typeAlways "aco" for a knowledge object.
source_typeHow this was created: manual, link, uploaded_md, converted_pdf, converted_doc, converted_video, selected_text, llm_capture.
createdISO 8601 timestamp with timezone, e.g. "2026-04-10T12:00:00Z".
authorObject with id and name subfields.

Once the required fields are in place, you can add as much or as little enrichment as you need:

---
id: "550e8400-e29b-41d4-a716-446655440000"
acp_version: "0.2"
object_type: "aco"
source_type: "link"
created: "2026-04-10T12:00:00Z"
author:
id: "your-user-id"
name: "Your Name"
# Optional enrichment
title: "My notes on the ACP spec"
language: "en"
tags: ["acp", "knowledge-management", "notes"]
summary: "Personal notes covering the ACP schema and how to implement it."
# Optional access control
visibility: "private"
agent_accessible: false
status: "draft"
---
Content here.

The ACP CLI scaffolds and enriches ACOs from the command line.

Terminal window
npx @acp/cli init ./my-vault

This creates a directory with a .acp/ config folder. ACOs you create in this directory will automatically get the right structure.

Terminal window
npx @acp/cli create --title "My First ACO" --source-type manual

This creates a new .md file pre-populated with a generated UUID, the current timestamp, and all required fields. Open the file to add your content.

For a link-based ACO, pass a URL and the CLI will fetch and extract the content:

Terminal window
npx @acp/cli create --url "https://example.com/article"

Once a file has content, enrich it with AI-generated metadata:

Terminal window
npx @acp/cli enrich ./my-vault/my-first-aco.md

This adds summary, tags, key_entities, and token_counts — all with per-field provenance records showing which model generated each field.

To enrich all ACOs in a vault:

Terminal window
npx @acp/cli enrich ./my-vault/

Check that your ACOs are spec-compliant:

Terminal window
npx @acp/cli validate ./my-vault/my-first-aco.md

The Stacklist MCP server provides zero-setup ACO enrichment. If you have an MCP-compatible client (Claude Desktop, Cursor, or any MCP host), you can enrich content immediately.

Tool: enrich_url
Input: { "url": "https://example.com/article" }

Returns a fully enriched ACO with title, summary, tags, key_entities, token_counts, and complete per-field provenance.

Tool: enrich_content
Input: {
"content": "Your text content here...",
"source_type": "manual",
"title": "My ACO"
}

If you want to capture the output of an AI conversation as an ACO:

Tool: save_llm_output
Input: {
"content": "The LLM response to save...",
"model": "claude-sonnet-4-6",
"title": "AI answer about X"
}

This creates an ACO with source_type: "llm_capture" and a populated source_context object — full provenance for AI-generated content.