{
  "protocolVersion": "0.3.0",
  "name": "Halyard",
  "description": "Your team's persistent memory plus a path to your teammates.",
  "url": "https://mcp.usehalyard.ai",
  "preferredTransport": "streamable-http",
  "version": "1.0.0",
  "documentationUrl": "http://localhost:4321/docs",
  "provider": {
    "organization": "Halyard",
    "url": "http://localhost:4321"
  },
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "authentication": {
    "schemes": [
      "oauth2"
    ]
  },
  "securitySchemes": {
    "oauth2": {
      "type": "oauth2",
      "flows": {
        "authorizationCode": {
          "authorizationUrl": "https://api.usehalyard.ai/oauth/authorize",
          "tokenUrl": "https://api.usehalyard.ai/oauth/token",
          "scopes": {
            "read": "Read access",
            "write": "Write access"
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "read",
        "write"
      ]
    }
  ],
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "apply_triage_classification",
      "name": "apply_triage_classification",
      "description": "Apply an explicit inbox classification without invoking the classifier.",
      "tags": [
        "triage"
      ]
    },
    {
      "id": "apply_triage_suggestion",
      "name": "apply_triage_suggestion",
      "description": "Apply a staged assistant edit suggestion to a triage candidate draft.",
      "tags": [
        "triage"
      ]
    },
    {
      "id": "ask_expert",
      "name": "ask_expert",
      "description": "Send a question to a human teammate via Slack and wait for their response.",
      "tags": [
        "experts"
      ]
    },
    {
      "id": "attach_artifact",
      "name": "attach_artifact",
      "description": "Attach a generated rich artifact — an HTML document or a CSV dataset — to an existing knowledge entry so it renders as rich, read-only content in Halyard.",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "check_response",
      "name": "check_response",
      "description": "Check if a response has been received for a pending conversation.",
      "tags": [
        "experts"
      ]
    },
    {
      "id": "close_conversation",
      "name": "close_conversation",
      "description": "Close a conversation without adding a summary.",
      "tags": [
        "experts"
      ]
    },
    {
      "id": "delete_knowledge",
      "name": "delete_knowledge",
      "description": "Retire a knowledge entry.",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "delete_triage_item",
      "name": "delete_triage_item",
      "description": "Delete an inbox candidate that should not be retained.",
      "tags": [
        "triage"
      ]
    },
    {
      "id": "dismiss_triage",
      "name": "dismiss_triage",
      "description": "Dismiss a knowledge candidate by archiving it.",
      "tags": [
        "triage"
      ]
    },
    {
      "id": "explore_knowledge",
      "name": "explore_knowledge",
      "description": "Explore the relationship graph around a knowledge entry.",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "find_organizations",
      "name": "find_organizations",
      "description": "List organizations the authenticated user has access to, with details on each: member count, knowledge base size, connected integrations, notification channels, and the caller's role.",
      "tags": [
        "identity"
      ]
    },
    {
      "id": "find_person_by_email",
      "name": "find_person_by_email",
      "description": "Look up a person by email address across internal team members AND external contacts in the caller's org.",
      "tags": [
        "people"
      ]
    },
    {
      "id": "get_conversation",
      "name": "get_conversation",
      "description": "Get full conversation history with all messages exchanged between you and the teammate.",
      "tags": [
        "experts"
      ]
    },
    {
      "id": "get_delivery_metrics",
      "name": "get_delivery_metrics",
      "description": "Get the pre-computed PR delivery metrics dashboard for the calling user's org: totals (opened/merged/closed-unmerged), cycle time p50/p90, auto-approval %, per-author and per-repo breakdowns, and a trend with per-person cadence.",
      "tags": [
        "delivery"
      ]
    },
    {
      "id": "get_meeting",
      "name": "get_meeting",
      "description": "Fetch one meeting's processing status, AI summary, linked knowledge entry, and (by default) its raw transcript.",
      "tags": [
        "meetings"
      ]
    },
    {
      "id": "get_skill",
      "name": "get_skill",
      "description": "Read a synced agent skill back from the knowledge base.",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "get_triage_item",
      "name": "get_triage_item",
      "description": "Get one inbox item.",
      "tags": [
        "triage"
      ]
    },
    {
      "id": "get_user_profile",
      "name": "get_user_profile",
      "description": "View a user profile with accumulated expertise insights or time-scoped activity.",
      "tags": [
        "people"
      ]
    },
    {
      "id": "get_work_stream",
      "name": "get_work_stream",
      "description": "Read one work stream in full: the knowledge entry (title, narrative content, tags, visibility, lifecycle), its R&D attributes (rd_classification, income_years, status) and every scope rule as { id, rule, value, weight, valid_from, valid_to } — rule is one of repo | branch_prefix | pr_label | line…",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "list_events",
      "name": "list_events",
      "description": "List raw work events (PRs opened/merged/closed, reviews, etc.) with filters.",
      "tags": [
        "delivery"
      ]
    },
    {
      "id": "list_knowledge",
      "name": "list_knowledge",
      "description": "Recent activity browse — knowledge entries and/or work events by time, author, or type.",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "list_meetings",
      "name": "list_meetings",
      "description": "List the calling user's OWN captured meetings (their personal capture history from the Halyard desktop/mobile recorder), newest first.",
      "tags": [
        "meetings"
      ]
    },
    {
      "id": "list_stream_imprints",
      "name": "list_stream_imprints",
      "description": "List the org's stream imprints, newest first, under your event audience.",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "list_team",
      "name": "list_team",
      "description": "List your team members with their roles, skills, expertise profiles, and current availability.",
      "tags": [
        "people"
      ]
    },
    {
      "id": "list_triage",
      "name": "list_triage",
      "description": "List AI-generated candidate knowledge entries awaiting review before they enter the live knowledge base.",
      "tags": [
        "triage"
      ]
    },
    {
      "id": "list_work_streams",
      "name": "list_work_streams",
      "description": "List the org's work streams.",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "reply_to_expert",
      "name": "reply_to_expert",
      "description": "Send a follow-up message to the teammate in an existing conversation.",
      "tags": [
        "experts"
      ]
    },
    {
      "id": "review_stream_imprint",
      "name": "review_stream_imprint",
      "description": "Record an authorized programmatic decision about which work stream a work event belongs to.",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "search_knowledge",
      "name": "search_knowledge",
      "description": "Search the organizational knowledge base using hybrid search (semantic + keyword).",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "search_people",
      "name": "search_people",
      "description": "Fuzzy search for a person in the caller's org by name, title, or company — spans both internal team members AND external contacts.",
      "tags": [
        "people"
      ]
    },
    {
      "id": "search_product_docs",
      "name": "search_product_docs",
      "description": "Search Halyard's official product documentation (features, setup, connecting agents or sources, MCP server usage, workflows, troubleshooting, changelog).",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "set_knowledge_visibility",
      "name": "set_knowledge_visibility",
      "description": "Change who can see a knowledge entry.",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "share_knowledge",
      "name": "share_knowledge",
      "description": "Share a knowledge entry with a specific teammate, or revoke an existing share.",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "suggest_triage_edits",
      "name": "suggest_triage_edits",
      "description": "Suggest edits to an AI-generated candidate knowledge entry.",
      "tags": [
        "triage"
      ]
    },
    {
      "id": "summarize_conversation",
      "name": "summarize_conversation",
      "description": "IMPORTANT: Call this after receiving a helpful response from a teammate.",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "summarize_work",
      "name": "summarize_work",
      "description": "Save a summary of significant agent work to the knowledge base.",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "sync_skill",
      "name": "sync_skill",
      "description": "Upload an agent skill you wrote or edited in this session to the Halyard knowledge base, so every agent and teammate can find it.",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "update_user_profile",
      "name": "update_user_profile",
      "description": "Update your living profile document and/or your routing controls.",
      "tags": [
        "people"
      ]
    },
    {
      "id": "upsert_company",
      "name": "upsert_company",
      "description": "Create or update a company in the knowledge base by name.",
      "tags": [
        "people"
      ]
    },
    {
      "id": "upsert_knowledge",
      "name": "upsert_knowledge",
      "description": "Create a new knowledge entry, or update an existing one when you pass knowledge_entry_id.",
      "tags": [
        "knowledge"
      ]
    },
    {
      "id": "upsert_person",
      "name": "upsert_person",
      "description": "Create or update a person in the org by email address — spans both internal team members (Users) and external contacts uniformly.",
      "tags": [
        "people"
      ]
    },
    {
      "id": "whoami",
      "name": "whoami",
      "description": "Returns the authenticated user, their organization, connected integrations, and permissions.",
      "tags": [
        "identity"
      ]
    }
  ]
}