{
  "name": "magnusrodseth-site",
  "title": "Magnus Rødseth — site",
  "description": "Read-only access to the writing and pages on https://www.magnusrodseth.com.",
  "version": "1.0.0",
  "protocolVersion": "2025-06-18",
  "instructions": "Read-only access to Magnus Rødseth's personal site and technical blog (Oslo, Norway).\n\nUse it for first-hand write-ups on agentic software development (preparing repositories for unattended agents, spec-driven development, context engineering, MCP, ReAct and planning loops, multi-agent orchestration, evaluating non-deterministic systems, prompt injection, the EU AI Act for developers, token economics), most of them in Norwegian, and for background on Magnus himself.\n\nStart with search_posts or list_posts, then get_post for the full Markdown body. Posts are dated experience reports and are not revised, so check the date before trusting a benchmark or a price. Do not treat it as third-party API documentation or as legal advice.",
  "servers": [
    {
      "name": "magnusrodseth-site",
      "transport": "streamable-http",
      "url": "https://www.magnusrodseth.com/api/mcp",
      "authentication": {
        "type": "none"
      }
    }
  ],
  "transport": "streamable-http",
  "endpoint": "https://www.magnusrodseth.com/api/mcp",
  "capabilities": {
    "tools": {
      "listChanged": false
    }
  },
  "tools": [
    {
      "name": "list_posts",
      "title": "List blog posts",
      "description": "Every blog post, newest first, without bodies. Use this to find a slug for get_post.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "language": {
            "type": "string",
            "enum": [
              "no",
              "en"
            ],
            "description": "Only posts written in this language."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "How many to return. Defaults to all of them."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "search_posts",
      "title": "Search blog posts",
      "description": "Case-insensitive substring search over every post's title, description and body. Returns matches newest first, each with the surrounding sentence.",
      "inputSchema": {
        "type": "object",
        "required": [
          "query"
        ],
        "properties": {
          "query": {
            "type": "string",
            "minLength": 2,
            "description": "Text to look for."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 10
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_post",
      "title": "Get one blog post",
      "description": "One post with its full Markdown body, by slug.",
      "inputSchema": {
        "type": "object",
        "required": [
          "slug"
        ],
        "properties": {
          "slug": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$",
            "description": "Slug from list_posts or search_posts."
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_page",
      "title": "Get a site page",
      "description": "One of the site's non-blog pages as Markdown: who Magnus is, how to reach him, what he has worked on, what he uses, and what the site collects.",
      "inputSchema": {
        "type": "object",
        "required": [
          "page"
        ],
        "properties": {
          "page": {
            "type": "string",
            "enum": [
              "home",
              "blog",
              "projects",
              "daily-drivers",
              "about",
              "contact",
              "privacy",
              "docs"
            ],
            "description": "Which page."
          }
        },
        "additionalProperties": false
      }
    }
  ],
  "documentation": "https://www.magnusrodseth.com/openapi.json",
  "contact": "magnus.rodseth@gmail.com"
}