{
  "name": "Fluent",
  "description": "Answers questions about the signed-in Fluent user's day, commitments and meeting decisions, from their own Fluent data. Ask in words, or name a skill with a data part {\"skill\": \"get_my_day\", \"arguments\": {...}}. Read-only: it never changes anything.",
  "supportedInterfaces": [
    {
      "url": "https://mcp.becomefluent.io/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://mcp.becomefluent.io/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "0.3"
    }
  ],
  "provider": {
    "organization": "Feral Intelligence LLC",
    "url": "https://becomefluent.io"
  },
  "version": "1.0.0",
  "documentationUrl": "https://becomefluent.io/mcp",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false
  },
  "securitySchemes": {
    "fluent_oauth": {
      "oauth2SecurityScheme": {
        "description": "Sign in with Fluent (OAuth 2.1, PKCE). Clients register at https://mcp.becomefluent.io/register.",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://mcp.becomefluent.io/authorize",
            "tokenUrl": "https://mcp.becomefluent.io/token",
            "refreshUrl": "https://mcp.becomefluent.io/token",
            "scopes": {
              "fluent:read": "Read your Fluent data",
              "offline_access": "Stay connected",
              "openid": "Sign in"
            },
            "pkceRequired": true
          }
        },
        "oauth2MetadataUrl": "https://mcp.becomefluent.io/.well-known/oauth-authorization-server"
      }
    }
  },
  "securityRequirements": [
    {
      "schemes": {
        "fluent_oauth": {
          "list": []
        }
      }
    }
  ],
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain"
  ],
  "skills": [
    {
      "id": "get_my_day",
      "name": "My day",
      "description": "The user's day: their plan, open commitments split into what they owe and what others owe them, and conversations from the last 24 hours. Optional argument: date (YYYY-MM-DD).",
      "tags": [
        "day",
        "plan",
        "commitments"
      ],
      "examples": [
        "What does my day look like?",
        "What's on my agenda today?"
      ]
    },
    {
      "id": "get_recent_commitments",
      "name": "Recent commitments",
      "description": "What the user said they'd do and what others promised them, recorded in the last 7 days unless from/to are given. Optional arguments: person (a name; only commitments involving them), from and to (YYYY-MM-DD).",
      "tags": [
        "commitments",
        "follow-ups",
        "promises"
      ],
      "examples": [
        "What did I commit to this week?",
        "What follow-ups do I owe?"
      ]
    },
    {
      "id": "get_decision_history",
      "name": "Meeting decisions",
      "description": "The decisions the user kept on a topic or with a person, oldest to newest, with each one's date, status and the meeting it was made in. Arguments: topic or personId.",
      "tags": [
        "decisions",
        "meetings"
      ],
      "examples": [
        "What did we decide about pricing?",
        "Decisions on the launch date"
      ]
    },
    {
      "id": "search_conversations",
      "name": "Search conversations",
      "description": "Search the user's conversations by what was said, by keyword and by meaning: meetings, lines, decisions, commitments and open questions that match. Argument: query.",
      "tags": [
        "search",
        "conversations",
        "meetings"
      ],
      "examples": [
        "What did Dana say about net 45?",
        "Pricing objections"
      ]
    }
  ]
}
