Skip to content

feat(aifeed): add the AIFeed signed content permissions plugin - #33

Open
denyn1 wants to merge 1 commit into
zai-org:mainfrom
denyn1:add-aifeed-plugin
Open

denyn1 wants to merge 1 commit into
zai-org:mainfrom
denyn1:add-aifeed-plugin

Conversation

@denyn1

@denyn1 denyn1 commented Sep 22, 2026

Copy link
Copy Markdown

What this solves

Agents fetching the web cannot check whether a site's permission rules are authentic, current, or revocable: robots.txt and llms.txt are unsigned text. AIFeed is an open standard (MIT code, CC BY 4.0 specs) where a site publishes /.well-known/ai.json signed with Ed25519, anchors the key in a DNS _aifeed TXT record, and can revoke it; agents verify the chain before fetching.

This plugin gives ZCode that workflow:

  • MCP server (aifeed, stdio) with six tools: verify_manifest, fetch_aifeed, list_assets, verify_asset, select_index, and decide_usage.
  • Skill (aifeed) with verify-first and publish flows, so the agent checks permissions before fetching and never assumes allow.

Testing

  • python scripts/validate.py -> OK: 27 plugin(s) validated
  • python scripts/build_dist.py -> builds plugins/aifeed/1.0.0-draft.1/plugin.zip
  • git diff --check clean
  • Ran the bundled MCP server over stdio from the plugin directory: initialize returns serverInfo aifeed-mcp-server (protocol 2025-06-18) and tools/list returns the six tools. The same engine is covered by the upstream test suite (283 JS + 56 Python tests) at https://github.com/denyn1/aifeed-protocol.
  • No UI changes, so no screenshots; the verification steps above are reproducible.

Version and registration

  • New plugin aifeed, version 1.0.0-draft.1, registered in marketplace.json under category developer-tools; the manifest and the marketplace entry match (checked by validate.py).
  • The draft version mirrors the AIFeed spec line (1.0.0-draft), the same versioning used for the project's npm and PyPI packages.

Dependencies, network, permissions, and side effects

  • Zero runtime dependencies: the stdio server is bundled under engine/ and uses the Node standard library only. Node 20+ (node on PATH) is required; there is no install step at runtime.
  • Network: HTTPS requests to the domain the user asks about (manifest, content, assets, DNS TXT lookups). No telemetry; nothing is sent to the author.
  • Writes: none. The plugin never writes to the project, the home directory, or ZCode data.
  • http:// loopback origins are allowed only when the allow_private user option is set to 1 (local testing).
  • No hooks and no commands; one skill plus one MCP server.

Licensing and provenance

Checklist

  • the plugin name is unique and kebab-case (aifeed)
  • required files and both language READMEs are present (README.md, README_CN.md)
  • the category is correct (developer-tools)
  • no secrets, private data, or machine-specific paths are included
  • validate.py, build_dist.py, and git diff --check pass
  • review feedback will be addressed on this pull request

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant