Agent setup
Let agents publish HTML, without exposing tokens.
Use the hosted MCP when the agent supports remote tools. Use the GitHub repo or skill when the agent is running in a coding workspace. In every path, keep the upload token in a secret store or environment, not in chat.
Install HTMLer with one agent prompt
Paste this into Codex, Claude Code, or another coding agent once. The agent should install the best available path and remember how to publish HTML artifacts.
Install HTMLer for me.
HTMLer is Faros's private service for publishing self-contained HTML artifacts as Slack-ready links.
Read https://htmler.faros.ai/agent-setup and install HTMLer for this agent.
If you cannot install skills, connect MCP, or run local commands in this chat, tell me to use Codex, Claude Code, or another coding agent that can.
Security rule: do not ask me to paste HTMLER_TOKEN into the conversation. Use 1Password, connector auth, a workspace secret, or an environment variable.
Preferred flow:
1. If MCP is available, connect https://htmler.faros.ai/mcp with bearer auth from HTMLER_TOKEN.
2. When you create a self-contained HTML artifact, call create_curl_upload_url, save the HTML to a local .html file, curl the returned uploadUrl with Content-Type: text/html, and return the JSON response's url field.
3. If MCP is unavailable but skills are supported, install the HTML-only skill from https://htmler.faros.ai/htmler-upload.SKILL.md.
4. Return links, not upload instructions, whenever you have token and file access.
If HTMLer fails, retry one safe check once, then report the HTTP status, response body, and request/log timestamp without printing secrets.
Hosted MCP for agent upload URLs
Use this for Claude, ChatGPT, Codex, or another agent runtime that can connect to a remote MCP server and run shell commands.
Security rule: do not paste the htmler token into the conversation. Configure it as connector auth, a workspace secret, or an environment variable supplied by the agent runtime.
Remote MCP URL: https://htmler.faros.ai/mcp
Use bearer auth from the secret named HTMLER_TOKEN.
Call create_curl_upload_url, save HTML locally, curl the returned URL, and return the response url.
Agent instruction
When you create a self-contained HTML artifact for a Faros teammate, call create_curl_upload_url from the htmler MCP server. Save the generated HTML to a local .html file, curl the returned uploadUrl with Content-Type: text/html, then return the JSON response's url field. Do not send the full HTML through MCP tool arguments unless direct upload is unavailable. Never ask the user to paste HTMLER_TOKEN into the conversation.
Installable skills
Use this for Codex, Claude Code, or another skill-aware agent. The HTML-only skill is the safest default for generated artifacts; the share skill also covers PDFs and arXiv explainers.
# Codex, HTML upload only
mkdir -p ~/.codex/skills/htmler-upload
curl -fsSL https://htmler.faros.ai/htmler-upload.SKILL.md -o ~/.codex/skills/htmler-upload/SKILL.md
# Claude Code, HTML upload only
mkdir -p ~/.claude/skills/htmler-upload
curl -fsSL https://htmler.faros.ai/htmler-upload.SKILL.md -o ~/.claude/skills/htmler-upload/SKILL.md
Broader share skill
curl -fsSL https://htmler.faros.ai/htmler-share.SKILL.md
Coding agents using GitHub
Use this when the agent can work from a repo checkout or wants the fallback upload script.
- Point the agent at
https://github.com/faros-ai/htmler. - Ask it to install the HTML-only skill from
skills/htmler-upload, or use the script directly. - Provide
HTMLER_TOKENthrough the workspace secret manager, shell environment, or 1Password injection.
git clone https://github.com/faros-ai/htmler.git
cd htmler
node skills/htmler-upload/scripts/upload-html.mjs ./artifact.html --format json
1Password-backed local runs
Prefer a wrapper that injects the token only into the process environment. The token should not be committed, printed, or stored in agent instructions.
op run --env-file .env.htmler -- node skills/htmler-upload/scripts/upload-html.mjs ./artifact.html --format markdown
The env file should reference the 1Password item, not contain a literal secret value.
Machine-readable setup
Agents can read the terse setup doc and discovery JSON without scraping this page.
curl -fsSL https://htmler.faros.ai/agent-setup
curl -fsSL https://htmler.faros.ai/.well-known/agent.json
Direct API fallback
Use the API only when MCP and the skill are unavailable. The same token handling rules apply.
curl -X POST https://htmler.faros.ai/api/pages -H "authorization: Bearer $HTMLER_TOKEN" -H "content-type: text/html" --data-binary @artifact.html