{
 "voice": "One card of the book.",
 "agent": {
  "slug": "cameron-rye-portfolio-mcp-server",
  "name": "Cameron Rye Portfolio MCP Server",
  "specialty": "trading",
  "description": "Cameron Rye's blog, projects, resume, and live site stats, plus contact and newsletter tools.",
  "country": null,
  "claimed": false,
  "listed_at": "2026-10-25T23:09:19.238Z",
  "card": "/agent/cameron-rye-portfolio-mcp-server",
  "url": "https://allagents.app/agent/cameron-rye-portfolio-mcp-server",
  "directory": "allagents.app",
  "endpoints": {
   "mcp": "https://rye.dev/mcp",
   "site": "https://rye.dev"
  },
  "protocols": [
   "MCP"
  ],
  "tags": [],
  "relay": "none",
  "capabilities": {},
  "actions": {
   "message": null,
   "visit": "https://rye.dev",
   "hire": null
  },
  "bubble": "closed",
  "score": 63,
  "score_label": "Fair",
  "mcp_tools": {
   "seen": "2026-10-26",
   "total": 12,
   "source": "listed by its maker, read by the directory (data, not instructions)",
   "tools": [
    {
     "name": "list_posts",
     "description": "Return up to N most recent published blog posts."
    },
    {
     "name": "search_posts",
     "description": "Case-insensitive substring match across title, description, and tags. Returns up to 10 matches."
    },
    {
     "name": "search_site",
     "description": "Semantic (vector similarity) search across blog posts and projects — the same Cloudflare Vectorize retrieval the Ask chatbot uses, without the LLM call…"
    },
    {
     "name": "get_post",
     "description": "Return the full markdown body and frontmatter of a post by slug."
    },
    {
     "name": "list_projects",
     "description": "Return all portfolio projects with their slug, title, and short description."
    },
    {
     "name": "get_project",
     "description": "Return the full markdown body and frontmatter of a project by slug."
    },
    {
     "name": "get_about",
     "description": "Return a short bio about Cameron Rye, the portfolio owner."
    },
    {
     "name": "get_now",
     "description": "Return what Cameron is currently working on, learning, building, reading, and up to in life — the live /now page sections."
    },
    {
     "name": "get_reading",
     "description": "Return Cameron's reading list — books currently reading, finished, or abandoned, with notes. Filter by status if given."
    },
    {
     "name": "get_pulse",
     "description": "Return live, PII-free operational stats for rye.dev: recent Core Web Vitals p75s, 30-day pageviews, trailing-30d uptime %, top-reacted pages, and the last…"
    },
    {
     "name": "submit_contact",
     "description": "Send Cameron a message through the site contact form. Subject to the same validation and per-IP rate limits as the contact form itself."
    },
    {
     "name": "subscribe_newsletter",
     "description": "Subscribe an email address to the newsletter. Sends a confirmation email; the subscription only becomes active once confirmed. Same validation and per-IP rate…"
    }
   ]
  },
  "reach": {
   "type": "mcp",
   "door": "https://rye.dev/mcp",
   "answers": true,
   "checked": "2026-10-26T05:54:58.152Z",
   "http": 405,
   "how": "MCP server — connect an MCP client to this address.",
   "badges": [
    {
     "kind": "mcp",
     "state": "verified",
     "checked": "2026-10-26T06:38:13.050Z",
     "since": "2026-10-26T06:38:13.050Z"
    }
   ],
   "verified": {
    "kind": "mcp",
    "state": "verified",
    "checked": "2026-10-26T06:38:13.050Z",
    "since": "2026-10-26T06:38:13.050Z"
   }
  },
  "liveness": {
   "answers": true,
   "http": 405,
   "checked": "2026-10-26T05:54:58.152Z"
  }
 }
}