llms.txt, then go.
The one entry point
mw.research(question, subreddits=[...]) -> DemandReport— demand research.mw.reddit.search / subreddit / comments / rules / inbox / post— Reddit surfaces.mw.discovery.run / filter / generate— discovery loop + building blocks.Metalworks.demo()— offline, zero-key, for a smoke test (needs[arctic]).
MissingKeyError (with a fix string) surfaces only
when a call needs a key. Every error carries error_code, message, fix, and
docs_url — relay the fix verbatim.
MCP tools (the language-agnostic surface)
Runmetalworks mcp serve (stdio). Tools are tiered:
- Tier 1 (zero-key):
compliance_lint,reddit_search_posts,reddit_get_post_comments,reddit_subreddit_info,reddit_subreddit_rules. - Tier 2 (keys):
arctic_*,corpus_stats,research_plan_brief,research_start/research_status/research_result,generate_reply,discovery_run. - Posting (the security boundary):
reddit_post_commentrequires aconfirm_tokenemitted by acompliance_lintpass over that exact text andMETALWORKS_ALLOW_POSTING=1. There is no override.
The async job pattern
Research and discovery take minutes. Do not call a blocking tool and wait — useresearch_start → research_status → research_result. The synchronous Python
mw.research(...) is for scripts, not for tool-call timeouts.
Rules that matter
- Posting is gated and irreversible. A blocked draft is refused before it
reaches Reddit; every attempt is logged to
~/.metalworks/post-log.jsonl. Never try to route around the compliance gate. - Authentic engagement only. No fabricated personas or backstories. The
Persona.backgroundfield must be real. - Provenance is enforced. Quotes are exact-matched; web URLs come from citation metadata. Don’t present model-authored text as a sourced quote.
- Pick models by ref.
Metalworks(model="provider/model"); point at any OpenAI-compatible endpoint withbase_url. See Model configuration.
Where to look
- Metalworks client — the facade surface.
- Building blocks — the swappable protocols + functions.
- Protocols — exact protocol shapes.
llms.txt— the machine-readable index.