{
  "markdown": "# mcp.build\n\n**mcp.build** is a community to build open source [MCPs](https://modelcontextprotocol.io) (Model Context Protocol servers) that adopted the [Hal9](https://github.com/hal9ai/hal9) open source agent structure for its ease of use for deployment and interoperability.\n\n**Website:** [hal9ai.github.io/mcp.build](https://hal9ai.github.io/mcp.build/) (GitHub Pages from [`/docs`](./docs))\n\nThis repo is structured so **coding agents** (Claude Code, Grok Build, Cursor, Codex, …) can contribute with minimal guesswork. Start at [`AGENTS.md`](./AGENTS.md) and [`docs/llms.txt`](./docs/llms.txt).\n\n## Why Hal9 agents?\n\nHal9 agents are intentionally simple: read from stdin with `input()`, write to stdout with `print()`. No framework lock-in. That shape maps cleanly to how MCPs expose tools to models, and makes agents easy to:\n\n- **Develop** — plain Python, any library\n- **Deploy** — `hal9 deploy` or GitHub Actions to [hal9.com](https://hal9.com)\n- **Interoperate** — same agent can run as a chatbot, an API, or an MCP tool\n\n## Agents\n\n| Agent | Description | Path |\n| --- | --- | --- |\n| **send-email** | Send emails with [Resend](https://resend.com) from natural language prompts (Groq tool use) | [`send-email/`](./send-email) |\n\n### send-email\n\nExample prompt:\n\n```text\nsend email to javier@hal9.ai with text hello!\n```\n\nThe agent:\n\n1. Reads the prompt via `input()`\n2. Calls a Groq model with a `send_email` tool definition\n3. Maps the tool call to the Resend API\n4. Prints the result via `print()`\n\n**Environment variables**\n\n| Variable | Required | Description |\n| --- | --- | --- |\n| `GROQ_API_KEY` | Yes | API key from [console.groq.com](https://console.groq.com) |\n| `RESEND_API_KEY` | Yes | API key from [resend.com](https://resend.com) |\n| `RESEND_FROM` | No | Sender address (default: `mcp.build <onboarding@resend.dev>`) |\n| `GROQ_MODEL` | No | Model id (default: `qwen/qwen3.6-27b`) |\n\n**Local run**\n\n```bash\ncd send-email\npip install -r requirements.txt\nexport GROQ_API_KEY=...\nexport RESEND_API_KEY=...\necho \"send email to you@example.com with text hello!\" | python app.py\n```\n\n**Deploy to Hal9**\n\n```bash\nexport HAL9_TOKEN=...   # from https://hal9.com/devs\nhal9 deploy send-email --name send-email --access public \\\n  --title \"Send Email\" \\\n  --description \"Send emails via Resend using natural language prompts\"\n```\n\nOn push to `main`, if files under `send-email/` change, [`.github/workflows/send-email.yaml`](./.github/workflows/send-email.yaml) deploys a new version to Hal9 (same pattern as [hal9ai/hal9](https://github.com/hal9ai/hal9) app deploy workflows). Set the `HAL9_TOKEN` repository secret in GitHub Actions.\n\n**Publish to the MCP Registry**\n\nThe hosted send-email MCP is published as a remote-only server to the [official MCP Registry](https://registry.modelcontextprotocol.io) under `io.github.hal9ai/send-email`. Metadata lives in [`send-email/server.json`](./send-email/server.json). On push to `main` (when `send-email/` changes), [`.github/workflows/publish-send-email.yaml`](./.github/workflows/publish-send-email.yaml) publishes it using GitHub OIDC — **no extra GitHub secrets**. The registry version is `version` in that file. If it is already published, the job skips. Bump `version` there to ship a new registry entry.\n\n## Website (GitHub Pages)\n\nStatic site lives in [`docs/`](./docs) — no build step.\n\n| Path | Role |\n| --- | --- |\n| [`docs/index.html`](./docs/index.html) | Landing page — what mcp.build is + list of available MCPs |\n| [`docs/send-email/index.html`](./docs/send-email/index.html) | Dedicated page per MCP (usage, \"Add to Claude\", etc.) — template for new MCPs |\n| [`docs/css/styles.css`](./docs/css/styles.css) | Styles |\n| [`docs/agents.json`](./docs/agents.json) | Machine-readable agent catalog |\n| [`docs/llms.txt`](./docs/llms.txt) | Short instructions for LLMs / agents |\n| [`AGENTS.md`](./AGENTS.md) | Full rules for coding agents |\n\n**Enable Pages:** repo **Settings → Pages → Build and deployment** → Source: **Deploy from a branch** → Branch: `main` → Folder: `/docs`.\n\n## Contributing an agent (MCP)\n\nThis repo is designed so **coding agents** (Claude Code, Grok Build, Cursor, Codex, …)\nand humans can contribute a new MCP with minimal guesswork. Full checklist:\n[`AGENTS.md`](./AGENTS.md). Use [`send-email/`](./send-email) as the reference\nimplementation and [`.github/workflows/send-email.yaml`](./.github/workflows/send-email.yaml)\nas the deploy pattern.\n\n### Expected layout\n\n```text\n# minimum\nmy-tool/\n  app.py               # input() → work → print()\n  requirements.txt     # optional\n  hal9.yaml            # optional welcome\n\n# also update\n.github/workflows/my-tool.yaml\ndocs/agents.json\ndocs/my-tool/index.html   # dedicated docs page for the MCP\nREADME.md\n```\n\n### Minimal agent\n\n```python\n# my-tool/app.py\nprompt = input()\n# … call APIs, tools, models …\nprint(result)\n```\n\n### Steps\n\n1. Create a new folder at the repo root, e.g. `my-tool/`. Keep the name short, kebab-case.\n2. Add `app.py`. Use `input()` / `print()` (or any stdin/stdout) so the agent stays\n   Hal9- and MCP-friendly. Prefer no `hal9` package unless you need session state.\n3. Add a `requirements.txt` if you need third-party packages.\n4. Optionally add `hal9.yaml` with a `welcome:` message.\n5. Add a GitHub Actions workflow, `.github/workflows/my-tool.yaml`, that deploys when\n   that folder changes:\n\n   ```yaml\n   on:\n     push:\n       branches: [main]\n       paths:\n         - my-tool/**\n         - .github/workflows/my-tool.yaml\n   # job: pip install hal9 → checkout → if my-tool/ changed:\n   hal9 deploy my-tool --name my-tool --access public \\\n     --title \"My Tool\" --description \"…\"\n   ```\n\n   Secret: `HAL9_TOKEN` (agent runtime keys like `GROQ_API_KEY` are configured on the\n   Hal9 side / local env — never committed).\n6. Register the agent in [`docs/agents.json`](./docs/agents.json) (include an `id`,\n   `description`, and `docs_path` pointing at its docs page) and mention it in the\n   table above.\n7. Add a dedicated docs page at `docs/<my-tool>/index.html` so it shows up at\n   `https://hal9ai.github.io/mcp.build/my-tool/` (or `https://mcp.build/my-tool/`).\n   Copy [`docs/send-email/index.html`](./docs/send-email/index.html) as a template —\n   it covers what the MCP does, how agents use it, and how to add it to Claude and\n   other MCP clients.\n8. Do not commit secrets; document required env vars in this README.\n\n## License\n\nContributions are welcome. Individual agents may carry their own licenses; see each folder for details.\n",
  "bytes": 6517,
  "sha": "631d74487e7a12850450cd744536275e8472ed9cdcebf3cc23d4f0a0e6f07be1",
  "repo_slug": "hal9ai/mcp.build",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_hal9ai_send_email_7d23b192/readme"
}