{
  "$schema": "https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json",
  "version": "1.0",
  "protocolVersion": "2025-06-18",
  "serverInfo": {
    "name": "affinity-talent-mcp",
    "title": "Affinity Talent MCP",
    "version": "0.0.0"
  },
  "description": "Remote MCP endpoint for live public role discovery and Affinity Talent site actions.",
  "documentationUrl": "https://affinitytalent.bio/docs/api#model-context-protocol-mcp",
  "transport": {
    "type": "streamable-http",
    "endpoint": "https://affinitytalent.bio/api/mcp"
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    }
  },
  "instructions": "The MCP endpoint is stateless and currently exposes tools for listing public roles, fetching a role brief, and opening the candidate or employer contact flows.",
  "tools": [
    {
      "name": "list_open_roles",
      "title": "List Open Roles",
      "description": "Search or list the public biotech roles currently published on affinitytalent.bio.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "query": {
            "type": "string",
            "description": "Free-text search across title, company, discipline, location, and summary."
          },
          "discipline": {
            "type": "string",
            "description": "Optional exact discipline filter."
          },
          "location": {
            "type": "string",
            "description": "Optional location filter."
          },
          "workMode": {
            "type": "string",
            "description": "Optional work mode filter."
          },
          "level": {
            "type": "string",
            "description": "Optional seniority filter."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "description": "Maximum number of matches to return."
          }
        }
      }
    },
    {
      "name": "get_role_brief",
      "title": "Get Role Brief",
      "description": "Return a concise brief and live URLs for a public Affinity Talent role by its job id.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["jobId"],
        "properties": {
          "jobId": {
            "type": "string",
            "description": "Affinity Talent role identifier."
          }
        }
      }
    },
    {
      "name": "open_candidate_submission",
      "title": "Open Candidate Submission",
      "description": "Return the live candidate submission form URL, optionally prefilled for a public role.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "jobId": {
            "type": "string",
            "description": "Optional public role identifier."
          },
          "source": {
            "type": "string",
            "description": "Optional source label to include in the form URL."
          }
        }
      }
    },
    {
      "name": "open_discovery_call",
      "title": "Open Discovery Call",
      "description": "Return the Calendly booking URL for employer discovery calls.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "source": {
            "type": "string",
            "description": "Optional source label to append to the booking URL."
          }
        }
      }
    }
  ]
}
