Skip to main content

ANP Manifest Reference

Applies to SDK 0.16+ · Last updated: 2026-06-12

The agentnode.yaml manifest is the heart of every pack. It declares identity, capabilities, permissions, and compatibility in a single human-readable file.

Identity fields

FieldTypeRequiredDescription
manifest_versionstringYesANP format version. "0.1" or "0.2". Use "0.2" for multi-tool packs with per-tool entrypoints.
package_idstringYesUnique identifier for the package. Must be lowercase, hyphenated. Example: "pdf-reader-pack"
package_typestringYesPackage type. Currently "toolpack" is the primary type.
namestringYesHuman-readable display name. Example: "PDF Reader Pack"
publisherstringYesPublisher namespace from your account. Example: "agentnode-official"
versionstringYesSemantic version. Must follow semver: "1.0.0", "2.1.3"
summarystringYesOne-line description (under 120 characters). Used in search results.
descriptionstringNoLonger description with full details. Supports plain text.

Runtime fields

FieldTypeRequiredDescription
runtimestringYesExecution runtime. Currently "python".
entrypointstringYesPackage-level Python module path. Example: "pdf_reader_pack.tool". In v0.2, individual tools can have their own entrypoints.
install_modestringYesHow the pack is installed. Values: "package" (pip install), "standalone" (script).
hosting_typestringNoWhere the pack is hosted. Values: "agentnode_hosted" (default), "self_hosted", "remote".

Capabilities

The capabilities section declares what your pack can do. Each tool in the tools array maps to a function the pack exposes.

FieldTypeRequiredDescription
capabilities.toolsarrayYesArray of tool declarations.
tools[].namestringYesTool name used in code. Example: "extract_pdf"
tools[].capability_idstringYesStandardized capability ID from the taxonomy. Example: "pdf_extraction"
tools[].entrypointstringv0.2Per-tool entrypoint in module.path:function format. Required for multi-tool v0.2 packs. Example: "csv_analyzer_pack.tool:describe"
tools[].descriptionstringYesWhat this tool does, in plain language.
tools[].input_schemaobjectNoJSON Schema describing the tool's input parameters.
tools[].output_schemaobjectNoJSON Schema describing the tool's return value.

Permissions

Every pack must explicitly declare what system resources it accesses. This is not optional -- it is enforced at publish time and surfaced to users before installation.

FieldValuesDescription
permissions.network.levelnone | restricted | unrestrictedNetwork access. "none" = no outbound calls. "restricted" = specific domains only. "unrestricted" = any network access.
permissions.network.justificationstringWhy this permission level is needed (recommended for restricted/unrestricted).
permissions.filesystem.levelnone | temp | read | writeFile system access. "none" = no FS access. "temp" = temp directory only. "read" = read files. "write" = read and write.
permissions.code_execution.levelnone | sandboxed | fullCode execution. "none" = no code exec. "sandboxed" = restricted sandbox. "full" = unrestricted execution.
permissions.data_access.levelinput_only | output_only | bidirectionalData flow direction. "input_only" = reads input, does not send data out. "bidirectional" = sends and receives.

Compatibility

FieldTypeRequiredDescription
compatibility.frameworksarrayNoAuto-defaults to ["generic"]. ANP packages work across all frameworks automatically.
compatibility.pythonstringNoPython version constraint. Example: ">=3.10"

Tags

An array of lowercase string tags for search and categorization. Example: ["pdf", "extraction", "documents"]. Tags are free-form but should describe the domain and use case.