{
  "$schema": "https://modelcontextprotocol.io/schemas/draft/server-card.json",
  "serverInfo": {
    "name": "JobPlans",
    "version": "1.0.0",
    "title": "JobPlans MCP",
    "description": "Programmatic access to JobPlans documents, measurements, cost categories, comments, and organizations for AI agents. Construction PDF measurement, AI extraction, and takeoff workflows.",
    "publisher": {
      "name": "JobPlans",
      "url": "https://jobplans.ai",
      "contact": "contact@jobplans.ai"
    },
    "icons": [
      {
        "src": "https://jobplans.ai/jobplansai.png",
        "sizes": "512x512",
        "mimeType": "image/png"
      },
      {
        "src": "https://jobplans.ai/logo.svg",
        "mimeType": "image/svg+xml"
      }
    ],
    "documentation": "https://jobplans.ai/docs/mcp",
    "privacyPolicy": "https://jobplans.ai/privacy",
    "termsOfService": "https://jobplans.ai/terms"
  },
  "transport": {
    "type": "streamable-http",
    "url": "https://jobplans.ai/mcp"
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    },
    "resources": false,
    "prompts": false,
    "logging": false
  },
  "authentication": {
    "type": "oauth2",
    "authorizationServer": "https://jobplans.ai/.well-known/oauth-authorization-server",
    "protectedResource": "https://jobplans.ai/.well-known/oauth-protected-resource",
    "authorizationUrl": "https://jobplans.ai/oauth/authorize",
    "tokenUrl": "https://jobplans.ai/oauth/token",
    "registrationUrl": "https://jobplans.ai/oauth/register",
    "grantTypesSupported": [
      "authorization_code",
      "refresh_token"
    ],
    "codeChallengeMethodsSupported": [
      "S256"
    ],
    "scopesSupported": [
      {
        "name": "jobplans:read",
        "description": "View all of your JobPlans data across documents, measurements, proposals, and materials."
      },
      {
        "name": "jobplans:write",
        "description": "Create, update, and delete data across your JobPlans organization."
      },
      {
        "name": "documents:read",
        "description": "List and view documents and their metadata."
      },
      {
        "name": "documents:write",
        "description": "Update or delete documents in your organization."
      },
      {
        "name": "measurements:read",
        "description": "View measurements taken on documents."
      },
      {
        "name": "measurements:write",
        "description": "Create, update, and delete measurements."
      },
      {
        "name": "cost-categories:read",
        "description": "View cost categories on documents and in your organization."
      },
      {
        "name": "cost-categories:write",
        "description": "Create, update, and delete cost categories on documents."
      },
      {
        "name": "comments:read",
        "description": "View comments on documents."
      },
      {
        "name": "comments:write",
        "description": "Create comments on documents and mark them resolved."
      },
      {
        "name": "proposals:read",
        "description": "List and view proposals in your organization."
      },
      {
        "name": "proposals:write",
        "description": "Create, update, and delete proposals."
      },
      {
        "name": "materials:read",
        "description": "View the materials catalog."
      },
      {
        "name": "materials:write",
        "description": "Create, update, and delete materials."
      },
      {
        "name": "share-links:write",
        "description": "Create and revoke share links for documents."
      },
      {
        "name": "extractions:trigger",
        "description": "Run AI extraction on documents. This consumes your organization’s Gemini token allowance."
      },
      {
        "name": "org:read",
        "description": "View your organization name, members, and basic profile."
      }
    ]
  },
  "tools": [
    {
      "name": "whoami",
      "description": "Return the user, organization, and granted OAuth scopes for the current MCP session."
    },
    {
      "name": "documents.list",
      "description": "List documents in the active organization."
    },
    {
      "name": "documents.get",
      "description": "Fetch a single document by id."
    },
    {
      "name": "measurements.list",
      "description": "List measurements on a document."
    },
    {
      "name": "measurements.create",
      "description": "Create a measurement on a document page."
    },
    {
      "name": "cost-categories.list",
      "description": "List cost categories on a document."
    },
    {
      "name": "comments.list",
      "description": "List comments on a document."
    },
    {
      "name": "comments.create",
      "description": "Add a comment to a document."
    },
    {
      "name": "org.context",
      "description": "Read organization context (name, members, profile)."
    }
  ]
}