Skip to content
Back to Cameron Rye Portfolio

Card snapshot

rye.dev · 2026-07-02 12:35:24 UTC · ff3057f972b5a3e9eaafa7126a07c8dcf9b5a0a4da107f667e8afcf5faff172b

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "name": "Cameron Rye Portfolio",
  "description": "A2A interface for Cameron Rye's portfolio. Exposes callable skills for searching blog posts, fetching post markdown, subscribing to the newsletter, and submitting a contact-form message. Also discloses the site's MCP server at /mcp for tool-based access.",
  "version": "1.0.0",
  "provider": {
    "url": "https://rye.dev",
    "organization": "Cameron Rye"
  },
  "documentationUrl": "https://rye.dev/.well-known/agent-skills/index.json",
  "iconUrl": "https://rye.dev/favicon.svg",
  "supportedInterfaces": [
    {
      "url": "https://rye.dev/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "text/markdown",
    "application/json"
  ],
  "skills": [
    {
      "id": "search-blog",
      "name": "Search blog",
      "description": "Search Cameron Rye's blog posts by keyword.",
      "tags": [
        "blog",
        "search",
        "content",
        "callable"
      ],
      "examples": [
        "DataPart: {skill_id:'search-blog', args:{query:'cloudflare workers'}}",
        "What has Cameron written about Cloudflare Workers?"
      ]
    },
    {
      "id": "get-post",
      "name": "Get blog post",
      "description": "Fetch the full markdown of a blog post by slug.",
      "tags": [
        "blog",
        "content",
        "read",
        "callable"
      ],
      "examples": [
        "DataPart: {skill_id:'get-post', args:{slug:'web-bot-auth'}}"
      ]
    },
    {
      "id": "subscribe-newsletter",
      "name": "Subscribe to newsletter",
      "description": "Subscribe an email to the rye.dev newsletter (double opt-in).",
      "tags": [
        "newsletter",
        "subscribe",
        "write",
        "callable"
      ],
      "examples": [
        "DataPart: {skill_id:'subscribe-newsletter', args:{email:'agent@example.com', source:'a2a'}}"
      ]
    },
    {
      "id": "submit-contact",
      "name": "Submit contact form",
      "description": "Send a contact-form message to Cameron Rye.",
      "tags": [
        "contact",
        "write",
        "callable"
      ],
      "examples": [
        "DataPart: {skill_id:'submit-contact', args:{name:'A2A Client', email:'a@example.com', subject:'Inquiry', message:'\u2026'}}"
      ]
    },
    {
      "id": "mcp",
      "name": "Connect to MCP",
      "description": "Connect to the rye.dev MCP server for tool-based access to portfolio content.",
      "tags": [
        "mcp",
        "discovery"
      ],
      "examples": [
        "Connect to the MCP server at https://rye.dev/mcp"
      ]
    }
  ]
}